Compare commits

...

244 Commits

Author SHA1 Message Date
Sylvia van Os
93103c8c6d Merge branch 'main' of github.com:CatimaLoyalty/Android 2023-07-17 18:36:28 +02:00
Sylvia van Os
576ec1e6de Release Catima 2.25.1 2023-07-17 18:35:50 +02:00
Sylvia van Os
b602ce5d78 Merge pull request #1426 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-17 18:29:08 +02:00
Cabrito
0ecd38ed1c Translated using Weblate (Portuguese)
Currently translated at 100.0% (126 of 126 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-07-17 18:03:59 +02:00
Cabrito
d48e02463c Translated using Weblate (Portuguese)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2023-07-17 18:03:59 +02:00
Sylvia van Os
b9d9c8d2e3 Use chevron-style up/down icons in groups layout 2023-07-16 21:34:03 +02:00
Sylvia van Os
47f1ea80b6 Merge pull request #1424 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-16 15:14:48 +02:00
Projjal Moitra
b5efa28e85 Translated using Weblate (Bengali (India))
Currently translated at 96.3% (287 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2023-07-16 15:05:41 +02:00
solokot
d456a8920d Translated using Weblate (Russian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-07-16 15:05:41 +02:00
Sylvia van Os
4ef0c96b29 Merge pull request #1423 from CatimaLoyalty/create-pull-request/patch-1689492043
Update contributors
2023-07-16 10:03:08 +02:00
TheLastProject
343c77f9e3 Update contributors 2023-07-16 07:20:43 +00:00
Sylvia van Os
673e64924b Add security policy 2023-07-16 01:25:53 +02:00
Sylvia van Os
5ea6155c39 Merge pull request #1421 from obfusk/patch-5
revert s/Frie/Gratis/ in nb-rNO translation
2023-07-14 20:07:25 +02:00
FC Stegerman
abb1cd29f0 revert s/Frie/Gratis/ in nb-rNO translation 2023-07-14 17:31:56 +00:00
Sylvia van Os
52363cdff4 Merge pull request #1420 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-14 17:52:25 +02:00
Bottan Hermawan
ac4f4e3a9a Translated using Weblate (Indonesian)
Currently translated at 95.2% (120 of 126 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-07-14 16:53:20 +02:00
Bottan Hermawan
555387e20d Translated using Weblate (Indonesian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2023-07-14 16:53:20 +02:00
Sylvia van Os
70ae8ff167 Merge pull request #1419 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-13 19:03:47 +02:00
Balázs Meskó
86512532f1 Translated using Weblate (Hungarian)
Currently translated at 30.9% (39 of 126 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hu/
2023-07-13 14:45:59 +02:00
Eric
ebf6318aa2 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (126 of 126 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-07-13 14:45:59 +02:00
Slávek Banko
fd482a4cba Translated using Weblate (Czech)
Currently translated at 100.0% (126 of 126 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-07-13 14:45:59 +02:00
Erik Spjelkavik
54d91dc8a1 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.3% (296 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-07-13 14:45:59 +02:00
J. Lavoie
9fa7fe388f Translated using Weblate (French)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-07-13 14:45:59 +02:00
Kamborio
1415d8da3e Translated using Weblate (Spanish)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2023-07-13 14:45:59 +02:00
J. Lavoie
0ad5de18e1 Translated using Weblate (German)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-07-13 14:45:59 +02:00
Sylvia van Os
9659a2a2cd Merge pull request #1418 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-12 17:12:10 +02:00
Giovanni Donisi
1dd894bd27 Translated using Weblate (Italian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-07-12 16:52:59 +02:00
Sylvia van Os
0d9151294e Merge pull request #1416 from CatimaLoyalty/create-pull-request/patch-1689096450
Update Fastlane changelogs
2023-07-11 19:31:39 +02:00
Sylvia van Os
09dda99afc Merge pull request #1415 from obfusk/fix-shortcuts
ShortcutHelper: trim after skipping missing cards
2023-07-11 19:31:18 +02:00
TheLastProject
a4fb91b9aa Update Fastlane changelogs 2023-07-11 17:27:30 +00:00
Sylvia van Os
036b821b28 Update CHANGELOG 2023-07-11 19:27:12 +02:00
Sylvia van Os
479a35657f Merge pull request #1414 from obfusk/fix-shortcuts
ShortcutHelper: skip outdated cards that no longer exist
2023-07-11 19:19:14 +02:00
FC Stegerman
eca9d1c74c ShortcutHelper: trim after skipping missing cards 2023-07-11 19:18:41 +02:00
FC Stegerman
95055f1ce6 ShortcutHelper: skip outdated cards that no longer exist 2023-07-11 18:14:34 +02:00
Sylvia van Os
f4a5ae74d6 Release Catima 2.25.0 2023-07-09 18:31:06 +02:00
Sylvia van Os
16952186c7 Merge pull request #1411 from joserebelo/permissions-conflict-fix
Fix content provider permissions conflict
2023-07-09 15:55:02 +02:00
José Rebelo
7d12279b0d Fix content provider permissions conflict 2023-07-09 14:03:34 +01:00
Sylvia van Os
15a49344a3 Merge pull request #1409 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-09 13:35:10 +02:00
Eric
ff15ce0615 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-07-09 13:13:46 +02:00
Slávek Banko
57144c4cd1 Translated using Weblate (Czech)
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-07-09 13:13:46 +02:00
Allan Nordhøy
50387f55d4 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.9% (295 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-07-09 13:13:46 +02:00
Sylvia van Os
0fa07d3d0b Merge pull request #1408 from CatimaLoyalty/create-pull-request/patch-1688886665
Update contributors
2023-07-09 09:34:07 +02:00
TheLastProject
05516f88fc Update contributors 2023-07-09 07:11:04 +00:00
Sylvia van Os
841a5e3ddb Merge pull request #1407 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-08 18:22:17 +02:00
Kis Dominik
2889b45c51 Translated using Weblate (Hungarian)
Currently translated at 31.2% (39 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hu/
2023-07-08 17:53:57 +02:00
Kis Dominik
9ebb53b224 Translated using Weblate (Hungarian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2023-07-08 17:53:56 +02:00
109247019824
14b8b3bd7a Translated using Weblate (Bulgarian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-07-08 17:53:56 +02:00
Sylvia van Os
3e4c3e9852 Merge pull request #1406 from CatimaLoyalty/create-pull-request/patch-1688747814
Update Fastlane changelogs
2023-07-07 18:41:25 +02:00
TheLastProject
fa417cdfe5 Update Fastlane changelogs 2023-07-07 16:36:53 +00:00
Sylvia van Os
a9863d1921 Update CHANGELOG 2023-07-07 18:36:36 +02:00
Sylvia van Os
f2b7a63a02 Merge pull request #1404 from joserebelo/import-trailing-slash
Fix parse of import URI with trailing slash
2023-07-07 18:35:25 +02:00
Sylvia van Os
8e0a40ee3f Merge pull request #1405 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-07 17:35:54 +02:00
enescan201
21064803eb Translated using Weblate (Turkish)
Currently translated at 61.6% (77 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2023-07-07 12:53:18 +02:00
enescan201
031b751a9d Translated using Weblate (Turkish)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-07-07 12:53:18 +02:00
109247019824
bb9b640aa5 Translated using Weblate (Bulgarian)
Currently translated at 96.6% (288 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-07-07 12:53:18 +02:00
Eric
1681d077b6 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-07-07 12:53:18 +02:00
yangyangdaji
3500444e0c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-07-07 12:53:18 +02:00
Slávek Banko
e05ebbe607 Translated using Weblate (Czech)
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-07-07 12:53:18 +02:00
solokot
b3bb20c795 Translated using Weblate (Russian)
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-07-07 12:53:18 +02:00
solokot
b0315f279a Translated using Weblate (Russian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-07-07 12:53:18 +02:00
Heimen Stoffels
9e788cb604 Translated using Weblate (Dutch)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-07-07 12:53:17 +02:00
Slávek Banko
090f3dc80b Translated using Weblate (Czech)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-07-07 12:53:17 +02:00
Sylvia van Os
e4f2f8f46b Remove unused imports 2023-07-05 21:57:20 +02:00
Eric
e5ecd59569 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-07-05 17:18:24 +02:00
tjw123hh
441ae9587e Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-07-05 17:18:23 +02:00
Slávek Banko
0c1e16592d Translated using Weblate (Czech)
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-07-05 17:18:00 +02:00
solokot
02659f840e Translated using Weblate (Russian)
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-07-05 17:17:59 +02:00
Heimen Stoffels
eca5ec10d3 Translated using Weblate (Dutch)
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-07-05 17:17:43 +02:00
J. Lavoie
dbc8df018d Translated using Weblate (Italian)
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-07-05 17:17:25 +02:00
J. Lavoie
874b887da1 Translated using Weblate (French)
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-07-05 17:17:08 +02:00
J. Lavoie
5367324219 Translated using Weblate (German)
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-07-05 17:16:41 +02:00
Slávek Banko
6df58e0574 Translated using Weblate (Czech)
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-07-05 17:16:18 +02:00
José Rebelo
c8b6328cc6 Fix parse of import URI with trailing slash 2023-07-05 13:05:47 +01:00
Sylvia van Os
90616214f0 Merge pull request #1403 from CatimaLoyalty/create-pull-request/patch-1688507089
Update Fastlane changelogs
2023-07-04 23:44:59 +02:00
TheLastProject
e3bce7eb50 Update Fastlane changelogs 2023-07-04 21:44:49 +00:00
Sylvia van Os
b2d1660cf8 Update CHANGELOG 2023-07-04 23:44:33 +02:00
Sylvia van Os
3de24bb6f0 Merge pull request #1402 from CatimaLoyalty/feature/improveSettingsScreen
Reorganize settings screen
2023-07-04 23:43:33 +02:00
Sylvia van Os
b4e403d214 Reorganize settings screen 2023-07-04 23:30:46 +02:00
Sylvia van Os
b66351ab58 Fix needs info autoclose 2023-07-04 21:01:36 +02:00
Sylvia van Os
c9d775f426 Merge pull request #1401 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-04 20:53:24 +02:00
notlin4
6d4af3d86b Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-07-04 08:52:51 +02:00
Sylvia van Os
37803bd906 Merge pull request #1400 from CatimaLoyalty/create-pull-request/patch-1688410909
Update Fastlane changelogs
2023-07-03 21:08:22 +02:00
TheLastProject
f3fcea7ab1 Update Fastlane changelogs 2023-07-03 19:01:49 +00:00
Sylvia van Os
9a67ea039c Update CHANGELOG 2023-07-03 21:01:33 +02:00
José Rebelo
bf94d208bd Introduce read-only ContentProvider for cards (#1121) 2023-07-03 20:59:39 +02:00
Sylvia van Os
28c0b488e6 Merge pull request #1399 from CatimaLoyalty/create-pull-request/patch-1688280270
Update contributors
2023-07-02 13:02:55 +02:00
TheLastProject
dc926bbfe7 Update contributors 2023-07-02 06:44:30 +00:00
Sylvia van Os
00d5fa4c2d Merge pull request #1398 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-02 00:06:18 +02:00
Giacomo Alessandroni
9aca91fb86 Translated using Weblate (Italian)
Currently translated at 77.6% (97 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2023-07-01 23:53:28 +02:00
Sylvia van Os
bdab8624b5 Merge pull request #1390 from obfusk/timeout
CI: on retry, stop gradle daemon and timeout
2023-07-01 15:05:03 +02:00
Sylvia van Os
9bdfe64c79 Merge pull request #1397 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-30 11:54:05 +02:00
Tomislav Kraljević
f5f7e40219 Translated using Weblate (Croatian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2023-06-30 10:53:48 +02:00
Sylvia van Os
2f51e7db68 Merge pull request #1396 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-28 13:07:22 +02:00
Eric
2cb9846f42 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-06-28 12:52:55 +02:00
Sylvia van Os
1dbe46b97e Merge pull request #1395 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-26 23:17:40 +02:00
Projjal Moitra
7e5611b062 Translated using Weblate (Bengali (India))
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2023-06-26 20:53:09 +02:00
Sylvia van Os
d3a7acd9ab Merge pull request #1393 from CatimaLoyalty/create-pull-request/patch-1687677398
Update contributors
2023-06-25 09:38:20 +02:00
TheLastProject
c023a9787d Update contributors 2023-06-25 07:16:38 +00:00
Sylvia van Os
6de0ed6956 Merge pull request #1391 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-24 18:57:03 +02:00
ayuyydev
aa5f0a7bf8 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-06-24 15:53:29 +02:00
Slávek Banko
6dd5bd957c Translated using Weblate (Czech)
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-06-24 15:53:28 +02:00
Michael Moroni
c69df5edfd Translated using Weblate (Italian)
Currently translated at 62.4% (78 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2023-06-24 15:53:28 +02:00
FC Stegerman
758d034c31 CI: on retry, stop gradle daemon and timeout 2023-06-24 00:29:51 +02:00
Sylvia van Os
7bcf82a619 Merge pull request #1386 from obfusk/data-matrix-not-square
CatimaBarcode: DATA_MATRIX is not always square
2023-06-23 23:16:02 +02:00
FC Stegerman
fd755185b9 BarcodeImageWriterTask: treat DATA_MATRIX as 1D for max width 2023-06-23 22:23:12 +02:00
FC Stegerman
0ac57be5f1 CatimaBarcode: DATA_MATRIX is not always square 2023-06-23 22:21:42 +02:00
Sylvia van Os
bb929a48ea Merge pull request #1388 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-23 17:48:12 +02:00
Hosam Elzubair
218850be33 Translated using Weblate (Arabic)
Currently translated at 3.2% (4 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ar/
2023-06-23 14:58:05 +02:00
notlin4
ec07cceced Translated using Weblate (Chinese (Traditional))
Currently translated at 95.4% (274 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-06-23 14:58:05 +02:00
yangyangdaji
71ac1c5dad Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (124 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-06-23 14:58:05 +02:00
yangyangdaji
b16ecfbb2c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-06-23 14:58:05 +02:00
남현정
c64bfbabc0 Translated using Weblate (Korean)
Currently translated at 97.5% (121 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ko/
2023-06-23 14:58:05 +02:00
남현정
fc8073f717 Translated using Weblate (Korean)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2023-06-23 14:58:05 +02:00
Sylvia van Os
7f56617a3c Merge pull request #1385 from CatimaLoyalty/create-pull-request/patch-1687468237
Update Fastlane changelogs
2023-06-22 23:10:53 +02:00
TheLastProject
f5dc2930b5 Update Fastlane changelogs 2023-06-22 21:10:37 +00:00
Sylvia van Os
4bdc0fef70 Update CHANGELOG 2023-06-22 23:10:21 +02:00
Sylvia van Os
2f3c96b97c Merge pull request #1359 from obfusk/barcode-rendering
Improve barcode rendering (square codes & padding)
2023-06-22 23:09:23 +02:00
FC Stegerman
6ff11e22e1 Improve barcode rendering (square codes & padding) 2023-06-22 21:41:33 +02:00
Sylvia van Os
0b188f2ba7 Merge pull request #1371 from obfusk/currency-symbols
LoyaltyCardEditActivity: work around Currency.getSymbol() bug
2023-06-22 19:58:17 +02:00
Sylvia van Os
827d5ba3f9 Merge pull request #1384 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-22 07:06:53 +02:00
IllusiveMan196
05fea6e208 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (124 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-06-22 02:53:45 +02:00
Sylvia van Os
6064d29cb0 Merge pull request #1383 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-20 20:54:46 +02:00
Oğuz Ersen
0a92daa77a Translated using Weblate (Turkish)
Currently translated at 99.6% (286 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-06-20 19:49:45 +02:00
Slávek Banko
bb065aead4 Translated using Weblate (Czech)
Currently translated at 100.0% (124 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-06-20 19:49:45 +02:00
Michael Moroni
56467c2680 Translated using Weblate (Italian)
Currently translated at 59.6% (74 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2023-06-20 19:49:45 +02:00
solokot
1941db1e52 Translated using Weblate (Russian)
Currently translated at 100.0% (124 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-06-20 19:49:45 +02:00
Allan Nordhøy
c595981996 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.9% (284 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-06-20 19:49:45 +02:00
Michael Moroni
0145a820de Translated using Weblate (Italian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-06-20 19:49:45 +02:00
Sylvia van Os
224ab7f2e7 Release Catima v2.24.2 2023-06-18 18:15:55 +02:00
Sylvia van Os
1b47a62c70 Merge pull request #1380 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-18 16:48:15 +02:00
Sylvia van Os
f241bad3e4 Fix broken translation 2023-06-18 16:42:40 +02:00
Viktor Broov
c8657870af Translated using Weblate (Esperanto)
Currently translated at 37.6% (108 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2023-06-18 16:38:07 +02:00
Sylvia van Os
0ed7a0a6e1 Merge pull request #1378 from CatimaLoyalty/create-pull-request/patch-1687070038
Update contributors
2023-06-18 10:25:47 +02:00
TheLastProject
325330c542 Update contributors 2023-06-18 06:33:57 +00:00
Sylvia van Os
2506f60348 Merge pull request #1377 from CatimaLoyalty/create-pull-request/patch-1686995327
Update Fastlane changelogs
2023-06-17 11:51:42 +02:00
TheLastProject
5bf6f52425 Update Fastlane changelogs 2023-06-17 09:48:47 +00:00
Sylvia van Os
fb1728e5de Update CHANGELOG 2023-06-17 11:48:32 +02:00
Sylvia van Os
d321f733c1 Merge pull request #1376 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-16 21:00:30 +02:00
SC
8ff46f8754 Translated using Weblate (Portuguese)
Currently translated at 95.9% (118 of 123 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-06-16 20:51:09 +02:00
SC
a061978c93 Translated using Weblate (Portuguese)
Currently translated at 97.9% (281 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2023-06-16 20:51:09 +02:00
solokot
f3bfc9b278 Translated using Weblate (Russian)
Currently translated at 100.0% (123 of 123 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-06-16 20:51:09 +02:00
gallegonovato
43ebe5e029 Translated using Weblate (Spanish)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2023-06-16 20:51:09 +02:00
Sylvia van Os
2357f4d430 Merge pull request #1375 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-15 23:35:41 +02:00
Pierre NIKOLOV
7869feb3a1 Translated using Weblate (French)
Currently translated at 98.3% (121 of 123 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-06-14 05:54:10 +02:00
Sylvia van Os
53ce856c33 Merge pull request #1372 from obfusk/rtl-buttons
LoyaltyCardViewActivity: RTL fixes for buttons
2023-06-13 23:53:04 +02:00
Sylvia van Os
aa321a71ad Merge pull request #1370 from obfusk/sort-rtl
sorting_option.xml: RTL fix
2023-06-13 19:35:16 +02:00
Sylvia van Os
f721237fbc Merge pull request #1373 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-13 19:29:43 +02:00
FC Stegerman
194a7ae365 improve button bar RTL handling using linear layouts 2023-06-12 15:26:21 +02:00
Slávek Banko
1aa1d8bcc1 Translated using Weblate (Czech)
Currently translated at 100.0% (123 of 123 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-06-12 10:54:13 +02:00
FC Stegerman
a8355f609b LoyaltyCardViewActivity: RTL fixes for buttons 2023-06-11 23:09:47 +02:00
FC Stegerman
7c766d0832 LoyaltyCardEditActivity: work around Currency.getSymbol() bug 2023-06-11 17:30:19 +02:00
FC Stegerman
3abe99470e sorting_option.xml: RTL fix 2023-06-11 15:34:42 +02:00
Sylvia van Os
6937342226 Release Catima 2.24.1 2023-06-11 10:57:10 +02:00
Sylvia van Os
e229aa9565 Merge pull request #1368 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-11 10:52:29 +02:00
Sabri Ünal
5fd629bdbc Translated using Weblate (Turkish)
Currently translated at 98.2% (282 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-06-11 10:44:09 +02:00
109247019824
4c261e1e04 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-06-11 10:44:09 +02:00
Tymofii Lytvynenko
c8be038b81 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2023-06-11 10:44:08 +02:00
Kacper Małecki
268b4cf827 Translated using Weblate (Polish)
Currently translated at 98.9% (284 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-06-11 10:44:08 +02:00
Daniele Tricoli
ada8fd9bd4 Translated using Weblate (Italian)
Currently translated at 98.6% (283 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-06-11 10:44:07 +02:00
Sylvia van Os
285c3d6a38 Merge pull request #1367 from CatimaLoyalty/create-pull-request/patch-1686465528
Update contributors
2023-06-11 09:32:15 +02:00
TheLastProject
07efe99630 Update contributors 2023-06-11 06:38:48 +00:00
Sylvia van Os
a7d3a1c30d Merge pull request #1365 from CatimaLoyalty/create-pull-request/patch-1686414904
Update Fastlane changelogs
2023-06-10 18:38:26 +02:00
Sylvia van Os
fcc995397f Merge pull request #1364 from obfusk/about-rtl
about_activity: make _sub layout consistent (fixes RTL)
2023-06-10 18:38:11 +02:00
TheLastProject
cef0d037f7 Update Fastlane changelogs 2023-06-10 16:35:03 +00:00
Sylvia van Os
6e390717da Make header colour code more consistent (#1363)
- Ensure a header colour is picked for the main screen
- Simplify all different header colour code pickers into a single code
  path
2023-06-10 18:34:49 +02:00
FC Stegerman
f785586c71 about_activity: make _sub layout consistent (fixes RTL) 2023-06-10 16:44:05 +02:00
Sylvia van Os
e66c5e36fb Release Catima 2.24.0 2023-06-10 10:44:42 +02:00
Sylvia van Os
fd0ca37a6a Merge branch 'main' of github.com:CatimaLoyalty/Android 2023-06-08 20:26:39 +02:00
Sylvia van Os
e926a397a7 Add missing dates to CHANGELOG 2023-06-08 20:26:31 +02:00
Sylvia van Os
4f9a6b307f Merge pull request #1358 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-08 19:59:39 +02:00
Clxff H3r4ld0
df60f6adc2 Translated using Weblate (Indonesian)
Currently translated at 93.4% (114 of 122 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-06-08 16:49:14 +02:00
Clxff H3r4ld0
d6287a3cf1 Translated using Weblate (Indonesian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2023-06-08 16:49:14 +02:00
Sylvia van Os
7f81d727f0 Merge pull request #1357 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-07 18:37:15 +02:00
Sylvia van Os
03239f0cab Fix dark mode rendering glitch (#1355) 2023-06-07 18:35:30 +02:00
Sylvia van Os
4b6497cba2 Merge pull request #1356 from obfusk/gha-ubuntu-openjdk
CI: use OpenJDK 17 from Ubuntu
2023-06-07 18:31:29 +02:00
109247019824
99008291fb Translated using Weblate (Bulgarian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-06-07 15:49:23 +02:00
solokot
079049722c Translated using Weblate (Russian)
Currently translated at 100.0% (122 of 122 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-06-07 15:49:23 +02:00
FineFindus
73200e1ac3 Translated using Weblate (German)
Currently translated at 100.0% (122 of 122 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2023-06-07 15:49:23 +02:00
frablock
39b816ddb1 Translated using Weblate (French)
Currently translated at 99.1% (121 of 122 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-06-07 15:49:23 +02:00
Hubert Maciejewicz
be43c1633d Translated using Weblate (Polish)
Currently translated at 98.6% (283 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-06-07 15:49:23 +02:00
J. Lavoie
f6c9613731 Translated using Weblate (French)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-06-07 15:49:23 +02:00
FineFindus
99de8cffd8 Translated using Weblate (German)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-06-07 15:49:23 +02:00
FC Stegerman
a867265c66 CI: use OpenJDK 17 from Ubuntu 2023-06-07 13:19:40 +02:00
Sylvia van Os
f43df37c80 Merge pull request #1353 from obfusk/patch-4
CI: add 5m timeout (before retry) to unit test that gets stuck
2023-06-06 23:31:39 +02:00
FC Stegerman
cb70b1229f CI: add 5m timeout (before retry) to unit test that gets stuck 2023-06-05 18:58:58 +00:00
Ziad OUALHADJ
b0b54a1065 Fixed the sorting option to match the other filters 2023-06-05 20:22:07 +02:00
Sylvia van Os
4ccfa7fb84 Merge pull request #1352 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-05 19:35:12 +02:00
Sylvia van Os
9932b10652 Fix broken translation 2023-06-05 19:15:18 +02:00
Mai Tnt
60fe6a13ff Translated using Weblate (Croatian)
Currently translated at 97.9% (281 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2023-06-05 12:22:44 +02:00
Slávek Banko
0bf30f08a1 Translated using Weblate (Czech)
Currently translated at 100.0% (122 of 122 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-06-05 12:22:43 +02:00
solokot
112fca041b Translated using Weblate (Russian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-06-05 12:22:38 +02:00
Heimen Stoffels
59af5cb07b Translated using Weblate (Dutch)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-06-05 12:22:38 +02:00
Slávek Banko
9182837ae8 Translated using Weblate (Czech)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-06-05 12:22:37 +02:00
Mr. Adil
3f3d85c8b6 Translated using Weblate (Bengali)
Currently translated at 31.7% (89 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn/
2023-06-05 09:53:14 +02:00
Jason Li
29c068df47 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (121 of 121 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-06-05 09:53:13 +02:00
Jason Li
03a480f3b9 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-06-05 09:53:13 +02:00
Slávek Banko
0feb0fcd16 Translated using Weblate (Czech)
Currently translated at 100.0% (121 of 121 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-06-05 09:53:13 +02:00
J. Lavoie
7f1a221fec Translated using Weblate (Italian)
Currently translated at 99.6% (279 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-06-05 09:53:13 +02:00
J. Lavoie
7b52338669 Translated using Weblate (French)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-06-05 09:53:13 +02:00
J. Lavoie
0a2925eafa Translated using Weblate (German)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-06-05 09:53:13 +02:00
Sylvia van Os
92f37376a6 Merge pull request #1351 from obfusk/patch-3
README: explicitly say "OpenJDK 17", not just "Java 17"
2023-06-04 22:00:20 +02:00
FC Stegerman
08fbc30a29 README: explicitly say "OpenJDK 17", not just "Java 17" 2023-06-04 19:07:43 +00:00
Sylvia van Os
91dbcf339f Catima uses Java 17 to build 2023-06-04 20:59:26 +02:00
Sylvia van Os
24fe6886c9 Lower fullscreen bottom padding to reduce the chance of overlapping UI elements
Partially fixes https://github.com/CatimaLoyalty/Android/issues/1332
2023-06-04 19:20:00 +02:00
Sylvia van Os
270546d022 Update screenshots 2023-06-04 19:00:59 +02:00
Sylvia van Os
fe278324f3 Merge pull request #1349 from CatimaLoyalty/create-pull-request/patch-1685896355
Update Fastlane changelogs
2023-06-04 18:34:52 +02:00
TheLastProject
c7c18a0a14 Update Fastlane changelogs 2023-06-04 16:32:35 +00:00
Sylvia van Os
d6fcb71722 Merge pull request #1347 from CatimaLoyalty/feature/detailSettings
Support selecting exactly which details to view in main view
2023-06-04 18:32:20 +02:00
Sylvia van Os
32ce1e02aa Smaller store name font on main screen 2023-06-04 18:14:23 +02:00
Sylvia van Os
8a8faac201 Merge pull request #1345 from obfusk/dialog-top-padding
add top content padding to dialogs
2023-06-04 16:11:31 +02:00
Sylvia van Os
2793f38d19 Move store name below card image 2023-06-04 14:55:26 +02:00
Sylvia van Os
654e3f7843 Improve text readability on icon 2023-06-04 11:20:17 +02:00
Sylvia van Os
2a6fe92b1b Support selecting exactly which details to view in main view 2023-06-04 11:06:35 +02:00
Sylvia van Os
b3cd102332 Merge pull request #1348 from CatimaLoyalty/create-pull-request/patch-1685860707
Update contributors
2023-06-04 11:03:31 +02:00
TheLastProject
e12bfa81dc Update contributors 2023-06-04 06:38:26 +00:00
FC Stegerman
e859e7849d add top content padding to dialogs 2023-06-03 23:14:49 +02:00
Sylvia van Os
7a4c9ce84f Release Catima 2.23.3 2023-06-03 17:12:27 +02:00
Sylvia van Os
6419ca7d11 Merge pull request #1341 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-03 15:59:03 +02:00
Clxff H3r4ld0
d1b23c712a Translated using Weblate (Indonesian)
Currently translated at 94.1% (113 of 120 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-06-03 15:44:42 +02:00
Sabri Ünal
ef5b525401 Translated using Weblate (Turkish)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-06-03 15:44:42 +02:00
frablock
a8d5cb9ef8 Translated using Weblate (French)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-06-03 15:44:42 +02:00
Sylvia van Os
42090310d4 Merge pull request #1340 from CatimaLoyalty/create-pull-request/patch-1685795604
Update Fastlane changelogs
2023-06-03 14:34:32 +02:00
TheLastProject
9d8da2a451 Update Fastlane changelogs 2023-06-03 12:33:24 +00:00
Sylvia van Os
fb488af2b7 Fix barcode being invisible on square screens
See https://github.com/CatimaLoyalty/Android/issues/1339
2023-06-03 14:33:04 +02:00
Sylvia van Os
71052c9f69 Merge pull request #1338 from CatimaLoyalty/create-pull-request/patch-1685789977
Update Fastlane changelogs
2023-06-03 13:00:10 +02:00
TheLastProject
2a285f6d21 Update Fastlane changelogs 2023-06-03 10:59:37 +00:00
Sylvia van Os
e668ae7d9d Update CHANGELOG 2023-06-03 12:59:20 +02:00
Sylvia van Os
4a197c542a Merge pull request #1329 from obfusk/patch-2
make checkBox_reverse font size match sort type radio buttons
2023-06-03 12:58:44 +02:00
Sylvia van Os
720c6b6510 Merge pull request #1337 from obfusk/view-card-id
LoyaltyCardViewActivity: use "Card ID" as title for dialog
2023-06-02 20:24:14 +02:00
FC Stegerman
d932ebb9f2 LoyaltyCardViewActivity: use "Card ID" as title for dialog 2023-06-02 20:17:04 +02:00
Poorva Patidar
77b6d8724b Made barcode value text Selectable (#1331) 2023-06-02 19:57:51 +02:00
Swayam Khare
5ff002da51 Added margin to EditText in AlertDialog (#1328) 2023-06-02 19:47:23 +02:00
Sylvia van Os
16b3fbdf9c Merge pull request #1334 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-02 08:32:18 +02:00
109247019824
4f11eceb3b Translated using Weblate (Bulgarian)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-06-02 06:47:46 +02:00
Eryk Michalak
c11d777bcc Translated using Weblate (Polish)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-06-02 06:47:46 +02:00
Sylvia van Os
49cda90ac6 Merge pull request #1330 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-31 21:13:11 +02:00
Balázs Meskó
63e4f4fd0d Translated using Weblate (Hungarian)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2023-05-31 20:49:42 +02:00
109247019824
c44845582c Translated using Weblate (Bulgarian)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-05-31 20:49:42 +02:00
solokot
b0771d3b01 Translated using Weblate (Russian)
Currently translated at 100.0% (120 of 120 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-05-31 20:49:42 +02:00
FC Stegerman
285a7a9aa7 make checkBox_reverse font size match sort type radio buttons 2023-05-31 15:40:04 +00:00
Sylvia van Os
818c5e1643 Merge branch 'main' of github.com:TheLastProject/loyalty-card-locker 2023-05-30 18:54:50 +02:00
Sylvia van Os
7ffaf65635 Use regular title in info dialog 2023-05-30 18:54:42 +02:00
Sylvia van Os
bf50dcbaf3 Merge pull request #1321 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-30 18:25:02 +02:00
Balanda Nazarii
3e83035cf6 Translated using Weblate (Ukrainian)
Currently translated at 98.3% (118 of 120 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-05-30 13:24:00 +02:00
325 changed files with 2438 additions and 585 deletions

View File

@@ -10,6 +10,9 @@ on:
branches:
- main
env:
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
jobs:
build:
@@ -20,17 +23,17 @@ jobs:
- name: Fail on bad translations
run: if grep -ri "<xliff" app/src/main/res/values*/strings.xml; then echo "Invalidly escaped translations found"; exit 1; fi
- uses: gradle/wrapper-validation-action@v1
- name: set up JDK 17
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '17'
- name: set up OpenJDK 17
run: |
sudo apt-get update
sudo apt-get install -y openjdk-17-jdk-headless
sudo update-alternatives --auto java
- name: Build
run: ./gradlew assembleRelease
- name: Check lint
run: ./gradlew lintRelease
- name: Run unit tests
run: ./gradlew testReleaseUnitTest || ./gradlew testReleaseUnitTest
run: timeout 5m ./gradlew testReleaseUnitTest || { ./gradlew --stop && timeout 5m ./gradlew testReleaseUnitTest; }
- name: SpotBugs
run: ./gradlew spotbugsRelease
- name: Archive test results

View File

@@ -13,12 +13,12 @@ jobs:
steps:
- uses: actions/stale@v4
with:
days-before-stale: -1
days-before-close: 90
stale-issue-message: ""
stale-pr-message: ""
close-issue-message: 'This issue is missing necessary information and cannot be worked on in its current state. It has therefore been closed to keep the issue tracker clean. If you have more information, feel free to reopen it.'
close-pr-message: 'This PR is missing necessary information and cannot be merged in its current state. It has therefore been closed to keep the issue tracker clean. If you have more information, feel free to reopen it.'
only-labels: 'state: needs info'
stale-issue-label: 'state: needs info'
stale-pr-label: 'state: needs info'
remove-stale-when-updated: false
enable-statistics: true

View File

@@ -1,64 +1,92 @@
# Changelog
## v2.23.2 - 122
## v2.25.1 - 128 (2023-07-17)
- Fix rare crash
## v2.25.0 - 127 (2023-07-09)
- Barcode rendering improvements
- Basic interoperability with external apps (Android 6.0+)
- Reorganized settings screen
- Fix importing from some browsers that add a trailing / to the share URL
## v2.24.2 - 126 (2023-06-18)
- Various RTL fixes
## v2.24.1 - 125 (2023-06-11)
- Deal more gracefully with missing header colours
## v2.24.0 - 124 (2023-06-10)
- Support selecting exactly which details to view in card overview
## v2.23.3 - 123 (2023-06-03)
- Minor UI improvements
- Fix new design not being usable on devices with square screens
## v2.23.2 - 122 (2023-05-30)
- Long-press card icon in view activity to change it
- Improve button styling in Groups screen
- Fix long barcode values causing barcode to scale down to nothing
## v2.23.1 - 121
## v2.23.1 - 121 (2023-05-27)
- Update used libraries
## v2.23.0 - 120
## v2.23.0 - 120 (2023-05-25)
- Complete redesign of main and loyalty card view screens
- Material You design for the settings screen
- Fix crash when using "Take a photo" with disabled camera app
## v2.22.1 - 119
## v2.22.1 - 119 (2023-04-14)
- Use Material You colours on more devices (Google library update)
## v2.22.0 - 118
## v2.22.0 - 118 (2023-03-18)
- Support setting start of card validity
- Fix Stocard import (Stocard's export format changed)
## v2.21.2 - 117
## v2.21.2 - 117 (2023-01-27)
- Remove unnecessary permissions
- Target Android 13
## v2.21.1 - 116
## v2.21.1 - 116 (2022-12-06)
- Fix quick spend dialog not allowing , separator
- Support loading image from file manager
## v2.21.0 - 115
## v2.21.0 - 115 (2022-11-06)
- Open image in gallery on long-press
- Apply Material style to dialogs
- Support creating card by sharing an image to Catima
- Add quick spend button to card screen
## v2.20.0 - 114
## v2.20.0 - 114 (2022-09-21)
- Add Monochrome icon for Android 13
- Improve first launch screen
- Fidme import fixes
## v2.19.0 - 113
## v2.19.0 - 113 (2022-08-14)
- Add previous and next buttons to the loyalty card view
- Fix foreground colour on edit button
- Replace floppy disk save icon with checkmark
## v2.18.2 - 112
## v2.18.2 - 112 (2022-07-29)
- Make the possibility to set a custom header more visible
## v2.18.1 - 111
## v2.18.1 - 111 (2022-07-24)
- Arabic language support
- Display archived card count in group overview
@@ -68,11 +96,11 @@
- Fix crash when leaving cardview in RTL layouts for cards with expiry or balance
- Fix back arrow in card view pointing the wrong way in RTL layouts
## v2.17.1 - 109
## v2.17.1 - 109 (2022-06-28)
- Fix incorrect text colour on "No barcode" button
## v2.17.0 - 108
## v2.17.0 - 108 (2022-06-24)
- Add card duplication feature
- Don't allow choosing expiry before 1970 (they never worked anyway)

13
SECURITY.md Normal file
View File

@@ -0,0 +1,13 @@
# Security Policy
Catima is designed to use as little permissions as possible to limit both the attack surface as well as the damage that can be done when abusing a security flaw.
## Supported Versions
Only the most recent stable release is supported.
## Reporting a Vulnerability
Security vulnerabilities can be reported through [GitHub Security Advisories](https://github.com/CatimaLoyalty/Android/security/advisories) or [the contact info written on my personal website](https://sylviavanos.nl/#contact). Currently, Matrix is the only end-to-end encrypted option.
Please note that only security vulnerabilities in Catima should be reported as stated above. For other issues, including antivirus false positives and malicious applications trying to trick people into granting them Catima's "Read Cards" permission, please use [regular issues](https://github.com/CatimaLoyalty/Android/issues).

View File

@@ -19,8 +19,8 @@ android {
applicationId "me.hackerchick.catima"
minSdk 21
targetSdk 33
versionCode 122
versionName "2.23.2"
versionCode 128
versionName "2.25.1"
vectorDrawables.useSupportLibrary true
multiDexEnabled true

View File

@@ -2,6 +2,13 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<permission
android:description="@string/permissionReadCardsDescription"
android:icon="@drawable/ic_launcher_foreground"
android:label="@string/permissionReadCardsLabel"
android:name="${applicationId}.READ_CARDS"
android:protectionLevel="dangerous" />
<uses-sdk tools:overrideLibrary="com.google.zxing.client.android" />
<uses-permission android:name="android.permission.CAMERA" />
@@ -155,6 +162,12 @@
android:name=".UCropWrapper"
android:theme="@style/AppTheme.NoActionBar" />
<provider
android:name=".contentprovider.CardsContentProvider"
android:authorities="${applicationId}.contentprovider.cards"
android:exported="true"
android:readPermission="${applicationId}.READ_CARDS"/>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}"

View File

@@ -41,6 +41,8 @@ public class BarcodeImageWriterTask implements CompatCallable<Bitmap> {
private final CatimaBarcode format;
private final int imageHeight;
private final int imageWidth;
private final int imagePadding;
private final boolean widthPadding;
private final boolean showFallback;
private final BarcodeImageWriterResultCallback callback;
@@ -61,32 +63,39 @@ public class BarcodeImageWriterTask implements CompatCallable<Bitmap> {
cardId = cardIdString;
format = barcodeFormat;
int padding = 0;
int imageViewHeight = imageView.getHeight();
int imageViewWidth = imageView.getWidth();
// Some barcodes already have internal whitespace and shouldn't get extra padding
// TODO: Get rid of this hack by somehow detecting this extra whitespace
if (roundCornerPadding && !barcodeFormat.hasInternalPadding()) {
padding = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, context.getResources().getDisplayMetrics()));
imagePadding = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, context.getResources().getDisplayMetrics()));
} else {
imagePadding = 0;
}
if (format.isSquare() && imageViewWidth > imageViewHeight) {
imageViewWidth -= imagePadding;
widthPadding = true;
} else {
imageViewHeight -= imagePadding;
widthPadding = false;
}
final int MAX_WIDTH = getMaxWidth(format);
int tempImageHeight;
int tempImageWidth;
if (imageView.getWidth() < MAX_WIDTH) {
tempImageHeight = imageView.getHeight();
tempImageWidth = imageView.getWidth();
if (format.isSquare()) {
imageHeight = imageWidth = Math.min(imageViewHeight, Math.min(MAX_WIDTH, imageViewWidth));
} else if (imageView.getWidth() < MAX_WIDTH) {
imageHeight = imageViewHeight;
imageWidth = imageViewWidth;
} else {
// Scale down the image to reduce the memory needed to produce it
tempImageWidth = MAX_WIDTH;
double ratio = (double) MAX_WIDTH / (double) imageView.getWidth();
tempImageHeight = (int) (imageView.getHeight() * ratio);
imageWidth = MAX_WIDTH;
double ratio = (double) MAX_WIDTH / (double) imageViewWidth;
imageHeight = (int) (imageViewHeight * ratio);
}
// Ensure space for padding if wanted
imageWidth = tempImageWidth;
imageHeight = tempImageHeight - padding;
this.showFallback = showFallback;
}
@@ -94,12 +103,15 @@ public class BarcodeImageWriterTask implements CompatCallable<Bitmap> {
switch (format.format()) {
// 2D barcodes
case AZTEC:
case DATA_MATRIX:
case MAXICODE:
case PDF_417:
case QR_CODE:
return MAX_WIDTH_2D;
// 2D but rectangular versions get blurry otherwise
case DATA_MATRIX:
return MAX_WIDTH_1D;
// 1D barcodes:
case CODABAR:
case CODE_39:
@@ -261,6 +273,11 @@ public class BarcodeImageWriterTask implements CompatCallable<Bitmap> {
if (result != null) {
Log.i(TAG, "Displaying barcode");
if (widthPadding) {
imageView.setPadding(imagePadding / 2, 0, imagePadding / 2, 0);
} else {
imageView.setPadding(0, imagePadding / 2, 0, imagePadding / 2);
}
imageView.setVisibility(View.VISIBLE);
if (isSuccesful) {

View File

@@ -81,7 +81,7 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo
@Override
public boolean onCreateOptionsMenu(Menu inputMenu) {
getMenuInflater().inflate(R.menu.card_details_menu, inputMenu);
Utils.updateMenuCardDetailsButtonState(inputMenu.findItem(R.id.action_unfold), mAdapter.showingDetails());
return super.onCreateOptionsMenu(inputMenu);
}
@@ -89,8 +89,8 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo
public boolean onOptionsItemSelected(MenuItem inputItem) {
int id = inputItem.getItemId();
if (id == R.id.action_unfold) {
mAdapter.showDetails(!mAdapter.showingDetails());
if (id == R.id.action_shown_details) {
mAdapter.showSelectDetailDisplayDialog();
invalidateOptionsMenu();
return true;

View File

@@ -67,7 +67,6 @@ public class CatimaBarcode {
public boolean isSquare() {
return mBarcodeFormat == BarcodeFormat.AZTEC
|| mBarcodeFormat == BarcodeFormat.DATA_MATRIX
|| mBarcodeFormat == BarcodeFormat.MAXICODE
|| mBarcodeFormat == BarcodeFormat.QR_CODE;
}

View File

@@ -46,8 +46,11 @@ public class ImportURIHelper {
}
private boolean isImportUri(Uri uri) {
// Remove trailing slash added by some browsers (if it exists)
final String uriPath = uri.getPath().replaceAll("/$", "");
for (int i = 0; i < hosts.length; i++) {
if (uri.getHost().equals(hosts[i]) && uri.getPath().equals(paths[i])) {
if (uri.getHost().equals(hosts[i]) && uriPath.equals(paths[i])) {
return true;
}
}

View File

@@ -18,12 +18,14 @@ import android.widget.TextView;
import com.google.android.material.card.MaterialCardView;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.util.ArrayList;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.BlendModeColorFilterCompat;
@@ -31,7 +33,6 @@ import androidx.core.graphics.BlendModeCompat;
import androidx.recyclerview.widget.RecyclerView;
import protect.card_locker.databinding.LoyaltyCardLayoutBinding;
import protect.card_locker.preferences.Settings;
public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCursorAdapter.LoyaltyCardListItemViewHolder> {
private int mCurrentSelectedIndex = -1;
@@ -41,7 +42,10 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
protected SparseBooleanArray mSelectedItems;
protected SparseBooleanArray mAnimationItemsIndex;
private boolean mReverseAllAnimations = false;
private boolean mShowDetails;
private boolean mShowNameBelowThumbnail;
private boolean mShowNote;
private boolean mShowBalance;
private boolean mShowValidity;
public LoyaltyCardCursorAdapter(Context inputContext, Cursor inputCursor, CardAdapterListener inputListener) {
super(inputCursor, DBHelper.LoyaltyCardDbIds.ID);
@@ -58,29 +62,100 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
swapCursor(inputCursor);
}
private void saveDetailState(int stateId, boolean value) {
SharedPreferences cardDetailsPref = mContext.getSharedPreferences(
mContext.getString(R.string.sharedpreference_card_details),
Context.MODE_PRIVATE);
SharedPreferences.Editor cardDetailsPrefEditor = cardDetailsPref.edit();
cardDetailsPrefEditor.putBoolean(mContext.getString(stateId), value);
cardDetailsPrefEditor.apply();
}
public void refreshState() {
// Retrieve user details preference
SharedPreferences cardDetailsPref = mContext.getSharedPreferences(
mContext.getString(R.string.sharedpreference_card_details),
Context.MODE_PRIVATE);
mShowDetails = cardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show), true);
mShowNameBelowThumbnail = cardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_name_below_thumbnail), false);
mShowNote = cardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_note), true);
mShowBalance = cardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_balance), true);
mShowValidity = cardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_validity), true);
}
public void showDetails(boolean show) {
mShowDetails = show;
public void showNameBelowThumbnail(boolean show) {
mShowNameBelowThumbnail = show;
notifyDataSetChanged();
// Store in Shared Preference to restore next adapter launch
SharedPreferences cardDetailsPref = mContext.getSharedPreferences(
mContext.getString(R.string.sharedpreference_card_details),
Context.MODE_PRIVATE);
SharedPreferences.Editor cardDetailsPrefEditor = cardDetailsPref.edit();
cardDetailsPrefEditor.putBoolean(mContext.getString(R.string.sharedpreference_card_details_show), show);
cardDetailsPrefEditor.apply();
saveDetailState(R.string.sharedpreference_card_details_show_name_below_thumbnail, show);
}
public boolean showingDetails() {
return mShowDetails;
public boolean showingNameBelowThumbnail() {
return mShowNameBelowThumbnail;
}
public void showNote(boolean show) {
mShowNote = show;
notifyDataSetChanged();
saveDetailState(R.string.sharedpreference_card_details_show_note, show);
}
public boolean showingNote() {
return mShowNote;
}
public void showBalance(boolean show) {
mShowBalance = show;
notifyDataSetChanged();
saveDetailState(R.string.sharedpreference_card_details_show_balance, show);
}
public boolean showingBalance() {
return mShowBalance;
}
public void showValidity(boolean show) {
mShowValidity = show;
notifyDataSetChanged();
saveDetailState(R.string.sharedpreference_card_details_show_validity, show);
}
public boolean showingValidity() {
return mShowValidity;
}
public void showSelectDetailDisplayDialog() {
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(mContext);
builder.setTitle(R.string.action_show_details);
builder.setMultiChoiceItems(
new String[]{
mContext.getString(R.string.show_name_below_image_thumbnail),
mContext.getString(R.string.show_note),
mContext.getString(R.string.show_balance),
mContext.getString(R.string.show_validity)
},
new boolean[]{
showingNameBelowThumbnail(),
showingNote(),
showingBalance(),
showingValidity()
},
(dialogInterface, i, b) -> {
switch (i) {
case 0: showNameBelowThumbnail(b); break;
case 1: showNote(b); break;
case 2: showBalance(b); break;
case 3: showValidity(b); break;
default: throw new IndexOutOfBoundsException("No such index exists in LoyaltyCardCursorAdapter show details view");
}
}
);
builder.setPositiveButton(R.string.ok, (dialog, i) -> dialog.dismiss());
AlertDialog dialog = builder.create();
dialog.show();
}
@NonNull
@@ -104,34 +179,41 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
inputHolder.mDivider.setVisibility(View.GONE);
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(inputCursor);
Bitmap icon = Utils.retrieveCardImage(mContext, loyaltyCard.id, ImageLocationType.icon);
if (mShowDetails && !loyaltyCard.note.isEmpty()) {
if (mShowNameBelowThumbnail && icon != null) {
inputHolder.setStoreField(loyaltyCard.store);
} else {
inputHolder.setStoreField(null);
}
if (mShowNote && !loyaltyCard.note.isEmpty()) {
inputHolder.setNoteField(loyaltyCard.note);
} else {
inputHolder.setNoteField(null);
}
if (mShowDetails && !loyaltyCard.balance.equals(new BigDecimal("0"))) {
if (mShowBalance && !loyaltyCard.balance.equals(new BigDecimal("0"))) {
inputHolder.setExtraField(inputHolder.mBalanceField, Utils.formatBalance(mContext, loyaltyCard.balance, loyaltyCard.balanceType), null);
} else {
inputHolder.setExtraField(inputHolder.mBalanceField, null, null);
}
if (mShowDetails && loyaltyCard.validFrom != null) {
if (mShowValidity && loyaltyCard.validFrom != null) {
inputHolder.setExtraField(inputHolder.mValidFromField, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.validFrom), Utils.isNotYetValid(loyaltyCard.validFrom) ? Color.RED : null);
} else {
inputHolder.setExtraField(inputHolder.mValidFromField, null, null);
}
if (mShowDetails && loyaltyCard.expiry != null) {
if (mShowValidity && loyaltyCard.expiry != null) {
inputHolder.setExtraField(inputHolder.mExpiryField, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.expiry), Utils.hasExpired(loyaltyCard.expiry) ? Color.RED : null);
} else {
inputHolder.setExtraField(inputHolder.mExpiryField, null, null);
}
inputHolder.mCardIcon.setContentDescription(loyaltyCard.store);
Utils.setIconOrTextWithBackground(mContext, loyaltyCard, inputHolder.mCardIcon, inputHolder.mCardText);
inputHolder.setIconBackgroundColor(loyaltyCard.headerColor != null ? loyaltyCard.headerColor : androidx.appcompat.R.attr.colorPrimary);
Utils.setIconOrTextWithBackground(mContext, loyaltyCard, icon, inputHolder.mCardIcon, inputHolder.mCardText);
inputHolder.setIconBackgroundColor(Utils.getHeaderColor(mContext, loyaltyCard));
inputHolder.toggleCardStateIcon(loyaltyCard.starStatus != 0, loyaltyCard.archiveStatus != 0, itemSelected(inputCursor.getPosition()));
@@ -218,7 +300,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
public class LoyaltyCardListItemViewHolder extends RecyclerView.ViewHolder {
public TextView mCardText, mNoteField, mBalanceField, mValidFromField, mExpiryField;
public TextView mCardText, mStoreField, mNoteField, mBalanceField, mValidFromField, mExpiryField;
public ImageView mCardIcon, mStarBackground, mStarBorder, mTickIcon, mArchivedBackground;
public MaterialCardView mRow;
public ConstraintLayout mStar, mArchived;
@@ -231,6 +313,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
View inputView = loyaltyCardLayoutBinding.getRoot();
mRow = loyaltyCardLayoutBinding.row;
mDivider = loyaltyCardLayoutBinding.infoDivider;
mStoreField = loyaltyCardLayoutBinding.store;
mNoteField = loyaltyCardLayoutBinding.note;
mBalanceField = loyaltyCardLayoutBinding.balance;
mValidFromField = loyaltyCardLayoutBinding.validFrom;
@@ -280,6 +363,16 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
field.requestLayout();
}
public void setStoreField(String text) {
if (text == null) {
mStoreField.setVisibility(View.GONE);
} else {
mStoreField.setVisibility(View.VISIBLE);
mStoreField.setText(text);
}
mStoreField.requestLayout();
}
public void setNoteField(String text) {
if (text == null) {
mNoteField.setVisibility(View.GONE);

View File

@@ -23,6 +23,7 @@ import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
@@ -30,6 +31,7 @@ import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
@@ -173,6 +175,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
boolean validBalance = true;
HashMap<String, Currency> currencies = new HashMap<>();
HashMap<String, String> currencySymbols = new HashMap<>();
LoyaltyCard tempLoyaltyCard;
@@ -327,6 +330,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
for (Currency currency : Currency.getAvailableCurrencies()) {
currencies.put(currency.getSymbol(), currency);
currencySymbols.put(currency.getCurrencyCode(), currency.getSymbol());
}
tabs = binding.tabs;
@@ -491,10 +495,20 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
builder.setTitle(R.string.setBarcodeId);
final EditText input = new EditText(LoyaltyCardEditActivity.this);
input.setInputType(InputType.TYPE_CLASS_TEXT);
FrameLayout container = new FrameLayout(LoyaltyCardEditActivity.this);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
int contentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
params.leftMargin = contentPadding;
params.topMargin = contentPadding / 2;
params.rightMargin = contentPadding;
input.setLayoutParams(params);
container.addView(input);
if (tempLoyaltyCard.barcodeId != null) {
input.setText(tempLoyaltyCard.barcodeId);
}
builder.setView(input);
builder.setView(container);
builder.setPositiveButton(getString(R.string.ok), (dialog, which) -> {
// If the user manually changes the barcode again make sure we disable the
@@ -841,10 +855,9 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
}
}
// Generate random header color
if (tempLoyaltyCard.headerColor == null) {
// Select a random color to start out with.
updateTempState(LoyaltyCardField.headerColor, Utils.getRandomHeaderColor(this));
// If name is set, pick colour relevant for name. Otherwise pick randomly
updateTempState(LoyaltyCardField.headerColor, tempLoyaltyCard.store.isEmpty() ? Utils.getRandomHeaderColor(this) : Utils.getHeaderColor(this, tempLoyaltyCard));
}
// Update from intent
@@ -916,7 +929,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
protected void setColorFromIcon() {
Object icon = thumbnail.getTag();
if (icon != null && (icon instanceof Bitmap)) {
int headerColor = Utils.getHeaderColorFromImage((Bitmap) icon, tempLoyaltyCard.headerColor != null ? tempLoyaltyCard.headerColor : androidx.appcompat.R.attr.colorPrimary);
int headerColor = Utils.getHeaderColorFromImage((Bitmap) icon, Utils.getHeaderColor(this, tempLoyaltyCard));
updateTempState(LoyaltyCardField.headerColor, headerColor);
@@ -1000,7 +1013,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
if (balanceType == null) {
balanceCurrencyField.setText(getString(R.string.points));
} else {
balanceCurrencyField.setText(balanceType.getSymbol());
balanceCurrencyField.setText(getCurrencySymbol(balanceType));
}
}
@@ -1628,11 +1641,16 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
private void currencyPrioritizeLocaleSymbols(ArrayList<String> currencyList, Locale locale) {
try {
String currencySymbol = Currency.getInstance(locale).getSymbol();
String currencySymbol = getCurrencySymbol(Currency.getInstance(locale));
currencyList.remove(currencySymbol);
currencyList.add(0, currencySymbol);
} catch (IllegalArgumentException e) {
Log.d(TAG, "Could not get currency data for locale info: " + e);
}
}
private String getCurrencySymbol(final Currency currency) {
// Workaround for Android bug where the output of Currency.getSymbol() changes.
return currencySymbols.get(currency.getCurrencyCode());
}
}

View File

@@ -52,6 +52,7 @@ import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.core.widget.TextViewCompat;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.textfield.TextInputEditText;
@@ -341,22 +342,12 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
AlertDialog.Builder infoDialog = new MaterialAlertDialogBuilder(this);
int dialogContentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
int dialogTitlePadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_title_padding);
TextView infoTitleView = new TextView(this);
infoTitleView.setPadding(
dialogContentPadding,
dialogContentPadding,
dialogContentPadding,
dialogTitlePadding
);
infoTitleView.setText(loyaltyCard.store);
infoDialog.setCustomTitle(infoTitleView);
infoDialog.setTitle(loyaltyCard.store);
TextView infoTextview = new TextView(this);
infoTextview.setPadding(
dialogContentPadding,
0,
dialogContentPadding / 2,
dialogContentPadding,
0
);
@@ -419,6 +410,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
);
int contentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
params.leftMargin = contentPadding;
params.topMargin = contentPadding / 2;
params.rightMargin = contentPadding;
LinearLayout layout = new LinearLayout(this);
@@ -597,7 +589,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
loyaltyCardGroups = DBHelper.getLoyaltyCardGroups(database, loyaltyCardId);
setupOrientation();
showHideElementsForScreenSize();
format = loyaltyCard.barcodeType;
cardIdString = loyaltyCard.cardId;
@@ -607,20 +599,21 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
// Display full text on click in case it doesn't fit in a single line
binding.cardIdView.setOnClickListener(v -> {
TextView cardIdView = new TextView(LoyaltyCardViewActivity.this);
cardIdView.setText(loyaltyCard.cardId);
cardIdView.setTextIsSelectable(true);
int contentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
cardIdView.setPadding(contentPadding, contentPadding / 2, contentPadding, 0);
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(LoyaltyCardViewActivity.this);
builder.setTitle(R.string.barcodeId);
builder.setMessage(loyaltyCard.cardId);
builder.setTitle(R.string.cardId);
builder.setView(cardIdView);
builder.setPositiveButton(R.string.ok, (dialogInterface, i) -> dialogInterface.dismiss());
AlertDialog dialog = builder.create();
dialog.show();
});
int backgroundHeaderColor;
if (loyaltyCard.headerColor != null) {
backgroundHeaderColor = loyaltyCard.headerColor;
} else {
backgroundHeaderColor = LetterBitmap.getDefaultColor(this, loyaltyCard.store);
}
int backgroundHeaderColor = Utils.getHeaderColor(this, loyaltyCard);
// Also apply colours to UI elements
int darkenedColor = ColorUtils.blendARGB(backgroundHeaderColor, Color.BLACK, 0.1f);
@@ -634,7 +627,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
editButtonIcon.setTint(Utils.needsDarkForeground(complementaryColor) ? Color.BLACK : Color.WHITE);
binding.fabEdit.setImageDrawable(editButtonIcon);
Utils.setIconOrTextWithBackground(this, loyaltyCard, binding.iconImage, binding.iconText);
Bitmap icon = Utils.retrieveCardImage(this, loyaltyCard.id, ImageLocationType.icon);
Utils.setIconOrTextWithBackground(this, loyaltyCard, icon, binding.iconImage, binding.iconText);
// If the background is very bright, we should use dark icons
backgroundNeedsDarkIcons = Utils.needsDarkForeground(backgroundHeaderColor);
@@ -823,13 +817,17 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
return super.onOptionsItemSelected(item);
}
private void setupOrientation() {
private void showHideElementsForScreenSize() {
int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.d(TAG, "Detected landscape mode");
// Detect square-ish screens like the Unihertz Titan
boolean isSmallHeight = getResources().getDisplayMetrics().heightPixels < (getResources().getDisplayMetrics().widthPixels * 1.5);
// Treat sqaure-ish screens as
if (orientation == Configuration.ORIENTATION_LANDSCAPE || isSmallHeight) {
Log.d(TAG, "Detected landscape mode or square-ish screen");
binding.iconContainer.setVisibility(View.GONE);
} else {
Log.d(TAG, "Detected portrait mode");
Log.d(TAG, "Detected portrait mode on non square-ish screen");
binding.iconContainer.setVisibility(View.VISIBLE);
}
@@ -871,18 +869,17 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
private void drawMainImage(int index, boolean waitForResize, boolean isFullscreen) {
if (imageTypes.isEmpty()) {
barcodeRenderTarget.setVisibility(View.GONE);
binding.mainCardView.setCardBackgroundColor(Color.TRANSPARENT);
binding.cardIdView.setTextColor(MaterialColors.getColor(binding.cardIdView, com.google.android.material.R.attr.colorOnSurfaceVariant));
return;
}
ImageType wantedImageType = imageTypes.get(index);
if (wantedImageType == ImageType.BARCODE) {
// Use border in non-fullscreen mode
if (!isFullscreen) {
barcodeRenderTarget.setBackground(AppCompatResources.getDrawable(this, R.drawable.round_outline));
} else {
barcodeRenderTarget.setBackgroundColor(Color.WHITE);
}
barcodeRenderTarget.setBackgroundColor(Color.WHITE);
binding.mainCardView.setCardBackgroundColor(Color.WHITE);
binding.cardIdView.setTextColor(getResources().getColor(R.color.md_theme_light_onSurfaceVariant));
if (waitForResize) {
redrawBarcodeAfterResize(!isFullscreen);
@@ -894,10 +891,14 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
} else if (wantedImageType == ImageType.IMAGE_FRONT) {
barcodeRenderTarget.setImageBitmap(frontImageBitmap);
barcodeRenderTarget.setBackgroundColor(Color.TRANSPARENT);
binding.mainCardView.setCardBackgroundColor(Color.TRANSPARENT);
binding.cardIdView.setTextColor(MaterialColors.getColor(binding.cardIdView, com.google.android.material.R.attr.colorOnSurfaceVariant));
barcodeRenderTarget.setContentDescription(getString(R.string.frontImageDescription));
} else if (wantedImageType == ImageType.IMAGE_BACK) {
barcodeRenderTarget.setImageBitmap(backImageBitmap);
barcodeRenderTarget.setBackgroundColor(Color.TRANSPARENT);
binding.mainCardView.setCardBackgroundColor(Color.TRANSPARENT);
binding.cardIdView.setTextColor(MaterialColors.getColor(binding.cardIdView, com.google.android.material.R.attr.colorOnSurfaceVariant));
barcodeRenderTarget.setContentDescription(getString(R.string.backImageDescription));
} else {
throw new IllegalArgumentException("Unknown image type: " + wantedImageType);
@@ -983,22 +984,33 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
return;
}
final ImageButton prevButton;
final ImageButton nextButton;
if (getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
prevButton = binding.mainRightButton;
nextButton = binding.mainLeftButton;
} else {
prevButton = binding.mainLeftButton;
nextButton = binding.mainRightButton;
}
// Enable left button if we can go further left
if (mainImageIndex > 0) {
binding.mainLeftButton.setVisibility(View.VISIBLE);
binding.mainLeftButton.setOnClickListener(view -> setMainImage(false, false));
prevButton.setVisibility(View.VISIBLE);
prevButton.setOnClickListener(view -> setMainImage(false, false));
} else {
binding.mainLeftButton.setVisibility(View.INVISIBLE);
binding.mainLeftButton.setOnClickListener(null);
prevButton.setVisibility(View.INVISIBLE);
prevButton.setOnClickListener(null);
}
// Enable right button if we can go further right
if (mainImageIndex < (imageTypes.size() - 1)) {
binding.mainRightButton.setVisibility(View.VISIBLE);
binding.mainRightButton.setOnClickListener(view -> setMainImage(true, false));
nextButton.setVisibility(View.VISIBLE);
nextButton.setOnClickListener(view -> setMainImage(true, false));
} else {
binding.mainRightButton.setVisibility(View.INVISIBLE);
binding.mainRightButton.setOnClickListener(null);
nextButton.setVisibility(View.INVISIBLE);
nextButton.setOnClickListener(null);
}
}

View File

@@ -15,18 +15,15 @@ import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.CheckBox;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.view.ActionMode;
import androidx.appcompat.widget.SearchView;
@@ -435,7 +432,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
}
private void displayCardSetupOptions(Menu menu, boolean shouldShow) {
for (int id : new int[]{R.id.action_search, R.id.action_unfold, R.id.action_sort}) {
for (int id : new int[]{R.id.action_search, R.id.action_shown_details, R.id.action_sort}) {
menu.findItem(id).setVisible(shouldShow);
}
}
@@ -600,7 +597,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
getMenuInflater().inflate(R.menu.archive_menu, inputMenu);
}
Utils.updateMenuCardDetailsButtonState(inputMenu.findItem(R.id.action_unfold), mAdapter.showingDetails());
displayCardSetupOptions(inputMenu, mLoyaltyCardCount > 0);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
@@ -653,8 +649,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
onBackPressed();
}
if (id == R.id.action_unfold) {
mAdapter.showDetails(!mAdapter.showingDetails());
if (id == R.id.action_shown_details) {
mAdapter.showSelectDetailDisplayDialog();
invalidateOptionsMenu();
return true;

View File

@@ -21,7 +21,6 @@ import java.util.HashMap;
import java.util.Map;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.RecyclerView;
@@ -160,7 +159,7 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana
@Override
public boolean onCreateOptionsMenu(Menu inputMenu) {
getMenuInflater().inflate(R.menu.card_details_menu, inputMenu);
Utils.updateMenuCardDetailsButtonState(inputMenu.findItem(R.id.action_unfold), mAdapter.showingDetails());
return super.onCreateOptionsMenu(inputMenu);
}
@@ -168,8 +167,8 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana
public boolean onOptionsItemSelected(MenuItem inputItem) {
int id = inputItem.getItemId();
if (id == R.id.action_unfold) {
mAdapter.showDetails(!mAdapter.showingDetails());
if (id == R.id.action_shown_details) {
mAdapter.showSelectDetailDisplayDialog();
invalidateOptionsMenu();
return true;

View File

@@ -150,8 +150,10 @@ public class ManageGroupsActivity extends CatimaAppCompatActivity implements Gro
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
params.leftMargin = 50;
params.rightMargin = 50;
int contentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
params.leftMargin = contentPadding;
params.topMargin = contentPadding / 2;
params.rightMargin = contentPadding;
input.setLayoutParams(params);
container.addView(input);

View File

@@ -33,7 +33,6 @@ class ShortcutHelper {
private static final int ADAPTIVE_BITMAP_SIZE = 108 * ADAPTIVE_BITMAP_SCALE;
private static final int ADAPTIVE_BITMAP_VISIBLE_SIZE = 72 * ADAPTIVE_BITMAP_SCALE;
private static final int ADAPTIVE_BITMAP_IMAGE_SIZE = ADAPTIVE_BITMAP_VISIBLE_SIZE + 5 * ADAPTIVE_BITMAP_SCALE;
private static final int PADDING_COLOR = Color.argb(255, 255, 255, 255);
private static final int PADDING_COLOR_OVERLAY = Color.argb(127, 0, 0, 0);
/**
@@ -71,19 +70,13 @@ class ShortcutHelper {
ShortcutInfoCompat found = list.remove(foundIndex.intValue());
list.addFirst(found);
} else {
// The item is new to the list. First, we need to trim the list
// until it is able to accept a new item, then the item is
// inserted.
while (list.size() >= MAX_SHORTCUTS) {
list.pollLast();
}
// The item is new to the list. We add it and trim the list later.
ShortcutInfoCompat shortcut = createShortcutBuilder(context, card).build();
list.addFirst(shortcut);
}
LinkedList<ShortcutInfoCompat> finalList = new LinkedList<>();
int rank = 0;
// The ranks are now updated; the order in the list is the rank.
for (int index = 0; index < list.size(); index++) {
@@ -91,11 +84,20 @@ class ShortcutHelper {
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(database, Integer.parseInt(prevShortcut.getId()));
ShortcutInfoCompat updatedShortcut = createShortcutBuilder(context, loyaltyCard)
.setRank(index)
.build();
// skip outdated cards that no longer exist
if (loyaltyCard != null) {
ShortcutInfoCompat updatedShortcut = createShortcutBuilder(context, loyaltyCard)
.setRank(rank)
.build();
finalList.addLast(updatedShortcut);
finalList.addLast(updatedShortcut);
rank++;
// trim the list
if (rank >= MAX_SHORTCUTS) {
break;
}
}
}
ShortcutManagerCompat.setDynamicShortcuts(context, finalList);
@@ -145,7 +147,7 @@ class ShortcutHelper {
if (iconBitmap == null) {
iconBitmap = Utils.generateIcon(context, loyaltyCard, true).getLetterTile();
} else {
iconBitmap = createAdaptiveBitmap(iconBitmap, loyaltyCard.headerColor == null ? PADDING_COLOR : loyaltyCard.headerColor);
iconBitmap = createAdaptiveBitmap(iconBitmap, Utils.getHeaderColor(context, loyaltyCard));
}
IconCompat icon = IconCompat.createWithAdaptiveBitmap(iconBitmap);

View File

@@ -560,16 +560,6 @@ public class Utils {
activity.findViewById(android.R.id.content).setBackgroundColor(typedValue.data);
}
public static void updateMenuCardDetailsButtonState(MenuItem item, boolean currentlyExpanded) {
if (currentlyExpanded) {
item.setIcon(R.drawable.ic_baseline_unfold_less_24);
item.setTitle(R.string.action_hide_details);
} else {
item.setIcon(R.drawable.ic_baseline_unfold_more_24);
item.setTitle(R.string.action_show_details);
}
}
public static int getHeaderColorFromImage(Bitmap image, int fallback) {
if (image == null) {
return fallback;
@@ -603,8 +593,7 @@ public class Utils {
return result.toString();
}
public static void setIconOrTextWithBackground(Context context, LoyaltyCard loyaltyCard, ImageView backgroundOrIcon, TextView textWhenNoImage) {
Bitmap icon = Utils.retrieveCardImage(context, loyaltyCard.id, ImageLocationType.icon);
public static void setIconOrTextWithBackground(Context context, LoyaltyCard loyaltyCard, Bitmap icon, ImageView backgroundOrIcon, TextView textWhenNoImage) {
if (icon != null) {
Log.d("onResume", "setting icon image");
textWhenNoImage.setVisibility(View.GONE);
@@ -614,7 +603,7 @@ public class Utils {
} else {
textWhenNoImage.setVisibility(View.VISIBLE);
int headerColor = loyaltyCard.headerColor != null ? loyaltyCard.headerColor : LetterBitmap.getDefaultColor(context, loyaltyCard.store);
int headerColor = getHeaderColor(context, loyaltyCard);
backgroundOrIcon.setImageBitmap(null);
backgroundOrIcon.setBackgroundColor(headerColor);
@@ -637,4 +626,8 @@ public class Utils {
return false;
}
}
public static int getHeaderColor(Context context, LoyaltyCard loyaltyCard) {
return loyaltyCard.headerColor != null ? loyaltyCard.headerColor : LetterBitmap.getDefaultColor(context, loyaltyCard.store);
}
}

View File

@@ -0,0 +1,172 @@
package protect.card_locker.contentprovider;
import static protect.card_locker.DBHelper.LoyaltyCardDbIds;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Build;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import protect.card_locker.BuildConfig;
import protect.card_locker.DBHelper;
import protect.card_locker.preferences.Settings;
public class CardsContentProvider extends ContentProvider {
private static final String TAG = "Catima";
public static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".contentprovider.cards";
public static class Version {
public static final String MAJOR_COLUMN = "major";
public static final String MINOR_COLUMN = "minor";
public static final int MAJOR = 1;
public static final int MINOR = 0;
}
private static final int URI_VERSION = 0;
private static final int URI_CARDS = 1;
private static final int URI_GROUPS = 2;
private static final int URI_CARD_GROUPS = 3;
private static final String[] CARDS_DEFAULT_PROJECTION = new String[]{
LoyaltyCardDbIds.ID,
LoyaltyCardDbIds.STORE,
LoyaltyCardDbIds.VALID_FROM,
LoyaltyCardDbIds.EXPIRY,
LoyaltyCardDbIds.BALANCE,
LoyaltyCardDbIds.BALANCE_TYPE,
LoyaltyCardDbIds.NOTE,
LoyaltyCardDbIds.HEADER_COLOR,
LoyaltyCardDbIds.CARD_ID,
LoyaltyCardDbIds.BARCODE_ID,
LoyaltyCardDbIds.BARCODE_TYPE,
LoyaltyCardDbIds.STAR_STATUS,
LoyaltyCardDbIds.LAST_USED,
LoyaltyCardDbIds.ARCHIVE_STATUS,
};
private static final UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH) {{
addURI(AUTHORITY, "version", URI_VERSION);
addURI(AUTHORITY, "cards", URI_CARDS);
addURI(AUTHORITY, "groups", URI_GROUPS);
addURI(AUTHORITY, "card_groups", URI_CARD_GROUPS);
}};
@Override
public boolean onCreate() {
return true;
}
@Nullable
@Override
public Cursor query(@NonNull final Uri uri,
@Nullable final String[] projection,
@Nullable final String selection,
@Nullable final String[] selectionArgs,
@Nullable final String sortOrder) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
// Disable the content provider on SDK < 23 since it grants dangerous
// permissions at install-time
Log.w(TAG, "Content provider read is only available for SDK >= 23");
return null;
}
final Settings settings = new Settings(getContext());
if (!settings.getAllowContentProviderRead()) {
Log.w(TAG, "Content provider read is disabled");
return null;
}
final String table;
String[] updatedProjection = projection;
switch (uriMatcher.match(uri)) {
case URI_VERSION:
return queryVersion();
case URI_CARDS:
table = DBHelper.LoyaltyCardDbIds.TABLE;
// Restrict columns to the default projection (omit internal columns such as zoom level)
if (projection == null) {
updatedProjection = CARDS_DEFAULT_PROJECTION;
} else {
final Set<String> defaultProjection = new HashSet<>(Arrays.asList(CARDS_DEFAULT_PROJECTION));
updatedProjection = Arrays.stream(projection).filter(defaultProjection::contains).toArray(String[]::new);
}
break;
case URI_GROUPS:
table = DBHelper.LoyaltyCardDbGroups.TABLE;
break;
case URI_CARD_GROUPS:
table = DBHelper.LoyaltyCardDbIdsGroups.TABLE;
break;
default:
Log.w(TAG, "Unrecognized URI " + uri);
return null;
}
final DBHelper dbHelper = new DBHelper(getContext());
final SQLiteDatabase database = dbHelper.getReadableDatabase();
return database.query(
table,
updatedProjection,
selection,
selectionArgs,
null,
null,
sortOrder
);
}
private Cursor queryVersion() {
final String[] columns = new String[]{Version.MAJOR_COLUMN, Version.MINOR_COLUMN};
final MatrixCursor matrixCursor = new MatrixCursor(columns);
matrixCursor.addRow(new Object[]{Version.MAJOR, Version.MINOR});
return matrixCursor;
}
@Nullable
@Override
public String getType(@NonNull final Uri uri) {
// MIME types are not relevant (for now at least)
return null;
}
@Nullable
@Override
public Uri insert(@NonNull final Uri uri,
@Nullable final ContentValues values) {
// This content provider is read-only for now, so we always return null
return null;
}
@Override
public int delete(@NonNull final Uri uri,
@Nullable final String selection,
@Nullable final String[] selectionArgs) {
// This content provider is read-only for now, so we always return 0
return 0;
}
@Override
public int update(@NonNull final Uri uri,
@Nullable final ContentValues values,
@Nullable final String selection,
@Nullable final String[] selectionArgs) {
// This content provider is read-only for now, so we always return 0
return 0;
}
}

View File

@@ -79,6 +79,10 @@ public class Settings {
return getBoolean(R.string.settings_key_disable_lockscreen_while_viewing_card, true);
}
public boolean getAllowContentProviderRead() {
return getBoolean(R.string.settings_key_allow_content_provider_read, true);
}
public boolean getOledDark() {
return getBoolean(R.string.settings_key_oled_dark, false);
}

View File

@@ -3,6 +3,7 @@ package protect.card_locker.preferences;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.MenuItem;
@@ -15,7 +16,6 @@ import java.util.Locale;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.DialogFragment;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
@@ -98,23 +98,8 @@ public class SettingsActivity extends CatimaAppCompatActivity {
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
// Show pretty names
ListPreference localePreference = findPreference(getResources().getString(R.string.settings_key_locale));
assert localePreference != null;
CharSequence[] entryValues = localePreference.getEntryValues();
List<CharSequence> entries = new ArrayList<>();
for (CharSequence entry : entryValues) {
if (entry.length() == 0) {
entries.add(getResources().getString(R.string.settings_system_locale));
} else {
Locale entryLocale = Utils.stringToLocale(entry.toString());
entries.add(entryLocale.getDisplayName(entryLocale));
}
}
localePreference.setEntries(entries.toArray(new CharSequence[entryValues.length]));
Preference themePreference = findPreference(getResources().getString(R.string.settings_key_theme));
// Show pretty names and summaries
ListPreference themePreference = findPreference(getResources().getString(R.string.settings_key_theme));
assert themePreference != null;
themePreference.setOnPreferenceChangeListener((preference, o) -> {
if (o.toString().equals(getResources().getString(R.string.settings_key_light_theme))) {
@@ -128,10 +113,16 @@ public class SettingsActivity extends CatimaAppCompatActivity {
return true;
});
localePreference.setOnPreferenceChangeListener((preference, newValue) -> {
ListPreference themeColorPreference = findPreference(getResources().getString(R.string.setting_key_theme_color));
assert themeColorPreference != null;
themeColorPreference.setOnPreferenceChangeListener((preference, o) -> {
refreshActivity(true);
return true;
});
if (!DynamicColors.isDynamicColorAvailable()) {
themeColorPreference.setEntryValues(R.array.color_values_no_dynamic);
themeColorPreference.setEntries(R.array.color_value_strings_no_dynamic);
}
Preference oledDarkPreference = findPreference(getResources().getString(R.string.settings_key_oled_dark));
assert oledDarkPreference != null;
@@ -140,16 +131,29 @@ public class SettingsActivity extends CatimaAppCompatActivity {
return true;
});
ListPreference colorPreference = findPreference(getResources().getString(R.string.setting_key_theme_color));
assert colorPreference != null;
colorPreference.setOnPreferenceChangeListener((preference, o) -> {
ListPreference localePreference = findPreference(getResources().getString(R.string.settings_key_locale));
assert localePreference != null;
CharSequence[] entryValues = localePreference.getEntryValues();
List<CharSequence> entries = new ArrayList<>();
for (CharSequence entry : entryValues) {
if (entry.length() == 0) {
entries.add(getResources().getString(R.string.settings_system_locale));
} else {
Locale entryLocale = Utils.stringToLocale(entry.toString());
entries.add(entryLocale.getDisplayName(entryLocale));
}
}
localePreference.setEntries(entries.toArray(new CharSequence[entryValues.length]));
localePreference.setOnPreferenceChangeListener((preference, newValue) -> {
refreshActivity(true);
return true;
});
if (!DynamicColors.isDynamicColorAvailable()) {
colorPreference.setEntryValues(R.array.color_values_no_dynamic);
colorPreference.setEntries(R.array.color_value_strings_no_dynamic);
}
// Disable content provider on SDK < 23 since dangerous permissions
// are granted at install-time
Preference contentProviderReadPreference = findPreference(getResources().getString(R.string.settings_key_allow_content_provider_read));
assert contentProviderReadPreference != null;
contentProviderReadPreference.setVisible(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M);
}
private void refreshActivity(boolean reloadMain) {

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,4.5C7,4.5 2.73,7.61 1,12c1.73,4.39 6,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5zM12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3z"/>
</vector>

View File

@@ -1,5 +1,5 @@
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M7,14l5,-5 5,5z"/>
<path android:fillColor="@android:color/white" android:pathData="M7.41,8.59L12,13.17l4.59,-4.58L18,10l-6,6 -6,-6 1.41,-1.41z"/>
</vector>

View File

@@ -1,5 +1,5 @@
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M7,10l5,5 5,-5z"/>
<path android:fillColor="@android:color/white" android:pathData="M7.41,15.41L12,10.83l4.59,4.58L18,14l-6,-6 -6,6z"/>
</vector>

View File

@@ -128,11 +128,10 @@
<TextView
android:id="@+id/translate_sub"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:text="@string/translate_platform"
android:layout_marginEnd="20dp"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/translate_main"/>
@@ -169,11 +168,10 @@
<TextView
android:id="@+id/license_sub"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:text="@string/app_license"
android:layout_marginEnd="20dp"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/license_main"/>

View File

@@ -43,7 +43,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:icon="@drawable/ic_baseline_arrow_drop_up_24"
app:icon="@drawable/ic_baseline_keyboard_arrow_up_24"
app:iconGravity="textStart"
app:tint="?attr/colorOnPrimary"
android:contentDescription="@string/moveUp"/>
@@ -54,7 +54,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:icon="@drawable/ic_baseline_arrow_drop_down_24"
app:icon="@drawable/ic_baseline_keyboard_arrow_down_24"
app:iconGravity="textStart"
app:tint="?attr/colorOnPrimary"
android:contentDescription="@string/moveDown"/>

View File

@@ -18,7 +18,7 @@
android:outlineProvider="none"
app:cardCornerRadius="8dp"
app:strokeWidth="0dp"
app:layout_constraintBottom_toTopOf="@+id/note"
app:layout_constraintBottom_toTopOf="@+id/store"
app:layout_constraintDimensionRatio="85.6f:53.98f"
app:layout_constraintTop_toTopOf="parent">
@@ -129,6 +129,23 @@
</com.google.android.material.card.MaterialCardView>
<TextView
android:id="@+id/store"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="4dp"
android:textAppearance="?attr/textAppearanceHeadlineSmall"
android:textColor="?android:attr/textColorSecondary"
android:visibility="gone"
tools:visibility="visible"
app:layout_constraintTop_toBottomOf="@+id/icon_layout"
app:layout_constraintBottom_toTopOf="@+id/note"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:text="Example store"/>
<TextView
android:id="@+id/note"
android:layout_width="match_parent"
@@ -140,7 +157,7 @@
android:textColor="?android:attr/textColorSecondary"
android:visibility="gone"
tools:visibility="visible"
app:layout_constraintTop_toBottomOf="@+id/icon_layout"
app:layout_constraintTop_toBottomOf="@+id/store"
app:layout_constraintBottom_toTopOf="@+id/info_divider"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -83,7 +83,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp">
android:layout_marginEnd="0dp"
android:layoutDirection="ltr">
<!-- We don't use these buttons for Talkback -->
<ImageButton
@@ -101,6 +102,7 @@
android:layout_weight="1">
<com.google.android.material.card.MaterialCardView
android:id="@+id/main_card_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardCornerRadius="8dp"
@@ -168,7 +170,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@+id/fullscreen_button_minimize"
android:layout_marginBottom="50dp"
android:layout_marginBottom="25dp"
android:layout_marginStart="15.0dip"
android:layout_marginEnd="15.0dip">
@@ -195,7 +197,7 @@
android:src="@drawable/ic_baseline_expand_more_24"
android:tooltipText="@string/moveDown"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="50dp"
android:layout_marginBottom="25dp"
android:background="@android:color/transparent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -212,53 +214,70 @@
app:contentInsetEnd="0dp"
app:fabAlignmentMode="center">
<ImageButton
android:id="@+id/bottom_app_bar_previous_button"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_baseline_chevron_left_24"
android:tooltipText="@string/previousCard"
android:visibility="gone" />
android:layoutDirection="ltr">
<ImageButton
android:id="@+id/bottom_app_bar_info_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_baseline_info_24"
android:tooltipText="@string/showMoreInfo"
android:visibility="gone" />
<ImageButton
android:id="@+id/bottom_app_bar_previous_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_baseline_chevron_left_24"
android:tooltipText="@string/previousCard"
android:visibility="gone" />
<ImageButton
android:id="@+id/bottom_app_bar_next_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="right"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_baseline_chevron_right_24"
android:tooltipText="@string/nextCard"
android:visibility="gone" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"
android:layoutDirection="locale">
<ImageButton
android:id="@+id/bottom_app_bar_update_balance_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end"
android:background="@android:color/transparent"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:src="@drawable/ic_baseline_shopping_cart_24"
android:tooltipText="@string/updateBalance"
android:visibility="gone" />
<ImageButton
android:id="@+id/bottom_app_bar_info_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_baseline_info_24"
android:tooltipText="@string/showMoreInfo"
android:visibility="gone" />
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<ImageButton
android:id="@+id/bottom_app_bar_update_balance_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_baseline_shopping_cart_24"
android:tooltipText="@string/updateBalance"
android:visibility="gone" />
</LinearLayout>
<ImageButton
android:id="@+id/bottom_app_bar_next_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_baseline_chevron_right_24"
android:tooltipText="@string/nextCard"
android:visibility="gone" />
</LinearLayout>
</com.google.android.material.bottomappbar.BottomAppBar>

View File

@@ -10,12 +10,13 @@
<CheckBox
android:id="@+id/checkBox_reverse"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:paddingLeft="20dp"
android:layout_marginStart="20dp"
android:paddingStart="20dp"
android:text="@string/reverse"
android:textSize="19sp"/>
android:textSize="16sp"
android:textColor="?attr/colorOnSurfaceVariant"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -10,9 +10,9 @@
app:showAsAction="always|collapseActionView"
android:visible="false"/>
<item
android:id="@+id/action_unfold"
android:title="@string/action_hide_details"
android:icon="@drawable/ic_baseline_unfold_less_24"
android:id="@+id/action_shown_details"
android:title="@string/action_show_details"
android:icon="@drawable/baseline_visibility_24"
app:showAsAction="always"
android:visible="false"/>
<item

View File

@@ -1,9 +1,9 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_unfold"
android:title="@string/action_hide_details"
android:icon="@drawable/ic_baseline_unfold_less_24"
android:id="@+id/action_shown_details"
android:title="@string/action_show_details"
android:icon="@drawable/baseline_visibility_24"
app:showAsAction="always"
android:visible="true"/>
</menu>

View File

@@ -10,9 +10,9 @@
app:showAsAction="always|collapseActionView"
android:visible="false"/>
<item
android:id="@+id/action_unfold"
android:title="@string/action_hide_details"
android:icon="@drawable/ic_baseline_unfold_less_24"
android:id="@+id/action_shown_details"
android:title="@string/action_show_details"
android:icon="@drawable/baseline_visibility_24"
app:showAsAction="always"
android:visible="false"/>
<item

View File

@@ -7,39 +7,42 @@ Heimen Stoffels
Oğuz Ersen
Katharine Chui
mondstern
IllusiveMan196
StoyanDimitrov
Altonss
SlavekB
StoyanDimitrov
IllusiveMan196
Altonss
Michael Moroni
Gediminas Murauskas
Petr Novák
Joel A
Taco
laralem
FC Stegerman
Taco
pfaffenrodt
Nyatsuki
gallegonovato
Nyatsuki
HudobniVolk
Samantaz Fox
arno-github
Ankit Tiwari
Sergio Paredes
Clxff H3r4ld0
Eric
Aayush Gupta
huuhaa
Quentin PAGÈS
(Cliff Heraldo)
Alexander Ivanov
arshbeerSingh
Balázs Meskó
Denis Shilin
Freddo espresso
Quentin PAGÈS
Giovanni Donisi
Projjal Moitra
Alexander Ivanov
arshbeerSingh
Denis Shilin
Freddo espresso
Silvério Santos
Miha Frangež
Eryk Michalak
Arnis Jaundžeikars
Kefir2105
Dan
sr093906
mdvhimself
Katarzyna
@@ -49,12 +52,13 @@ Olivia (Zoe)
betsythefc
waffshappen
Robin
Eric
ati3
enolp
Evgeniy Khramov
Jane Kong
Jean Mareilles
Jiri Grönroos
José Rebelo
K. Herbert
Lisa A.
Mawuena M. KODZO A.
@@ -63,8 +67,8 @@ Still Hsu
String E. Fighter
Tapu
Yurical
Eryk Michalak
rr-vesp
yangyangdaji
丛林意志
alajemba-vik
/usr/local/ΕΨΗΕΛΩΝ
@@ -74,15 +78,20 @@ KovalevArtem
Artem M.
Astrohops1
BMN
balaraz
BootVirtual
Bottan Hermawan
Clonewayx
D. Domig
Diego
Eudes-alencar
Fede Pujol
FineFindus
francescbassas
Jason Li
Jean-Luc Tibaux
Jesse Davids
Kis Dominik
Lukas Grassauer
Luna Jernberg
Marnick L'Eau
@@ -93,6 +102,7 @@ Mohamed A. Salah
the7thNightmare
Rishi Agarwal
Rosdyana Kusuma
Sabri Ünal
umoenks
Simon Rusinov
Siriusmart
@@ -102,16 +112,21 @@ Thomas Bertels
Thomas Cruveilher
Tian Jiale
Tong Liu
Tymofii Lytvynenko
Wanath
Runner
ce i moa
enescan201
Frablock
inesre
lgasp
notlin4
phlostically
pokeghost
sal0max
Ágata Leuck
BmBKun
NamHyeonjeong
Aditya Das
asier123123131
Kevin Sicong Jiang
@@ -123,7 +138,7 @@ Airat
Alexander
sNiXx
Angela Enogieru
AnimeshChatterjee1
Animesh Chatterjee
Artūras Kalenda
Ashish Yadav
Aya Elsaadany
@@ -133,28 +148,36 @@ Brage Nesteby Reitan
Cap Amr Karam
Carlo Maria Cuoghi Barbagli
CherryMonster222
Colgrave
Csaba
Mylou53
danieluhrinyi
Daniele Tricoli
Kasina Dheeraj
Donno
FC Stegerman
Erik Spjelkavik
Flav
Franciszek Stefan
Gael Caraballo
Giacomo Alessandroni
Grzegorz
gneiss15
Hamustra Scans
helzubair
HowITsDone
Hubert Maciejewicz
Izzy
Jacek
Jacopo Gennaro Esposito
Jean-Baptiste
Kung-chih
Karvjorm
polar
Kamborio
krkk
Laura Ferraz
Lucas da Costa
almir992
Manan Jhaveri
Marco
BRBsoup
@@ -166,14 +189,17 @@ Michael Gangolf
Minecraft boom
Mobashir Raihan
Moi Toi
OPADILOP
DivideEtImpera
Nicolas
Nosnahc
pa4k
pbeckmann
Peer Beckmann
vandman
Piotr Strebski
Piotr Zet
Poorva Patidar
Quang Nguyen
Ratnesh
Reza
@@ -188,18 +214,22 @@ SilverFS
Simone Dotto
Subhashish Anand
Subhradeep Bera
Swayam Khare
SziaTomi
Mehedi Hasan
Titas Pažereckas
atakujonc
tkraljevic
Tony C
Tymofii Lytvynenko
Vancha March
tyap-lyap-ivprod
Waldemar Stoczkowski
Yevgeny M
Yusril A
Ziad OUALHADJ
ahmed-awad26
Avik Kundu
ayuyydev
diksha-2911
gbonaspetti
gittyboy-cell
@@ -215,11 +245,12 @@ sergio
080502
Marcus
techwebpd
tjw123hh
Truestorybaby
tygyh
unstartdev
wmilan 17
يوسف لطفي
luoyang3
元气
JaeBeom An
JungHee Lee

View File

@@ -55,7 +55,6 @@
<string name="thumbnailDescription">صورة مصغرة</string>
<string name="starImage">نجم مفضل</string>
<string name="settings">اعدادات</string>
<string name="settings_category_title_ui">واجهة المستخدم</string>
<string name="settings_light_theme">فاتح</string>
<string name="settings_dark_theme">داكن</string>
<string name="settings_card_orientation">اتجاه الباركود</string>
@@ -289,4 +288,4 @@
<string name="chooseValidFromDate">اختر صالح من التاريخ</string>
<string name="validFromSentence">صالح من:<xliff:g>%s</xliff:g></string>
<string name="height">الطول:</string>
</resources>
</resources>

View File

@@ -12,8 +12,8 @@
<string name="star">Добавя към любими</string>
<string name="noBarcode">Липсва щрихкод</string>
<string name="barcodeNoBarcode">Липсва щрихкод</string>
<string name="barcodeType">Вид на щрихкод</string>
<string name="cardId">Идентификатор на карта</string>
<string name="barcodeType">Вид на щрихкода</string>
<string name="cardId">Номер на карта</string>
<string name="note">Бележка</string>
<string name="storeName">Наименование</string>
<string name="noMatchingGiftCards">Няма резултати. Променете критериите за търсене.</string>
@@ -35,19 +35,19 @@
<string name="photos">Снимки</string>
<string name="importOptionApplicationExplanation">Изберете файл на друго приложение.</string>
<string name="noCardExistsError">Картата не е намерена</string>
<string name="updateBarcodeQuestionText">Идентификаторът е променен. Желаете ли с неговата стойност да бъде променен и щрихкодът\?</string>
<string name="updateBarcodeQuestionText">Номерът е променен. Желаете ли същата стойност да бъде приложена и към щрихкода\?</string>
<string name="updateBarcodeQuestionTitle">Обновяване на щрихкода\?</string>
<string name="noCardIdError">Не е въведен идентификатор</string>
<string name="noCardIdError">Не е въведен номер</string>
<string name="noCardsMessage">Добавете карта</string>
<string name="cardShortcut">Пряк път до карта</string>
<string name="addCardTitle">Добавяне на карта</string>
<string name="removeImage">Премахване на изображение</string>
<string name="takePhoto">Снимане</string>
<string name="copy_to_clipboard_multiple_toast">Идентификаторите са копирани в междинната памет</string>
<string name="copy_to_clipboard_multiple_toast">Номерата са копирани в междинната памет</string>
<string name="intent_import_card_from_url_share_multiple_text">Искам да споделя тези карти с вас</string>
<string name="wrongValueForBarcodeType">Стойността е невалидна за избрания вид щрихкод</string>
<string name="wrongValueForBarcodeType">Неприемлива стойност за избрания вид щрихкод</string>
<string name="setBarcodeId">Задаване на стойност</string>
<string name="sameAsCardId">Същата като идентификатора</string>
<string name="sameAsCardId">Като номера</string>
<string name="barcodeId">Стойност на щрихкода</string>
<string name="importLoyaltyCardKeychain">Внасяне от Loyalty Card Keychain</string>
<string name="importFidmeMessage">Изберете файла <i>fidme-export-request-xxxxxx.zip</i>, предварително изнесен от FidMe и ръчно изберете вида на щрихкодовете.
@@ -63,7 +63,7 @@
<string name="turn_flashlight_off">Изключва светкавицата</string>
<string name="turn_flashlight_on">Включва светкавицата</string>
<string name="passwordRequired">Въведете паролата</string>
<string name="points">Точки</string>
<string name="points">точки</string>
<string name="currency">Валута</string>
<string name="balance">Наличност</string>
<string name="errorReadingImage">Изображението е нечетимо</string>
@@ -71,11 +71,11 @@
<string name="moveBarcodeToTopOfScreen">Премества щрихкода най-горе на екрана</string>
<string name="never">Не изтича</string>
<string name="chooseExpiryDate">Определена дата</string>
<string name="expiryDate">Валидна до</string>
<string name="expiryDate">Валидност до</string>
<string name="editBarcode">Редактиране на щрихкод</string>
<string name="card">Карта</string>
<string name="groupsList">Списъци: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Валидна до: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Валидност до: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Изтекла: <xliff:g>%s</xliff:g></string>
<string name="balanceSentence">Наличност: <xliff:g>%s</xliff:g></string>
<string name="noGroups">Докоснете бутона +, за да добавите списък.</string>
@@ -83,19 +83,18 @@
<string name="groups">Списъци</string>
<string name="enter_group_name">Въведете име на списъка</string>
<string name="intent_import_card_from_url_share_text">Искам да споделя тази карта с вас</string>
<string name="settings_display_barcode_max_brightness">Увеличаване на яркостта при видим щрихкод</string>
<string name="settings_keep_screen_on">Поддържане на екрана включен</string>
<string name="settings_disable_lockscreen_while_viewing_card">Предотвратяване на заключване на екрана</string>
<string name="settings_display_barcode_max_brightness">Максимална яркост при видим щрихкод</string>
<string name="settings_keep_screen_on">Без изключване на екрана</string>
<string name="settings_disable_lockscreen_while_viewing_card">Без заключване на екрана</string>
<string name="settings_dark_theme">Тъмна</string>
<string name="settings_light_theme">Светла</string>
<string name="settings_system_theme">Системна</string>
<string name="settings_theme">Тема</string>
<string name="settings_category_title_ui">Потребителски интерфейс</string>
<string name="settings">Настройки</string>
<string name="starImage">Звезда за любимо</string>
<string name="thumbnailDescription">Миниатюра</string>
<string name="copy_to_clipboard_toast">Идентификаторът е копиран в междинната памет</string>
<string name="enterBarcodeInstructions">Въведете идентификатор и или изберете вида на щрихкода, или докоснете бутона „Липсва щрихкод“.</string>
<string name="copy_to_clipboard_toast">Номерът е копиран в междинната памет</string>
<string name="enterBarcodeInstructions">Въведете номер и после или изберете вида на щрихкода, или докоснете бутона „Липсва щрихкод“.</string>
<string name="selectBarcodeTitle">Избиране на щрихкод</string>
<string name="importOptionApplicationButton">Избиране чрез приложение</string>
<string name="importing">Внасяне…</string>
@@ -113,7 +112,7 @@
<string name="scanCardBarcode">Снемане на щрихкод</string>
<string name="editCardTitle">Редактиране на карта</string>
<string name="share">Споделя</string>
<string name="copy_to_clipboard">Копира идентификатора в междинната памет</string>
<string name="copy_to_clipboard">Копира номера в междинната памет</string>
<string name="ok">Добре</string>
<string name="importSuccessful">Данните са внесени</string>
<string name="chooseImportType">Внасяне на данни на</string>
@@ -196,15 +195,15 @@
<string name="and_data_usage">и използване на данни</string>
<string name="help_translate_this_app">Помогнете за превода на приложението</string>
<string name="exportPasswordHint">Въведете парола</string>
<string name="exportPassword">Задаване на парола за защита на изнесеното (по избор)</string>
<string name="setIcon">Задаване на пиктограма</string>
<string name="exportPassword">Защитете архива с парола (по желание)</string>
<string name="setIcon">Задаване на миниатюра</string>
<string name="editGroup">Променяне на списъка: <xliff:g>%s</xliff:g></string>
<string name="group_name_already_in_use">Има списък с това име</string>
<string name="group_updated">Промените са запазени</string>
<string name="selectColor">Избиране на цвят</string>
<string name="group_name_is_empty">Името на списъка не може да е празно</string>
<string name="group_edit">Редактиране на списък</string>
<string name="action_show_details">Повече детайли</string>
<string name="action_show_details">Подробности под картата</string>
<string name="action_hide_details">По-малко детайли</string>
<string name="noGiftCardsGroup">Създайте карти и ги зачислите към списък от тук.</string>
<string name="translate_platform">в Weblate</string>
@@ -212,18 +211,18 @@
<string name="starred">Със звезда</string>
<string name="showMoreInfo">Показване на информация</string>
<string name="options">Настройки</string>
<string name="card_ids_copied">Идентификаторите са копирани</string>
<string name="card_ids_copied">Номерата са копирани</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> точка</item>
<item quantity="other"><xliff:g>%s</xliff:g> точки</item>
</plurals>
<string name="settings_oled_dark">Чисто черен фон за тъмната тема</string>
<string name="settings_oled_dark">Черен фон за тъмната тема</string>
<string name="include_if_asking_support">Ако искате да потърсите поддръжка, включете следната информация:</string>
<string name="settings_card_orientation">Положение на щрихкода</string>
<string name="settings_card_orientation">Завъртане на щрихкода</string>
<string name="settings_follow_system_orientation">Според системата</string>
<string name="settings_portrait_orientation">Портретно</string>
<string name="settings_landscape_orientation">Пейзажно</string>
<string name="settings_lock_on_opening_orientation">Използване на положението, използвано при отваряне на картата</string>
<string name="settings_portrait_orientation">Портрет</string>
<string name="settings_landscape_orientation">Пейзаж</string>
<string name="settings_lock_on_opening_orientation">Като при отваряне на картата</string>
<string name="duplicateCard">Дублиране</string>
<string name="archive">Архивиране</string>
<string name="unarchive">Изваждане от архива</string>
@@ -256,9 +255,9 @@
<string name="importCards">Внасяне на карти</string>
<string name="storageReadPermissionRequired">За това действие е необходимо разрешение за четене на хранилището…</string>
<string name="cameraPermissionRequired">За това действие е необходимо разрешение за достъп до камерата…</string>
<string name="validFromDate">Валидна от</string>
<string name="validFromDate">Валидност от</string>
<string name="anyDate">Без значение от датата</string>
<string name="validFromSentence">Валидна от: <xliff:g>%s</xliff:g></string>
<string name="validFromSentence">Валидност от: <xliff:g>%s</xliff:g></string>
<string name="chooseValidFromDate">Определена дата</string>
<string name="height">Височина:</string>
<string name="switchToFrontImage">Показване на предната страна</string>
@@ -268,4 +267,20 @@
<string name="openBackImageInGalleryApp">Отваряне на изображението на задната страна в приложението галерия</string>
<string name="setBarcodeHeight">Задаване на височина на щрихкода</string>
<string name="donate">Даряване</string>
<string name="icon_header_click_text">Задръжте, за да промените миниатюрата</string>
<string name="show_note">Бележка</string>
<string name="show_balance">Баланс</string>
<string name="show_validity">Валидност</string>
<string name="show_name_below_image_thumbnail">Наименование</string>
<string name="permissionReadCardsLabel">Четене на карти на Catima</string>
<string name="permissionReadCardsDescription">Четене на картите с всички подробности, включително бележки и изображения</string>
<string name="settings_allow_content_provider_read_title">Разрешаване на достъп на други приложения до данните</string>
<string name="settings_display_barcode_max_brightness_summary">Необходимо за работата на някои скенери</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Без заключване на екрана при преглед на карта</string>
<string name="settings_allow_content_provider_read_summary">Приложенията ще искат разрешение, за да получат достъп</string>
<string name="settings_oled_dark_summary">Намалява разхода на батерия от OLED дисплеи</string>
<string name="settings_category_title_cards">Карти</string>
<string name="settings_category_title_general">Общи</string>
<string name="settings_category_title_privacy">Поверителност</string>
<string name="settings_keep_screen_on_summary">Спира автоматичното заключване на екрана при преглед на карти</string>
</resources>

View File

@@ -24,7 +24,6 @@
<string name="settings_light_theme">সাদাটে থিম</string>
<string name="settings_system_theme">যন্ত্রর থিম</string>
<string name="settings_theme">থিম</string>
<string name="settings_category_title_ui">বিভাগ শিরোনাম</string>
<string name="starImage">তারা ছবি</string>
<string name="importCatima">ক্যাতিনা আগম</string>
<string name="importLoyaltyCardKeychain">আমদানি লয়্যালটি কার্ড কীচেন</string>
@@ -69,7 +68,7 @@
<string name="sort_by_expiry">মেয়াদ শেষ করে সাজান</string>
<string name="reverse">...উল্টো ক্রমে</string>
<string name="sort_by">ক্রমানুসার</string>
<string name="noCardExistsError">কার্ডটি পাওয়া যায়নি</string>
<string name="noCardExistsError">কার্ডটি খুঁজে পাওয়া গেল না</string>
<string name="noStoreError">স্টোরেজ ত্রুটি নেই</string>
<string name="card_ids_copied">আইডি কপি করা হয়েছে</string>
<string name="noCardsMessage">কোন কার্ড বার্তা নেই</string>
@@ -97,10 +96,10 @@
<string name="expiryDate">মেয়াদোত্তীর্ণ তারিখ</string>
<string name="noBarcodeFound">কোনো বারকোড পাওয়া যায়নি</string>
<string name="cameraPermissionRequired">এই কাজটির জন্য ক্যামেরা ব্যবহার করার অনুমতি লাগবে…</string>
<string name="noCameraPermissionDirectToSystemSetting">বারকোড স্ক্যান করার জন্য, কাটিমাকে ফোনের ক্যামেরা ব্যবহার করার অনুমতি দিতে হবে। এইখানে টাচ করে আপনার অনুমতি সেটিংস পালটে নিন।</string>
<string name="importOptionApplicationExplanation">আপনার প্রিয় ফাইল ম্যানেজার বা আর যেকোনো অ্যাপ দিয়ে একটি ফাইল খুলুন।</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">মেধাস্বত্ব © ২০১৯-<xliff:g>%d</xliff:g> সিলভিয়া ভান অস</string>
<string name="app_license">কপিলেফট করা মুক্ত সফটওয়্যার, জিপিএলের ৩য় এবং তার অধিক সংস্করণে লাইসেন্স করা</string>
<string name="noCameraPermissionDirectToSystemSetting">বারকোড স্ক্যান করার জন্য, Catima কে ক্যামেরাটি ব্যবহার করার অনুমতি দিতে হবে। এইখানে টাচ করে আপনার অনুমতি সেটিংস পালটে নিন।</string>
<string name="importOptionApplicationExplanation">একটি ফাইল খোলার জন্য যেকোনো অ্যাপ বা আপনার প্রিয় ফাইল ম্যানেজারটি ব্যবহার করুন।</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">মেধাস্বত্ব © 2019<xliff:g>%d</xliff:g> Sylvia van Os</string>
<string name="app_license">কপিলেফট দ্বারা রক্ষা করা মুক্ত সফটওয়্যার, লাইসেন্স করা GPLv3+ এর অধীনে</string>
<string name="enterBarcodeInstructions">আইডিটি লিখুন আর নয় নিচ থেকে একটি বারকোডের প্রকার বা \"কোনো বারকোড নেই\", নির্বাচন করুন।</string>
<plurals name="deleteCardsConfirmation">
<item quantity="one">এই <xliff:g>%d</xliff:g>টি কার্ড কি চিরকালের জন্য মুছে দেবো\?</item>
@@ -114,10 +113,10 @@
<item quantity="one"><xliff:g>%d</xliff:g>টি কার্ড মুছে ফেলুন</item>
<item quantity="other"><xliff:g>%d</xliff:g>টি কার্ড মুছে ফেলুন</item>
</plurals>
<string name="cameraPermissionDeniedTitle">ফোনের ক্যামেরা ব্যবহার করা যাচ্ছে না</string>
<string name="importOptionFilesystemExplanation">ফোনের স্টোরেজ থেকে নির্দিষ্ট একটি ফাইল আনুন।</string>
<string name="cameraPermissionDeniedTitle">ক্যামেরাটি ব্যবহার করা যাচ্ছে না</string>
<string name="importOptionFilesystemExplanation">স্টোরেজ থেকে নির্দিষ্ট একটি ফাইল বাছুন।</string>
<string name="app_libraries">মুক্ত লাইব্রেরি যেগুলি আমার নয়: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="about_title_fmt"><xliff:g id="app_name">%s</xliff:g>টির ব্যাপার</string>
<string name="about_title_fmt"><xliff:g id="app_name">%s</xliff:g>টির সম্পর্ক</string>
<string name="app_resources">মুক্ত সম্পদ যেগুলি আমার নয়: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="thumbnailDescription">থাম্বনেইল</string>
<string name="settings_card_orientation">বারকোড অভিমুখ</string>
@@ -125,29 +124,29 @@
<string name="settings_portrait_orientation">প্রতিকৃতি</string>
<string name="barcodeImageDescriptionWithType">ছবি <xliff:g>%s</xliff:g> বারকোড</string>
<string name="exportName">রপ্তানি</string>
<string name="failedParsingImportUriError">আমদানির ইউআরআই বোঝা যাচ্ছে না</string>
<string name="failedParsingImportUriError">আমদানির URI-টি বোঝা যাচ্ছে না</string>
<string name="importExport">আমদানি/রপ্তানি</string>
<string name="cardShortcut">কার্ড শর্টকাট</string>
<string name="exportFailed">বার করা যাচ্ছে না</string>
<string name="exportFailed">প্তানি করা যাচ্ছে না</string>
<string name="copy_to_clipboard_toast">আইডি ক্লিপবোর্ডে নকল করা হল</string>
<string name="noCardIdError">কোনো আইডি দওয়া হয়নি</string>
<string name="importExportHelp">নিজের তথ্য অন্য কোথাও সংরক্ষণ করে রাখলে পরে সেটা অন্য ফোনে আবার নিয়ে নাওয়া যাই</string>
<string name="importFailed">না যাচ্ছে না</string>
<string name="importExportHelp">নিজের ডেটা অন্য কোথাও সংরক্ষণ করে রাখলে পরে সেটা অন্য ডিভাইসে সরিয়ে নিতে পারবেন</string>
<string name="importFailed">মদানি করা গেল না</string>
<string name="noGiftCardsGroup">কিছু কার্ড বানান আর এই গ্রুপে স্থির করুন।</string>
<string name="scanCardBarcode">বারকোড স্ক্যান করুন</string>
<string name="importSuccessfulTitle">না শেষ</string>
<string name="importFailedTitle">না ব্যর্থ</string>
<string name="exportSuccessfulTitle">বার করা শেষ</string>
<string name="exportFailedTitle">বার করা ব্যর্থ</string>
<string name="importing">া হচ্ছে…</string>
<string name="exporting">বার করা হচ্ছে…</string>
<string name="importSuccessfulTitle">মদানি শেষ</string>
<string name="importFailedTitle">মদানি ব্যর্থ</string>
<string name="exportSuccessfulTitle">রপ্তানি শেষ</string>
<string name="exportFailedTitle">রপ্তানি ব্যর্থ</string>
<string name="importing">মদানি করা হচ্ছে…</string>
<string name="exporting">প্তানি করা হচ্ছে…</string>
<string name="storageReadPermissionRequired">এই কাজটির জন্য ফোনের স্টোরেজ দেখার অনুমতি লাগবে…</string>
<string name="exportOptionExplanation">তথ্যটি আপনার পছন্দের জায়গায় রাখা হবে।</string>
<string name="importOptionFilesystemTitle">ফোনের স্টোরেজ থেকে আুন</string>
<string name="importOptionFilesystemButton">ফোনের স্টোরেজ থেকে</string>
<string name="exportOptionExplanation">ডেটাটি আপনার পছন্দের জায়গায় রাখা হবে।</string>
<string name="importOptionFilesystemTitle">স্টোরেজ থেকে আমদানি করুন</string>
<string name="importOptionFilesystemButton">স্টোরেজ থেকে</string>
<string name="importOptionApplicationTitle">অন্য অ্যাপ ব্যবহার করুন</string>
<string name="app_copyright_old">লয়ালটি কার্ড কিচ্যেনের উপর ভিত্তি করে
\nমেধাস্বত্ব © ২০১৬-২০২০ ব্রানডেন আর্চার</string>
<string name="app_copyright_old">Loyalty Card Keychain এর উপর ভিত্তি করে
\nমেধাস্বত্ব © 20162020 Branden Archer</string>
<string name="selectBarcodeTitle">বারকোড নির্বাচন করুন</string>
<string name="settings">সেটিংস</string>
<string name="settings_dark_theme">অন্ধকার</string>
@@ -260,4 +259,17 @@
<string name="updateBalanceTitle">আপনি কত খরচ করেছেন\?</string>
<string name="updateBalanceHint">পরিমান লিখুন</string>
<string name="currentBalanceSentence">বর্তমান ব্যালেন্স: <xliff:g>%s</xliff:g></string>
<string name="show_name_below_image_thumbnail">ছবির থাম্বনেইল এর নিচে নামটি দেখান</string>
<string name="show_note">নোট দেখান</string>
<string name="show_validity">বৈধতা দেখান</string>
<string name="height">উচ্চতা:</string>
<string name="switchToBackImage">পিছনের ছবিটিতে সুইচ করুন</string>
<string name="switchToFrontImage">সামনের ছবিটিতে সুইচ করুন</string>
<string name="switchToBarcode">বারকোডে সুইচ করুন</string>
<string name="openFrontImageInGalleryApp">সামনের ছবিটি গ্যালারি অ্যাপে খুলুন</string>
<string name="openBackImageInGalleryApp">পিছনের ছবিটি গ্যালারি অ্যাপে খুলুন</string>
<string name="setBarcodeHeight">বারকোডের উচ্চতা সেট করুন</string>
<string name="icon_header_click_text">দীর্ঘক্ষন টাচ করে থাম্বনেইল এডিট করবেন</string>
<string name="show_balance">ব্যালান্স দেখান</string>
<string name="donate">দান করুন</string>
</resources>

View File

@@ -52,4 +52,7 @@
</plurals>
<string name="deleteTitle">কার্ড মুছুন</string>
<string name="noGiftCards">একটি কার্ড যোগ করতে + প্লাস বোতামে ক্লিক করুন বা ⋮ মেনু থেকে আমদানি করুন।</string>
<string name="cardShortcut">কার্ড শর্টকাট</string>
<string name="noCardsMessage">প্রথমে একটি কার্ড যোগ করুন</string>
<string name="card_ids_copied">আইডি কপি করা হয়েছে</string>
</resources>

View File

@@ -24,7 +24,6 @@
<string name="settings_light_theme">Svjetlo</string>
<string name="settings_system_theme">Sistem</string>
<string name="settings_theme">Tema</string>
<string name="settings_category_title_ui">Korisničko okruženje</string>
<string name="starImage">Omiljena zvijezda</string>
<string name="importCatima">Uvezi iz Catima</string>
<string name="importLoyaltyCardKeychain">Uvezi iz Loyalty Card Keychain</string>
@@ -111,4 +110,4 @@
<string name="importOptionApplicationExplanation">Koristi bilo koju aplikaciju ili Vašu omiljenu aplikaciju da bi otvorili file.</string>
<string name="importOptionApplicationButton">Koristi drugu aplikaciju</string>
<string name="about">O</string>
</resources>
</resources>

View File

@@ -85,7 +85,6 @@
<string name="settings_light_theme">Světlý</string>
<string name="settings_system_theme">Podle systému</string>
<string name="settings_theme">Vzhled</string>
<string name="settings_category_title_ui">Uživatelské rozhraní</string>
<string name="settings">Nastavení</string>
<string name="card">Karta</string>
<string name="balanceSentence">Zůstatek: <xliff:g>%s</xliff:g></string>
@@ -203,7 +202,7 @@
<string name="exportPassword">Nastavení hesla pro ochranu exportu (volitelné)</string>
<string name="exportPasswordHint">Zadejte heslo</string>
<string name="selectColor">Vybrat barvu</string>
<string name="setIcon">Nastavit ikonu</string>
<string name="setIcon">Nastavit miniaturu</string>
<string name="group_edit">Upravit skupinu</string>
<string name="group_name_already_in_use">Název skupiny je již použitý</string>
<string name="group_name_is_empty">Název skupiny nemůže být prázdný</string>
@@ -275,5 +274,20 @@
<string name="openBackImageInGalleryApp">Otevřít zadní obrázek v galerii</string>
<string name="setBarcodeHeight">Nastavit výšku čárového kódu</string>
<string name="donate">Přispět</string>
<string name="icon_header_click_text">Dlouhým stisknutím ikonu upravíte</string>
<string name="icon_header_click_text">Dlouhým stisknutím miniaturu upravíte</string>
<string name="show_name_below_image_thumbnail">Zobrazit název pod obrázkem miniatury</string>
<string name="show_note">Zobrazit poznámku</string>
<string name="show_validity">Zobrazit platnost</string>
<string name="show_balance">Zobrazit zůstatek</string>
<string name="permissionReadCardsDescription">Číst vaše karty a všechny jejich podrobnosti, včetně poznámek a obrázků</string>
<string name="settings_allow_content_provider_read_summary">Aplikace stále budou muset požádat o povolení k poskytnutí přístupu</string>
<string name="permissionReadCardsLabel">Číst karty Catima</string>
<string name="settings_allow_content_provider_read_title">Umožnit ostatním aplikacím přístup k mým datům</string>
<string name="settings_keep_screen_on_summary">Zakáže časový limit obrazovky při prohlížení karty</string>
<string name="settings_oled_dark_summary">Snižuje používání baterie na displejích OLED</string>
<string name="settings_category_title_privacy">Soukromí</string>
<string name="settings_display_barcode_max_brightness_summary">Nezbytné pro některé skenery, aby fungovaly</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Zakáže zamčení obrazovky při prohlížení karty</string>
<string name="settings_category_title_cards">Karty</string>
<string name="settings_category_title_general">Obecné</string>
</resources>

View File

@@ -48,7 +48,6 @@
<string name="settings_dark_theme">Mørk</string>
<string name="settings_light_theme">Lys</string>
<string name="settings_theme">Tema</string>
<string name="settings_category_title_ui">Brugergrænseflade</string>
<string name="settings">Indstillinger</string>
<string name="starImage">Favorit stjerne</string>
<string name="thumbnailDescription">Miniaturebillede til kort</string>
@@ -89,4 +88,4 @@
<string name="moveDown">Bevæger sig nedad</string>
<string name="leaveWithoutSaveTitle">Afslut</string>
<string name="addManually">Indtast kort-ID manuelt</string>
</resources>
</resources>

View File

@@ -50,7 +50,6 @@
<string name="copy_to_clipboard_toast">ID in die Zwischenablage kopiert</string>
<string name="thumbnailDescription">Vorschaubild</string>
<string name="settings">Einstellungen</string>
<string name="settings_category_title_ui">Benutzeroberfläche</string>
<string name="settings_display_barcode_max_brightness">Displayhelligkeit in der Barcodeansicht erhöhen</string>
<string name="exportSuccessful">Daten exportiert</string>
<string name="importSuccessful">Daten importiert</string>
@@ -204,7 +203,7 @@
<string name="editGroup">Gruppe wird bearbeitet: <xliff:g>%s</xliff:g></string>
<string name="group_edit">Gruppe bearbeiten</string>
<string name="noGiftCardsGroup">Erstelle einige Karten und ordne sie dann hier der Gruppe zu.</string>
<string name="setIcon">Symbol einstellen</string>
<string name="setIcon">Vorschau setzen</string>
<string name="selectColor">Farbe auswählen</string>
<string name="action_show_details">Details anzeigen</string>
<string name="action_hide_details">Details ausblenden</string>
@@ -260,4 +259,28 @@
<string name="validFromSentence">Gültig ab: <xliff:g>%s</xliff:g></string>
<string name="chooseValidFromDate">Gültig-ab-Datum wählen</string>
<string name="anyDate">Beliebiges Datum</string>
<string name="icon_header_click_text">Langes Drücken zum Bearbeiten der Vorschau</string>
<string name="switchToBarcode">Umschalten auf Barcode</string>
<string name="openFrontImageInGalleryApp">Vorderes Bild in der Galerie öffnen</string>
<string name="openBackImageInGalleryApp">Hinteres Bild in der Galerie öffnen</string>
<string name="height">Höhe:</string>
<string name="switchToFrontImage">Zum vorderen Bild wechseln</string>
<string name="switchToBackImage">Zum hinteren Bild wechseln</string>
<string name="setBarcodeHeight">Barcode-Höhe einstellen</string>
<string name="donate">Spenden</string>
<string name="show_note">Notiz anzeigen</string>
<string name="show_balance">Betrag anzeigen</string>
<string name="show_validity">Gültigkeitsdauer anziegen</string>
<string name="show_name_below_image_thumbnail">Namen unter Bildvorschau anzeigen</string>
<string name="settings_allow_content_provider_read_title">Anderen Anwendungen den Zugriff auf meine Daten gestatten</string>
<string name="permissionReadCardsLabel">Catima-Karten lesen</string>
<string name="permissionReadCardsDescription">Lesen Sie Ihre Karten mit allen Details, einschließlich Notizen und Bildern</string>
<string name="settings_allow_content_provider_read_summary">Anwendungen müssen weiterhin eine Genehmigung beantragen, um Zugriff zu erhalten</string>
<string name="settings_display_barcode_max_brightness_summary">Erforderlich für das Funktionieren einiger Scanner</string>
<string name="settings_keep_screen_on_summary">Deaktiviert die Bildschirmzeitüberschreitung beim Anzeigen einer Karte</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Deaktiviert die Bildschirmsperre während der Anzeige einer Karte</string>
<string name="settings_oled_dark_summary">Reduziert den Batterieverbrauch bei OLED-Displays</string>
<string name="settings_category_title_cards">Karten</string>
<string name="settings_category_title_privacy">Datenschutz</string>
<string name="settings_category_title_general">Allgemein</string>
</resources>

View File

@@ -46,7 +46,6 @@
<string name="copy_to_clipboard_toast">Ο κωδικός αντιγράφτηκε στο πρόχειρο</string>
<string name="thumbnailDescription">Μικρογραφία</string>
<string name="settings">Ρυθμίσεις</string>
<string name="settings_category_title_ui">Διεπαφή χρήστη</string>
<string name="settings_dark_theme">Σκοτεινό</string>
<string name="settings_light_theme">Φωτεινό</string>
<string name="settings_system_theme">Σύστημα</string>
@@ -254,4 +253,4 @@
<string name="newBalanceSentence">Νέο υπόλοιπο: <xliff:g>%s</xliff:g></string>
<string name="failedToOpenUrl">Εγκαταστήστε έναν περιηγητή πρώτα</string>
<string name="welcome">Καλώς ήρθατε στο Catima</string>
</resources>
</resources>

View File

@@ -5,7 +5,6 @@
<string name="noBarcode">Sen strekokodo</string>
<string name="barcodeType">Tipo de strekokodo</string>
<string name="cardId">Identigilo de karto</string>
<string name="settings_category_title_ui">Fasado</string>
<string name="settings">Agordoj</string>
<string name="selectBarcodeTitle">Elekti strekokodon</string>
<string name="debug_version_fmt">Versio: <xliff:g id="version">%s</xliff:g></string>
@@ -82,4 +81,9 @@
<string name="intent_import_card_from_url_share_text">Mi deziras dividi karto kun vi</string>
<string name="exportSuccessful">Karto datumo eksportita</string>
<string name="noGroupCards">Ĉi tiu grupo ne enhavas ajnan kartoj</string>
</resources>
<string name="noGiftCards">Klavu la \"+\" butonon por aldoni karton, aŭ importu uzi menuo \" ⋮\".</string>
<plurals name="selectedCardCount">
<item quantity="one"><xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%d</xliff:g> elektita</item>
<item quantity="other"><xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%d</xliff:g> elektitaj</item>
</plurals>
</resources>

View File

@@ -43,7 +43,6 @@
<string name="about_title_fmt">Acerca de <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Versión: <xliff:g id="version">%s</xliff:g></string>
<string name="settings">Ajustes</string>
<string name="settings_category_title_ui">Interfaz de usuario</string>
<string name="settings_display_barcode_max_brightness">Iluminar vista del código de barras</string>
<string name="exportSuccessful">Datos exportados</string>
<string name="importSuccessful">Datos importados</string>
@@ -216,7 +215,7 @@
<string name="translate_platform">en Weblate</string>
<string name="action_show_details">Mostrar detalles</string>
<string name="selectColor">Seleccione el color</string>
<string name="setIcon">Establecer icono</string>
<string name="setIcon">Establecer una miniatura</string>
<string name="sort">Ordenar</string>
<string name="sort_by">Ordenar por</string>
<string name="rate_this_app">Califica esta aplicación</string>
@@ -275,4 +274,20 @@
<string name="donate">Donar</string>
<string name="switchToBarcode">Cambiar a código de barras</string>
<string name="switchToBackImage">Cambiar a imagen trasera</string>
<string name="icon_header_click_text">Pulsación larga para editar la miniatura</string>
<string name="show_name_below_image_thumbnail">Mostrar el nombre debajo de la miniatura de la imagen</string>
<string name="show_note">Mostrar la nota</string>
<string name="show_validity">Mostrar la validez</string>
<string name="show_balance">Mostrar el saldo</string>
<string name="permissionReadCardsLabel">Leer Tarjetas Catima</string>
<string name="permissionReadCardsDescription">Lee tus tarjetas y todos sus detalles, incluidas notas e imágenes</string>
<string name="settings_allow_content_provider_read_title">Permite a otras aplicaciones acceder a mis datos</string>
<string name="settings_display_barcode_max_brightness_summary">Necesario para que funcione en algunos escáneres</string>
<string name="settings_keep_screen_on_summary">Deshabilita el tiempo de espera de la pantalla mientras se ve una tarjeta</string>
<string name="settings_allow_content_provider_read_summary">Las aplicaciones todavía tendrán que solicitar permiso para conseguir acceso</string>
<string name="settings_oled_dark_summary">Reduce el uso de batería en pantallas OLED</string>
<string name="settings_category_title_cards">Tarjetas</string>
<string name="settings_category_title_general">General</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Deshabilita el bloqueo de pantalla mientras se ve una tarjeta</string>
<string name="settings_category_title_privacy">Privacidad</string>
</resources>

View File

@@ -72,7 +72,6 @@
<string name="settings_light_theme">Vaalea</string>
<string name="settings_system_theme">Järjestelmän oletus</string>
<string name="settings_theme">Teema</string>
<string name="settings_category_title_ui">Käyttöliittymä</string>
<string name="settings">Asetukset</string>
<string name="starImage">Suosikkitähti</string>
<string name="thumbnailDescription">Pienoiskuva</string>
@@ -260,4 +259,4 @@
<string name="anyDate">Mikä tahansa päivämäärä</string>
<string name="chooseValidFromDate">Valitse kelvollinen päivämäärä</string>
<string name="validFromSentence">Kelvollinen alkaen: <xliff:g>%s</xliff:g></string>
</resources>
</resources>

View File

@@ -46,7 +46,6 @@
<string name="copy_to_clipboard_toast">Identifiant copié dans le presse-papiers</string>
<string name="thumbnailDescription">Miniature</string>
<string name="settings">Paramètres</string>
<string name="settings_category_title_ui">Interface utilisateur</string>
<string name="settings_display_barcode_max_brightness">Augmenter la luminosité du code-barres</string>
<string name="exportSuccessful">Données exportées</string>
<string name="importSuccessful">Données importées</string>
@@ -208,7 +207,7 @@
<string name="group_name_already_in_use">Nom de groupe déjà utilisé</string>
<string name="group_updated">Groupe mis à jour</string>
<string name="group_name_is_empty">Le nom du groupe ne peut pas être vide</string>
<string name="setIcon">Définir licône</string>
<string name="setIcon">Définir la vignette</string>
<string name="selectColor">Sélectionnez la couleur</string>
<string name="action_show_details">Afficher les détails</string>
<string name="action_hide_details">Masquer les détails</string>
@@ -275,4 +274,20 @@
<string name="openBackImageInGalleryApp">Ouvrir l\'image arrière dans l\'application galerie</string>
<string name="setBarcodeHeight">Définir la hauteur du code-barres</string>
<string name="donate">Faire un don</string>
<string name="icon_header_click_text">Appuyez longuement pour modifier la vignette</string>
<string name="show_name_below_image_thumbnail">Afficher le nom sous la vignette de l\'image</string>
<string name="show_note">Afficher la note</string>
<string name="show_validity">Afficher la validité</string>
<string name="show_balance">Afficher le solde</string>
<string name="permissionReadCardsLabel">Lire les cartes Catima</string>
<string name="permissionReadCardsDescription">Lisez vos cartes et tous ses détails, y compris les notes et les images</string>
<string name="settings_allow_content_provider_read_title">Autoriser d\'autres applications à accéder à mes données</string>
<string name="settings_allow_content_provider_read_summary">Les applications devront toujours demander une autorisation pour obtenir l\'accès</string>
<string name="settings_display_barcode_max_brightness_summary">Nécessaire au fonctionnement de certains scanneurs</string>
<string name="settings_keep_screen_on_summary">Désactive la temporisation de l\'écran lors de la visualisation d\'une carte</string>
<string name="settings_oled_dark_summary">Réduit l\'utilisation de la batterie sur les écrans OLED</string>
<string name="settings_category_title_cards">Cartes</string>
<string name="settings_category_title_general">Généraux</string>
<string name="settings_category_title_privacy">Confidentialité</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Désactive le verrouillage de l\'écran pendant la visualisation d\'une carte</string>
</resources>

View File

@@ -68,7 +68,6 @@
<string name="cameraPermissionDeniedTitle">हम कैमरा तक पहुँच नहीं सकते</string>
<string name="noCameraPermissionDirectToSystemSetting">बारकोड स्कैन करने के लिए,को आपके कैमरा का इस्तेमाल करना होगा। इजाज़त कि व्यवस्था (सेटिंग) बदलने के लिए यहाँ दबायें।</string>
<string name="importOptionApplicationExplanation">फाइल खोलने के लिए कोई भी ऐप या अपना पसंदिता फाइल मैनेजर का इस्तेमाल करे।</string>
<string name="settings_category_title_ui">उपयोक्‍ता अंतरापृष्‍ठ (यूजर इंटरफ़ेस)</string>
<string name="settings_theme">विषय</string>
<string name="barcodeType">बारकोड का प्रकार</string>
<string name="barcodeNoBarcode">कोई बारकोड नहीं है</string>
@@ -146,4 +145,4 @@
<string name="about_title_fmt"><xliff:g id="app_name">%s</xliff:g> के बारे में</string>
<string name="debug_version_fmt">संस्करण: <xliff:g id="version">%s</xliff:g></string>
<string name="copy_to_clipboard_toast">आई डी क्लिपबोर्ड पर कॉपी किया गया</string>
</resources>
</resources>

View File

@@ -21,8 +21,8 @@
<string name="star">Dodaj u favorite</string>
<string name="action_add">Dodaj</string>
<string name="storeName">Ime</string>
<string name="note">Napomena</string>
<string name="noMatchingGiftCards">Nema rezultata. Pokušaj promijeniti pretragu.</string>
<string name="note">Bilješka</string>
<string name="noMatchingGiftCards">Nema rezultata. Pokušajte promijeniti pretraživanje.</string>
<string name="cardId">ID kartice</string>
<string name="barcodeType">Vrsta crtičnog koda</string>
<string name="barcodeNoBarcode">Ne postoji crtični kod</string>
@@ -60,7 +60,6 @@
<string name="addManually">Ručno upiši ID</string>
<string name="thumbnailDescription">Sličica</string>
<string name="starImage">Omiljena zvijezda</string>
<string name="settings_category_title_ui">Korisničko sučelje</string>
<string name="exportSuccessful">Podaci su izvezeni</string>
<string name="settings_keep_screen_on">Ostavi ekran uključen</string>
<string name="settings_disable_lockscreen_while_viewing_card">Spriječi zaključavanje ekrana</string>
@@ -100,7 +99,7 @@
<string name="action_hide_details">Sakrij detalje</string>
<string name="importCards">Uvezi kartice</string>
<string name="selectColor">Odaberi boju</string>
<string name="setIcon">Postavi ikonu</string>
<string name="setIcon">Postavi sličicu</string>
<string name="settings_catima_theme">Catima</string>
<string name="settings_green_theme">Zelena</string>
<string name="settings_grey_theme">Siva</string>
@@ -147,7 +146,7 @@
<string name="noBarcodeFound">Nijedan crtični kod nije pronađen</string>
<string name="balance">Saldo</string>
<string name="chooseImportType">Uvezi podatke iz</string>
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
<string name="app_loyalty_card_keychain">Privjesak za Karticu Vjernosti</string>
<string name="parsingBalanceFailed">Čini se da <xliff:g>%s</xliff:g> nije ispravni saldo.</string>
<string name="privacy_policy_popup_text">Obavijest o politici privatnosti (obavezna za neke trgovine aplikacija):
\n
@@ -275,4 +274,9 @@
<item quantity="few">Pogledaj arhivu (<xliff:g>%1$d</xliff:g> kartice)</item>
<item quantity="other">Pogledaj arhivu (<xliff:g>%1$d</xliff:g> kartica)</item>
</plurals>
</resources>
<string name="icon_header_click_text">Dugim pritiskom uredite sličicu</string>
<string name="show_name_below_image_thumbnail">Prikaži ime ispod sličice</string>
<string name="show_note">Prikaži bilješku</string>
<string name="show_balance">Prikaži saldo</string>
<string name="show_validity">Prikaži valjanost</string>
</resources>

View File

@@ -96,7 +96,6 @@
<string name="copy_to_clipboard_toast">Azonosító vágólapra másolva</string>
<string name="starImage">Kedvencek csillag</string>
<string name="settings">Beállítások</string>
<string name="settings_category_title_ui">Felhasználói felület</string>
<string name="settings_theme">Téma</string>
<string name="settings_system_theme">Rendszer</string>
<string name="settings_light_theme">Világos</string>
@@ -164,7 +163,7 @@
<string name="settings_locale">Nyelv</string>
<string name="settings_system_locale">Rendszer</string>
<string name="selectColor">Szín kiválasztása</string>
<string name="setIcon">Ikon beállítása</string>
<string name="setIcon">Miniatűr beállítása</string>
<string name="settings_pink_theme">Rózsaszín</string>
<string name="settings_magenta_theme">Bíbor</string>
<string name="settings_violet_theme">Ibolya</string>
@@ -268,4 +267,20 @@
<string name="openBackImageInGalleryApp">Hátulnézeti kép megnyitása a galéria alkalmazásban</string>
<string name="openFrontImageInGalleryApp">Elölnézeti kép megnyitása a galéria alkalmazásban</string>
<string name="setBarcodeHeight">Vonalkód magasságának megadása</string>
<string name="icon_header_click_text">Hosszan nyomja meg a miniatűr szerkesztéséhez</string>
<string name="show_note">Megjegyzés megjelenítése</string>
<string name="show_balance">Egyenleg megjelenítése</string>
<string name="permissionReadCardsLabel">Catima kártyák olvasása</string>
<string name="permissionReadCardsDescription">Olvassa el a kártyáit és annak minden részletét, beleértve a jegyzeteket és a képeket is</string>
<string name="show_validity">Érvényesség megjelenítése</string>
<string name="show_name_below_image_thumbnail">Név megjelenítése a kép miniatűrje alatt</string>
<string name="settings_display_barcode_max_brightness_summary">Szükséges egyes szkennerek működéséhez</string>
<string name="settings_oled_dark_summary">Csökkenti az OLED kijelzők akkumulátor-használatát</string>
<string name="settings_category_title_privacy">Adatvédelem</string>
<string name="settings_allow_content_provider_read_title">Engedélyezem más alkalmazások számára az adataimhoz való hozzáférést</string>
<string name="settings_category_title_cards">Kártyák</string>
<string name="settings_category_title_general">Általános</string>
<string name="settings_keep_screen_on_summary">Letiltja a képernyő időtúllépését a kártya megtekintése közben</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Letiltja a képernyő időtúllépését a kártya megjelenítése közben</string>
<string name="settings_allow_content_provider_read_summary">Az alkalmazásoknak továbbra is engedélyt kell kérniük a hozzáféréshez</string>
</resources>

View File

@@ -29,7 +29,6 @@
<string name="barcodeNoBarcode">Tidak ada barcode</string>
<string name="cancel">Batalkan</string>
<string name="importExport">Impor/Ekspor</string>
<string name="settings_category_title_ui">Tampilan Pengguna</string>
<string name="settings_theme">Tema</string>
<string name="all">Semua</string>
<string name="leaveWithoutSaveTitle">Keluar</string>
@@ -198,7 +197,7 @@
<string name="selectColor">Pilih warna</string>
<string name="noGiftCardsGroup">Buat beberapa kartu, kemudian masukkan mereka ke grup di sini.</string>
<string name="group_name_already_in_use">Nama grup telah dipakai</string>
<string name="setIcon">Atur ikon</string>
<string name="setIcon">Atur thumbnail</string>
<string name="settings_oled_dark">Latar belakang gelap gulita untuk tema gelap</string>
<string name="group_edit">Sunting Grup</string>
<string name="group_name_is_empty">Nama grup tidak boleh kosong</string>
@@ -250,8 +249,7 @@
<string name="cameraPermissionRequired">Berikan izin untuk mengakses kamera anda…</string>
<string name="storageReadPermissionRequired">Berikan izin untuk membaca penyimpanan anda…</string>
<string name="validFromDate">Valid dari</string>
<string name="validFromSentence">Valid dari:
\n<xliff:g>%s</xliff:g></string>
<string name="validFromSentence">Valid dari: <xliff:g>%s</xliff:g></string>
<string name="anyDate">Kapan pun</string>
<string name="chooseValidFromDate">Pilih valid dari tanggal</string>
<string name="height">Tinggi:</string>
@@ -262,4 +260,20 @@
<string name="openBackImageInGalleryApp">Buka gambar dibelakang di galeri app</string>
<string name="setBarcodeHeight">Atur tinggi kode batang</string>
<string name="donate">Donasi</string>
<string name="show_validity">Tunjukkan validitas</string>
<string name="show_balance">Tunjukkan keseimbangan</string>
<string name="icon_header_click_text">Tekan lama untuk mengedit thumbnail</string>
<string name="show_name_below_image_thumbnail">Tampilkan nama di bawah thumbnail gambar</string>
<string name="show_note">Tampilkan catatan</string>
<string name="permissionReadCardsLabel">Baca Kartu Catima</string>
<string name="permissionReadCardsDescription">Baca kartu Anda dan semua detailnya, termasuk catatan dan gambar</string>
<string name="settings_allow_content_provider_read_title">Izinkan aplikasi lain mengakses data saya</string>
<string name="settings_allow_content_provider_read_summary">Aplikasi masih harus meminta izin untuk diberikan akses</string>
<string name="settings_keep_screen_on_summary">Menonaktifkan batas waktu layar saat melihat kartu</string>
<string name="settings_oled_dark_summary">Mengurangi penggunaan baterai pada layar OLED</string>
<string name="settings_category_title_general">Umum</string>
<string name="settings_display_barcode_max_brightness_summary">Diperlukan agar beberapa pemindai dapat berfungsi</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Menonaktifkan kunci layar saat melihat kartu</string>
<string name="settings_category_title_cards">Kartu</string>
<string name="settings_category_title_privacy">Privasi</string>
</resources>

View File

@@ -59,7 +59,6 @@
<string name="settings_theme">Þema</string>
<string name="app_license">Copylefted frítt hugbúnaður, leyfi GPLv3+</string>
<string name="noBarcodeFound">Nei strikamerkið var komist</string>
<string name="settings_category_title_ui">Notandi tengi</string>
<string name="settings_system_theme">Kerfi</string>
<string name="settings_dark_theme">Dökk</string>
<string name="settings_display_barcode_max_brightness">Bjartari strikamerkið skoða</string>

View File

@@ -52,7 +52,6 @@
<string name="copy_to_clipboard_toast">Codice copiato negli appunti</string>
<string name="thumbnailDescription">Miniatura</string>
<string name="settings">Impostazioni</string>
<string name="settings_category_title_ui">Interfaccia utente</string>
<string name="settings_theme">Tema</string>
<string name="settings_system_theme">Sistema</string>
<string name="settings_light_theme">Chiaro</string>
@@ -209,7 +208,7 @@
<string name="group_name_already_in_use">Il nome del gruppo è già in uso</string>
<string name="group_updated">Gruppo aggiornato</string>
<string name="selectColor">Seleziona il colore</string>
<string name="setIcon">Imposta l\'icona</string>
<string name="setIcon">Imposta l\'immagine</string>
<string name="action_show_details">Mostra i dettagli</string>
<string name="action_hide_details">Nascondi i dettagli</string>
<string name="translate_platform">su Weblate</string>
@@ -238,9 +237,9 @@
<string name="settings_lock_on_opening_orientation">Blocca sull\'orientamento utilizzato all\'apertura della carta</string>
<string name="failedLaunchingPhotoPicker">Impossibile trovare un\'app galleria supportata</string>
<plurals name="groupCardCountWithArchived">
<item quantity="one"><xliff:g>%1$d</xliff:g> scheda (<xliff:g id="archivedCount">%2$d</xliff:g> archiviata)</item>
<item quantity="many"><xliff:g>%1$d</xliff:g> schede (<xliff:g id="archivedCount">%2$d</xliff:g> archiviate)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> schede (<xliff:g id="archivedCount">%2$d</xliff:g> archiviate)</item>
<item quantity="one"><xliff:g>%1$d</xliff:g> carta (<xliff:g id="archivedCount">%2$d</xliff:g> archiviata)</item>
<item quantity="many"><xliff:g>%1$d</xliff:g> carte (<xliff:g id="archivedCount">%2$d</xliff:g> archiviate)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> carte (<xliff:g id="archivedCount">%2$d</xliff:g> archiviate)</item>
</plurals>
<string name="previousCard">Precedente</string>
<string name="nextCard">Successivo</string>
@@ -275,4 +274,20 @@
<string name="donate">Dona</string>
<string name="openBackImageInGalleryApp">Apri l\'immagine posteriore nell\'app Galleria</string>
<string name="setBarcodeHeight">Imposta l\'altezza del codice a barre</string>
<string name="icon_header_click_text">Premi a lungo per modificare l\'immagine</string>
<string name="show_note">Mostra nota</string>
<string name="show_balance">Mostra bilancio</string>
<string name="show_validity">Mostra validità</string>
<string name="show_name_below_image_thumbnail">Mostra il nome sotto l\'immagine</string>
<string name="permissionReadCardsLabel">Leggi le carte Catima</string>
<string name="settings_allow_content_provider_read_summary">Le applicazioni dovranno comunque richiedere l\'autorizzazione per ottenere l\'accesso</string>
<string name="settings_allow_content_provider_read_title">Consenti ad altre applicazioni di accedere ai miei dati</string>
<string name="permissionReadCardsDescription">Leggi le tue carte e tutti i suoi dettagli, comprese le note e le immagini</string>
<string name="settings_display_barcode_max_brightness_summary">Necessario per il funzionamento di alcuni scanner</string>
<string name="settings_keep_screen_on_summary">Disattiva il timeout dello schermo durante la visualizzazione di una carta</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Disattiva il blocco dello schermo durante la visualizzazione di una carta</string>
<string name="settings_oled_dark_summary">Riduce il consumo della batteria sui display OLED</string>
<string name="settings_category_title_cards">Carte</string>
<string name="settings_category_title_general">Generali</string>
<string name="settings_category_title_privacy">Privacy</string>
</resources>

View File

@@ -60,7 +60,6 @@
<string name="settings_light_theme">ライト</string>
<string name="settings_system_theme">システムに従う</string>
<string name="settings_theme">テーマ</string>
<string name="settings_category_title_ui">外観</string>
<string name="settings">設定</string>
<string name="starImage">お気に入りのスター</string>
<string name="thumbnailDescription">サムネイル</string>
@@ -205,4 +204,4 @@
<string name="group_name_is_empty">グループ名を入力してください</string>
<string name="shortcutSelectCard">カードを選択してください</string>
<string name="translate_platform">on Weblate</string>
</resources>
</resources>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="addManually">직접 카드 ID 입력</string>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
<string name="addManually">직접 ID 입력</string>
<string name="groupsList">그룹: <xliff:g>%s</xliff:g></string>
<string name="all">모두</string>
<string name="groups">그룹</string>
@@ -11,9 +11,8 @@
<string name="about_title_fmt"><xliff:g id="app_name">%s</xliff:g> 정보</string>
<string name="settings_system_theme">시스템</string>
<string name="settings_theme">테마</string>
<string name="settings_category_title_ui">사용자 인터페이스</string>
<string name="settings">설정</string>
<string name="enterBarcodeInstructions">카드 ID를 입력하고 카드에서 사용하는 바코드 이미지를 선택하세요. 바코드를 사용하지 않는 경우 “이 카드는 바코드가 없음”을 선택하세요.</string>
<string name="enterBarcodeInstructions">ID를 입력하고 아래에서 바코드 유형을 선택하거나 \"바코드가 없습니다\"를 선택하십시오.</string>
<string name="selectBarcodeTitle">바코드 선택</string>
<string name="about">정보</string>
<string name="exporting">내보내는 중…</string>
@@ -28,8 +27,8 @@
<string name="sendLabel">보내기…</string>
<string name="share">공유</string>
<string name="copy_to_clipboard">ID를 클립보드에 복사</string>
<string name="ok">확인</string>
<string name="confirm">확인</string>
<string name="ok">OK</string>
<string name="confirm">확인하다</string>
<string name="delete">삭제</string>
<string name="edit">편집</string>
<string name="save">저장</string>
@@ -42,12 +41,10 @@
<string name="cardId">카드 ID</string>
<string name="note">노트</string>
<string name="noMatchingGiftCards">아무것도 찾지 못했습니다. 검색어를 바꿔 보세요.</string>
<string name="noGiftCards">먼저 \'+\' 버튼을 눌러 카드를 추가하세요.
\n
\nCatima는 카드를 장치에 보관하므로 어디서든 사용할 수 있습니다.</string>
<string name="noGiftCards">+ 더하기 버튼을 클릭하여 카드를 추가하거나 ⋮ 메뉴에서 가져옵니다.</string>
<string name="action_add">추가</string>
<string name="action_search">검색</string>
<string name="copy_to_clipboard_toast">카드 ID를 클립보드에 복사</string>
<string name="copy_to_clipboard_toast">클립보드에 ID 복사</string>
<string name="importOptionApplicationTitle">다른 앱 사용</string>
<string name="importOptionFilesystemExplanation">파일 시스템에서 파일을 선택합니다.</string>
<string name="importOptionFilesystemTitle">파일 시스템에서 가져오기</string>
@@ -60,14 +57,14 @@
<string name="importSuccessfulTitle">가져오기 완료</string>
<string name="noCardIdError">ID를 입력하지 않았습니다</string>
<string name="storeName">이름</string>
<string name="thumbnailDescription">카드 섬네일</string>
<string name="thumbnailDescription">네일</string>
<string name="importOptionApplicationButton">다른 앱 사용</string>
<string name="failedParsingImportUriError">가져온 URI를 분석할 수 없음</string>
<string name="noCardExistsError">해당 카드를 찾을 수 없습니다</string>
<string name="moveUp">목록에서 위로 옮기기</string>
<string name="leaveWithoutSaveTitle">저장하지 않고 종료</string>
<string name="moveDown">목록에서 아래로 옮기기</string>
<string name="noStoreError">매장을 입력지 않</string>
<string name="moveUp">위로 이동</string>
<string name="leaveWithoutSaveTitle">종료</string>
<string name="moveDown">아래로 이동</string>
<string name="noStoreError">이름이 입력지 않았습니다</string>
<string name="starImage">즐겨찾기 별</string>
<string name="settings_display_barcode_max_brightness">바코드를 표시할 때 화면 밝기 높이기</string>
<string name="deleteConfirmation">정말 이 카드를 삭제하시겠습니까\?</string>
@@ -77,4 +74,195 @@
</plurals>
<string name="noGiftCardsGroup">카드를 몇 장 만든 다음 여기에서 그룹에 할당합니다.</string>
<string name="noCardsMessage">먼저 카드 추가</string>
</resources>
<string name="leaveWithoutSaveConfirmation">저장하지 않고 나가시겠습니까\?</string>
<string name="intent_import_card_from_url_share_text">너의 카드를 공유하고 싶습니다</string>
<plurals name="groupCardCount">
<item quantity="other"><xliff:g>%d</xliff:g> 카드</item>
</plurals>
<string name="group_name_already_in_use">이미 사용 중인 그룹 이름</string>
<string name="addFromImage">갤러리에서 이미지 선택</string>
<string name="expiryStateSentenceExpired">만료: <xliff:g>%s</xliff:g></string>
<string name="card">카드</string>
<string name="editBarcode">바코드 편집</string>
<string name="expiryDate">만료일</string>
<string name="never">절대</string>
<string name="intent_import_card_from_url_share_multiple_text">나는 당신과 몇 가지 카드를 공유하고 싶습니다</string>
<string name="removeImage">이미지 삭제</string>
<string name="takePhoto">사진을 찍다</string>
<string name="yes"></string>
<string name="no">아니오</string>
<string name="failedGeneratingShareURL">공유 가능한 URL을 생성할 수 없습니다. 이를 신고해 주십시오.</string>
<string name="turn_flashlight_off">손전등 끄기</string>
<string name="settings_locale">언어</string>
<string name="settings_system_locale">시스템</string>
<string name="selectColor">색상 선택</string>
<string name="settings_theme_color">테마 색상</string>
<string name="settings_catima_theme">Catima</string>
<string name="settings_pink_theme">핑크색</string>
<string name="settings_magenta_theme">자홍색</string>
<string name="settings_violet_theme">보라색</string>
<string name="settings_blue_theme">파란색</string>
<string name="app_contributors">가능한 : <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="showMoreInfo">정보 보기</string>
<string name="updateBalance">잔액 업데이트</string>
<string name="failedToRetrieveImageFile">이미지 파일을 검색하지 못했습니다</string>
<string name="barcodeLongPressMessage">갤러리 앱에서는 이미지만 열 수 있습니다</string>
<string name="sort_by_name">이름</string>
<string name="reverse">... 역순으로</string>
<string name="sort_by">정렬 기준</string>
<string name="version_history">버전 기록</string>
<string name="credits">학점</string>
<string name="license">특허</string>
<string name="source_repository">소스 저장소</string>
<string name="and_data_usage">및 데이터 사용량</string>
<string name="on_google_play">Google Play에서</string>
<string name="options">옵션</string>
<string name="starred">별표</string>
<string name="include_if_asking_support">지원을 요청하려면 다음 정보를 포함하십시오:</string>
<string name="archive">보관소</string>
<string name="unarchive">보관 취소</string>
<string name="archived">보관된 카드</string>
<string name="unarchived">보관되지 않은 카드</string>
<string name="archiveList">보관소</string>
<string name="failedLaunchingPhotoPicker">지원되는 갤러리 앱을 찾을 수 없습니다</string>
<string name="welcome">Catima 오신 것을 환영합니다</string>
<string name="validFromDate">유효</string>
<string name="anyDate">모든 날짜</string>
<string name="chooseValidFromDate">유효한 날짜를 선택하십시오</string>
<string name="validFromSentence">유효한 위치: <xliff:g>%s</xliff:g></string>
<string name="switchToFrontImage">전면 이미지로 전환</string>
<string name="switchToBackImage">뒤로 이미지로 전환</string>
<string name="switchToBarcode">바코드로 전환</string>
<string name="donate">기부하다</string>
<string name="show_name_below_image_thumbnail">이미지 축소판 아래에 이름 표시</string>
<string name="sort">종류</string>
<string name="sort_by_most_recently_used">가장 최근에 사용됨</string>
<string name="settings_keep_screen_on">화면 켜기</string>
<string name="unsupportedBarcodeType">이 바코드 유형은 아직 표시할 수 없습니다. 이후 버전의 앱에서 지원될 수 있습니다.</string>
<string name="sort_by_expiry">만료</string>
<string name="on_github">GitHub에서</string>
<string name="report_error">오류 신고</string>
<string name="rate_this_app">이 앱을 평가 해주세요</string>
<string name="translate_platform">Weblate에서</string>
<string name="shortcutSelectCard">카드 선택</string>
<string name="group_edit">그룹 편집</string>
<string name="parsingBalanceFailed"><xliff:g>%s</xliff:g> 이 유효한 잔액이 아닌 것 같습니다.</string>
<string name="chooseImportType">데이터 가져오기</string>
<string name="barcodeId">바코드 값</string>
<string name="setBackImage">이미지 설정</string>
<string name="exportSuccessful">내보낸 데이터</string>
<string name="settings_disable_lockscreen_while_viewing_card">화면 잠금 방지</string>
<string name="group_updated">그룹 업데이트됨</string>
<string name="moveBarcodeToTopOfScreen">바코드를 화면 상단으로 이동</string>
<string name="height">키:</string>
<string name="openFrontImageInGalleryApp">갤러리 앱에서 전면 이미지 열기</string>
<string name="openBackImageInGalleryApp">갤러리 앱에서 다시 이미지 열기</string>
<string name="setBarcodeHeight">바코드 높이 설정</string>
<string name="setFrontImage">전면 이미지 설정</string>
<plurals name="selectedCardCount">
<item quantity="other"><xliff:g>%d</xliff:g> 선택된</item>
</plurals>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">저작권 © 2019<xliff:g>%d</xliff:g> Sylvia van Os</string>
<string name="noCameraPermissionDirectToSystemSetting">바코드를 스캔하려면 Catima가 카메라에 액세스해야 합니다. 권한 설정을 변경하려면 여기를 탭하세요.</string>
<string name="exportOptionExplanation">데이터는 선택한 위치에 기록됩니다.</string>
<string name="app_license">GPL v3+에 따라 라이선스가 부여된 무료 소프트웨어</string>
<string name="failedOpeningFileManager">먼저 파일 관리자를 설치하십시오.</string>
<string name="importSuccessful">가져온 데이터</string>
<string name="group_name_is_empty">그룹 이름은 비워둘 수 없습니다</string>
<string name="chooseExpiryDate">만료일 선택</string>
<string name="settings_oled_dark">어두운 테마를 위한 검정색 배경</string>
<string name="action_show_details">세부정보 표시</string>
<string name="noGroups">+ 더하기 버튼을 클릭하여 분류할 그룹을 추가합니다.</string>
<string name="deleteConfirmationGroup">그룹을 삭제하시겠습니까\?</string>
<string name="errorReadingImage">이미지를 읽을 수 없습니다</string>
<string name="expiryStateSentence">만료: <xliff:g>%s</xliff:g></string>
<plurals name="balancePoints">
<item quantity="other"><xliff:g>%s</xliff:g> 포인트</item>
</plurals>
<string name="balanceSentence">잔액: <xliff:g>%s</xliff:g></string>
<string name="noBarcodeFound">바코드를 찾을 수 없습니다</string>
<string name="points">포인트</string>
<string name="balance">균형</string>
<string name="currency">통화</string>
<string name="accept">수용하다</string>
<string name="importLoyaltyCardKeychain">로열티 카드 키체인에서 가져오기</string>
<string name="wrongValueForBarcodeType">선택한 바코드 유형에 대해 값이 유효하지 않습니다</string>
<string name="copy_to_clipboard_multiple_toast">클립보드에 복사된 ID</string>
<string name="updateBarcodeQuestionText">아이디를 변경하셨습니다. 동일한 값을 사용하도록 바코드도 업데이트하시겠습니까\?</string>
<string name="exportPasswordHint">암호를 입력</string>
<string name="updateBarcodeQuestionTitle">바코드 값을 업데이트하시겠습니까\?</string>
<string name="turn_flashlight_on">손전등 켜기</string>
<string name="exportPassword">내보내기를 보호하기 위한 암호 설정(선택 사항)</string>
<string name="passwordRequired">비밀번호를 입력해주세요</string>
<string name="action_hide_details">상세정보 표시</string>
<string name="setIcon">썸네일 설정</string>
<string name="show_balance">잔액 표시</string>
<string name="help_translate_this_app">이 앱을 번역하도록 도와주세요</string>
<string name="duplicateCard">복제하다</string>
<string name="noUnarchivedCardsMessage">보관되지 않은 카드가 없습니다</string>
<plurals name="groupCardCountWithArchived">
<item quantity="other"><xliff:g>%1$d</xliff:g> 카드 (<xliff:g id="archivedCount">%2$d</xliff:g> 보관됨)</item>
</plurals>
<string name="updateBalanceHint">금액을 입력하세요</string>
<string name="show_note">메모 표시</string>
<string name="show_validity">유효성 표시</string>
<string name="icon_header_click_text">미리보기 이미지를 수정하려면 길게 누르세요</string>
<plurals name="deleteCardsConfirmation">
<item quantity="other"><xliff:g>%d</xliff:g> 카드를 영구적으로 삭제하시겠습니까\?</item>
</plurals>
<string name="card_ids_copied">복사된 ID</string>
<string name="barcodeImageDescriptionWithType">이미지 <xliff:g>%s</xliff:g> 바코드</string>
<string name="photos">사진</string>
<string name="storageReadPermissionRequired">이 작업에 필요한 저장소를 읽을 수 있는 권한…</string>
<string name="app_libraries">Libre 타사 라이브러리: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="cameraPermissionRequired">이 작업에 필요한 카메라 액세스 권한…</string>
<string name="cameraPermissionDeniedTitle">카메라에 액세스할 수 없습니다</string>
<string name="importOptionFilesystemButton">파일 시스템에서</string>
<string name="app_copyright_old">Loyalty Card Keychain 기반
\n저작권 © 20162020 Branden Archer</string>
<string name="app_resources">Libre 타사 리소스: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="settings_lock_on_opening_orientation">카드를 열 때 사용되는 방향으로 고정</string>
<string name="editGroup">그룹 편집: <xliff:g>%s</xliff:g></string>
<string name="frontImageDescription">전면 이미지</string>
<string name="backImageDescription">뒷면 이미지</string>
<string name="currentBalanceSentence">현재 잔액: <xliff:g>%s</xliff:g></string>
<string name="importCards">카드 가져오기</string>
<string name="updateBalanceTitle">얼마를 썼습니까\?</string>
<string name="newBalanceSentence">새 잔액: <xliff:g>%s</xliff:g></string>
<string name="settings_card_orientation">바코드 방향</string>
<string name="settings_follow_system_orientation">시스템을 따르세요</string>
<string name="settings_portrait_orientation">초상화</string>
<string name="settings_landscape_orientation">풍경</string>
<string name="noGroupCards">이 그룹은 비어 있습니다</string>
<string name="app_loyalty_card_keychain">로열티 카드 키체인</string>
<string name="privacy_policy">개인 정보 정책</string>
<string name="privacy_policy_popup_text">개인 정보 보호 정책 공지(일부 앱 스토어에서 필요):
\n
\n데이터가 전혀 수집되지 않습니다. 우리 앱은 무료 소프트웨어이기 때문에 누구나 확인할 수 있습니다.</string>
<string name="importCatima">Catima에서 가져오기</string>
<string name="importCatimaMessage">가져올 Catima에서 <i>catima.zip</i> 내보내기를 선택합니다.
\n먼저 내보내기를 눌러 다른 Catima 앱의 가져오기/내보내기 메뉴에서 생성합니다.</string>
<string name="importFidme">FidMe에서 가져오기</string>
<string name="importFidmeMessage">가져올 FidMe에서 <i>fidme-export-request-xxxxxx.zip</i> 내보내기를 선택하고 나중에 바코드 유형을 수동으로 선택합니다.
\n데이터 보호를 선택한 다음 먼저 내 데이터 추출을 눌러 FidMe 프로필에서 생성합니다.</string>
<string name="importLoyaltyCardKeychainMessage">가져올 포인트 카드 키체인에서 <i>LoyaltyCardKeychain.csv</i> 내보내기를 선택합니다.
\n먼저 내보내기를 눌러 로열티 카드 키체인의 가져오기/내보내기 메뉴에서 만드십시오.</string>
<string name="setBarcodeId">바코드 값 설정</string>
<string name="importStocard">Stocard에서 가져오기</string>
<string name="importStocardMessage">가져올 Stocard에서 <i>***.zip</i> 내보내기를 선택합니다.
\nsupport@stocardapp.com으로 이메일을 보내 데이터 내보내기를 요청하면 받을 수 있습니다.</string>
<string name="importVoucherVault">바우처 보관소에서 가져오기</string>
<string name="importVoucherVaultMessage">가져올 Voucher Vault에서 <i>vouchervault.json</i> 내보내기를 선택합니다.
\n먼저 바우처 금고에서 내보내기를 눌러 생성하세요.</string>
<string name="sameAsCardId">아이디와 동일</string>
<string name="settings_grey_theme">회색</string>
<string name="settings_sky_blue_theme">하늘색</string>
<string name="settings_green_theme">초록색</string>
<string name="settings_brown_theme">갈색</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="other">보관소 보기 (<xliff:g>%1$d</xliff:g> 카)</item>
</plurals>
<string name="previousCard">이전의</string>
<string name="nextCard">다음</string>
<string name="failedToOpenUrl">먼저 웹 브라우저를 설치하십시오</string>
</resources>

View File

@@ -128,7 +128,6 @@
<string name="settings_light_theme">Šviesi</string>
<string name="settings_system_theme">Sistemos</string>
<string name="settings_theme">Tema</string>
<string name="settings_category_title_ui">Vartotojo sąsaja</string>
<string name="settings">Nustatymai</string>
<string name="starImage">Mėgstamiausia žvaigždė</string>
<string name="thumbnailDescription">Miniatiūra</string>
@@ -275,4 +274,4 @@
<string name="switchToFrontImage">Perjungti į priekinį vaizdą</string>
<string name="openFrontImageInGalleryApp">Atidarykite priekinį vaizdą galerijos programėlėje</string>
<string name="donate">Aukoti</string>
</resources>
</resources>

View File

@@ -61,7 +61,6 @@
<string name="thumbnailDescription">Sīktēls</string>
<string name="starImage">Izlases zvaigzne</string>
<string name="settings">Iestatījumi</string>
<string name="settings_category_title_ui">Interfeiss</string>
<string name="settings_theme">Tēma</string>
<string name="settings_system_theme">Sistēmas</string>
<string name="settings_light_theme">Gaiša</string>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
<string name="action_add">Legg til</string>
<string name="noGiftCards">Klikk på «+» (pluss)-knappen for å legge til eller importer kort fra «⋮»-menyen</string>
<string name="noGiftCards">Klikk på «+» (pluss)-knappen for å legge til eller importere kort fra «⋮»-menyen.</string>
<string name="storeName">Navn</string>
<string name="note">Merknad</string>
<string name="cardId">Kort-ID</string>
@@ -49,7 +49,6 @@
<string name="copy_to_clipboard_toast">ID kopiert til utklippstavle</string>
<string name="thumbnailDescription">Miniatyrbilde</string>
<string name="settings">Innstillinger</string>
<string name="settings_category_title_ui">Brukergrensesnitt</string>
<string name="settings_display_barcode_max_brightness">Lysere strekkodevisning</string>
<string name="exportSuccessful">Data eksportert</string>
<string name="importSuccessful">Data importert</string>
@@ -63,7 +62,7 @@
<string name="failedParsingImportUriError">Kunne ikke tolke importerings-URI</string>
<string name="share">Del</string>
<string name="barcodeNoBarcode">Det er ingen strekkode</string>
<string name="noMatchingGiftCards">Resultatløst. Prøv å endre søket.</string>
<string name="noMatchingGiftCards">Ingen resultater. Prøv å endre søket.</string>
<string name="action_search">Søk</string>
<string name="starImage">Favorittstjerne</string>
<string name="unstar">Fjern fra favoritter</string>
@@ -188,7 +187,7 @@
<string name="license">Lisens</string>
<string name="version_history">Versjonshistorikk</string>
<string name="importCatimaMessage">Velg din <i>catima.zip</i>-eksport fra Catima å importere.
\nOpprett den fra «Importer/Eksporter»-menyen i en annen Catima-app ved å trykke på «Eksporter» der først</string>
\nOpprett den fra «Importer/Eksporter»-menyen i en annen Catima-app ved å trykke på «Eksporter» der først.</string>
<string name="source_repository">Kildekode</string>
<string name="on_github">på GitHub</string>
<string name="and_data_usage">og bruk av data</string>
@@ -207,7 +206,7 @@
<string name="action_show_details">Vis detaljer</string>
<string name="action_hide_details">Skjul detaljer</string>
<string name="selectColor">Velg farge</string>
<string name="setIcon">Sett ikon</string>
<string name="setIcon">Sett miniatyrbilde</string>
<string name="shortcutSelectCard">velg et kort</string>
<string name="translate_platform">på Weblate</string>
<string name="options">Alternativer</string>
@@ -260,4 +259,28 @@
<string name="storageReadPermissionRequired">Lagringslesetilgang kreves for denne handlingen …</string>
<string name="validFromSentence">Gyldig fra: <xliff:g>%s</xliff:g></string>
<string name="cameraPermissionRequired">Kameratilgang kreves for denne handlingen …</string>
</resources>
<string name="height">Høyde:</string>
<string name="switchToFrontImage">Bytt til frontbilde</string>
<string name="switchToBackImage">Bytt til baksidebildet</string>
<string name="switchToBarcode">Bytt til strekkode</string>
<string name="icon_header_click_text">Lang-trykk for å redigere miniatyrbilde</string>
<string name="show_name_below_image_thumbnail">Vis navn under miniatyrbilde</string>
<string name="show_balance">Vis saldo</string>
<string name="show_note">Vis notat</string>
<string name="show_validity">Vis gyldighet</string>
<string name="openFrontImageInGalleryApp">Åpne frontbilde i galleriprogrammet</string>
<string name="openBackImageInGalleryApp">Åpne baksidebilde i galleriprogram</string>
<string name="setBarcodeHeight">Sett strekkodehøyde</string>
<string name="donate">Doner</string>
<string name="permissionReadCardsLabel">Les Catima-kort</string>
<string name="permissionReadCardsDescription">Les kortene dine og detaljene om dem, inkludert notater og bilder</string>
<string name="settings_allow_content_provider_read_summary">Programmer vil fremdeles måtte forespørre tilgang for å få det innvilget</string>
<string name="settings_display_barcode_max_brightness_summary">Nødvendig for noen skannere</string>
<string name="settings_keep_screen_on_summary">Skrur av skjermtidsavbrudd under visning av et kort</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Skrur av skjermlås under visning av et kort</string>
<string name="settings_allow_content_provider_read_title">Tillat andre programmer tilgang til min data</string>
<string name="settings_category_title_cards">Kort</string>
<string name="settings_category_title_general">Generelt</string>
<string name="settings_category_title_privacy">Personvern</string>
<string name="settings_oled_dark_summary">Reduserer batteribruk for OLED-skjermer</string>
</resources>

View File

@@ -54,11 +54,10 @@
<string name="copy_to_clipboard_toast">De kaart-id is gekopieerd naar het klembord</string>
<string name="thumbnailDescription">Miniatuurvoorbeeld</string>
<string name="settings">Instellingen</string>
<string name="settings_category_title_ui">Vormgeving</string>
<string name="settings_theme">Thema</string>
<string name="settings_system_theme">Systeem</string>
<string name="settings_light_theme">Licht</string>
<string name="settings_dark_theme">Donker</string>
<string name="settings_system_theme">Systeemthema</string>
<string name="settings_light_theme">Licht thema</string>
<string name="settings_dark_theme">Donker thema</string>
<string name="settings_display_barcode_max_brightness">Scherm helderder maken bij tonen van barcode</string>
<string name="intent_import_card_from_url_share_text">Ik wil een klantenkaart met je delen</string>
<string name="all">Alles</string>
@@ -68,7 +67,7 @@
<string name="exportSuccessful">De gegevens zijn geëxporteerd</string>
<string name="groups">Groepen</string>
<string name="enter_group_name">Voer een groepsnaam in</string>
<string name="starImage">Favoriete ster</string>
<string name="starImage">Favorietster</string>
<string name="app_copyright_old">Gebaseerd op Klantenkaartkluis,
\ncopyright ©20162020 Branden Archer</string>
<string name="unstar">Verwijderen uit favorieten</string>
@@ -204,7 +203,7 @@
<string name="editGroup">Groep bewerken: <xliff:g>%s</xliff:g></string>
<string name="noGiftCardsGroup">Voeg kaarten toe om ze hier te kunnen groeperen.</string>
<string name="group_edit">Groep bewerken</string>
<string name="setIcon">Kies een pictogram</string>
<string name="setIcon">Miniatuur instellen</string>
<string name="selectColor">Kies een kleur</string>
<string name="action_show_details">Details tonen</string>
<string name="action_hide_details">Details verbergen</string>
@@ -268,5 +267,20 @@
<string name="openFrontImageInGalleryApp">Voorzijde openen in galerij-app</string>
<string name="openBackImageInGalleryApp">Achterzijde openen in galerij-app</string>
<string name="donate">Doneren</string>
<string name="icon_header_click_text">Houd lang ingedrukt om pictogram te bewerken</string>
<string name="icon_header_click_text">Houd lang ingedrukt om miniatuur te bewerken</string>
<string name="show_balance">Saldo tonen</string>
<string name="show_name_below_image_thumbnail">Naam onder miniatuur tonen</string>
<string name="show_note">Aantekening tonen</string>
<string name="show_validity">Geldigheid tonen</string>
<string name="permissionReadCardsLabel">Catimakaarten uitlezen</string>
<string name="settings_allow_content_provider_read_summary">Let op: apps moeten nog steeds om toestemming vragen</string>
<string name="permissionReadCardsDescription">Lees alle kaarten uit, inclusief alle details, aantekeningen en afbeeldingen</string>
<string name="settings_allow_content_provider_read_title">Andere apps toegang geven tot gegevens</string>
<string name="settings_keep_screen_on_summary">Laat het scherm niet op zwart gaan tijdens het bekijken van een kaart</string>
<string name="settings_category_title_privacy">Privacy</string>
<string name="settings_display_barcode_max_brightness_summary">Benodigd voor de werking van sommige scanners</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Schakelt schermvergrendeling uit tijdens het bekijken van een kaart</string>
<string name="settings_oled_dark_summary">Verlaagt het accuverbruik op oledschermen</string>
<string name="settings_category_title_cards">Kaarten</string>
<string name="settings_category_title_general">Algemeen</string>
</resources>

View File

@@ -49,7 +49,6 @@
<item quantity="other"><xliff:g>%d</xliff:g> seleccionadas</item>
</plurals>
<string name="settings">Paramètres</string>
<string name="settings_category_title_ui">Interfàcia utilizaire</string>
<string name="settings_theme">Tèma</string>
<string name="noGiftCards">Clicatz lo boton + per apondre una carta o nimportar una menú ⋮</string>
<string name="noMatchingGiftCards">Cap de resultat. Ensajatz de modificar vòstra recèrca.</string>
@@ -66,4 +65,4 @@
<string name="settings_theme_color">Color del tèma</string>
<string name="settings_locale">Lenga</string>
<string name="noGiftCardsGroup">Creatz de cartas puèi ligatz-las al grop aicí.</string>
</resources>
</resources>

View File

@@ -52,7 +52,6 @@
<string name="copy_to_clipboard_toast">Skopiowano ID do schowka</string>
<string name="thumbnailDescription">Miniaturka</string>
<string name="settings">Ustawienia</string>
<string name="settings_category_title_ui">Interfejs użytkownika</string>
<string name="settings_theme">Motyw</string>
<string name="settings_system_theme">Systemowy</string>
<string name="settings_light_theme">Jasny</string>
@@ -198,7 +197,7 @@
<string name="help_translate_this_app">Pomóż przetłumaczyć tę aplikację</string>
<string name="source_repository">Repozytorium Źródłowe</string>
<string name="report_error">Zgłoś Błąd</string>
<string name="setIcon">Ustaw ikonę</string>
<string name="setIcon">Ustaw miniaturę</string>
<string name="on_github">na GitHub\'ie</string>
<string name="selectColor">Wybierz kolor</string>
<string name="version_history">Historia wersji</string>
@@ -282,4 +281,8 @@
<string name="setBarcodeHeight">Ustaw wysokość kodu kreskowego</string>
<string name="donate">Darowizna</string>
<string name="openBackImageInGalleryApp">Otwórz obraz z powrotem w aplikacji galerii</string>
</resources>
<string name="icon_header_click_text">Przytrzymaj, aby edytować miniaturę</string>
<string name="show_name_below_image_thumbnail">Pokaż imię pod miniaturką zdjęcia</string>
<string name="show_balance">Pokaż balans</string>
<string name="show_validity">Pokaż ważność</string>
</resources>

View File

@@ -8,12 +8,12 @@
<string name="storeName">Nome</string>
<string name="note">Nota</string>
<string name="barcodeType">Tipo de código de barras</string>
<string name="barcodeNoBarcode">Sem código de barras</string>
<string name="barcodeNoBarcode">Não há código de barras</string>
<string name="cancel">Cancelar</string>
<string name="save">Guardar</string>
<string name="edit">Editar</string>
<string name="noGiftCards">Clique no botão + para adicionar um cartão ou importe-o no menu ⋮.</string>
<string name="noBarcode">Sem código de barras</string>
<string name="noBarcode">sem código de barras</string>
<string name="unstar">Retirar dos favoritos</string>
<string name="importOptionFilesystemButton">Do sistema de ficheiros</string>
<string name="importOptionApplicationTitle">Usar outra aplicação</string>
@@ -57,7 +57,6 @@
<string name="all">Todos</string>
<string name="deleteConfirmationGroup">Eliminar o grupo\?</string>
<string name="settings">Configurações</string>
<string name="settings_category_title_ui">Interface do utilizador</string>
<string name="settings_theme">Tema</string>
<string name="settings_system_theme">Sistema</string>
<string name="settings_light_theme">Claro</string>
@@ -209,7 +208,7 @@
<string name="editGroup">A editar grupo: <xliff:g>%s</xliff:g></string>
<string name="noGiftCardsGroup">Crie alguns cartões e atribua-os depois ao grupo aqui.</string>
<string name="selectColor">Selecionar cor</string>
<string name="setIcon">Definir ícone</string>
<string name="setIcon">Definir miniatura</string>
<string name="action_show_details">Mostrar detalhes</string>
<string name="action_hide_details">Ocultar detalhes</string>
<string name="shortcutSelectCard">Selecione um cartão</string>
@@ -271,8 +270,24 @@
<string name="height">Altura:</string>
<string name="switchToBackImage">Mudar para a imagem de trás</string>
<string name="switchToBarcode">Mudar para o código de barras</string>
<string name="openFrontImageInGalleryApp">Abra a imagem frontal no aplicativo da galeria</string>
<string name="openBackImageInGalleryApp">Abra a imagem traseira no aplicativo da galeria</string>
<string name="openFrontImageInGalleryApp">Abrir a imagem frontal na aplicação da galeria</string>
<string name="openBackImageInGalleryApp">Abrir a imagem traseira na aplicação da galeria</string>
<string name="setBarcodeHeight">Definir altura do código de barras</string>
<string name="donate">Doar</string>
</resources>
<string name="show_validity">Mostrar validade</string>
<string name="show_balance">Mostrar saldo</string>
<string name="permissionReadCardsLabel">Ler Cartas Catima</string>
<string name="permissionReadCardsDescription">Leia seus cartões e todos os seus detalhes, incluindo notas e imagens</string>
<string name="show_note">Mostrar nota</string>
<string name="show_name_below_image_thumbnail">Mostrar nome abaixo da miniatura do ícone</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Desativa o bloqueio de tela ao visualizar um cartão</string>
<string name="settings_display_barcode_max_brightness_summary">Necessário para alguns scanners funcionarem</string>
<string name="settings_keep_screen_on_summary">Desativa o tempo limite da tela ao visualizar um cartão</string>
<string name="settings_allow_content_provider_read_title">Permitir que outros aplicativos acessem meus dados</string>
<string name="settings_allow_content_provider_read_summary">Os aplicativos ainda terão que solicitar permissão para receber acesso</string>
<string name="settings_oled_dark_summary">Reduz o uso da bateria em telas OLED</string>
<string name="icon_header_click_text">Pressione e segure para editar o icone</string>
<string name="settings_category_title_cards">cartões</string>
<string name="settings_category_title_general">geral</string>
<string name="settings_category_title_privacy">Privacidade</string>
</resources>

View File

@@ -43,7 +43,6 @@
<string name="importOptionApplicationTitle">Utilizați o altă aplicație</string>
<string name="starImage">Steaua preferată</string>
<string name="settings">Setări</string>
<string name="settings_category_title_ui">Interfață utilizator</string>
<string name="intent_import_card_from_url_share_text">Vreau să împărtășesc o carte cu tine</string>
<string name="moveUp">Mutarea în sus</string>
<string name="editCardTitle">Editare card</string>
@@ -103,4 +102,4 @@
<string name="importCatima">Importați din Catima</string>
<string name="importStocard">Importați din Stocard</string>
<string name="intent_import_card_from_url_share_multiple_text">Aș dori să partajez niște carduri cu tine</string>
</resources>
</resources>

View File

@@ -54,7 +54,6 @@
<string name="copy_to_clipboard_toast">Номер скопирован в буфер обмена</string>
<string name="thumbnailDescription">Логотип</string>
<string name="settings">Настройки</string>
<string name="settings_category_title_ui">Внешний вид</string>
<string name="settings_theme">Тема</string>
<string name="settings_system_theme">Системная</string>
<string name="settings_light_theme">Светлая</string>
@@ -93,7 +92,7 @@
<string name="moveBarcodeToTopOfScreen">Переместить штрих-код в верхнюю часть экрана</string>
<string name="currency">Валюта</string>
<string name="chooseExpiryDate">Выбор срока действия</string>
<string name="never">Никогда</string>
<string name="never">Нет</string>
<string name="expiryDate">Срок действия</string>
<string name="editBarcode">Изменить штрих-код</string>
<string name="card">Карта</string>
@@ -212,10 +211,10 @@
<string name="group_edit">Изменить группу</string>
<string name="group_name_already_in_use">Такое название группы уже существует</string>
<string name="noGiftCardsGroup">Создайте несколько карт, а затем распределите их по группам здесь.</string>
<string name="setIcon">Выбор значка</string>
<string name="setIcon">Выбор миниатюры</string>
<string name="selectColor">Выбрать цвет</string>
<string name="action_hide_details">Скрыть детали</string>
<string name="action_show_details">Показать детали</string>
<string name="action_hide_details">Скрытие подробностей</string>
<string name="action_show_details">Отображение подробностей</string>
<string name="translate_platform">на Weblate</string>
<string name="shortcutSelectCard">Выбор карты</string>
<string name="options">Параметры</string>
@@ -282,5 +281,20 @@
<string name="openFrontImageInGalleryApp">Открыть лицевое изображение в приложении галереи</string>
<string name="openBackImageInGalleryApp">Открыть заднее изображение в приложении галереи</string>
<string name="donate">Пожертвовать</string>
<string name="icon_header_click_text">Долгое нажатие для редактирования значка</string>
<string name="icon_header_click_text">Долгое нажатие для редактирования миниатюры</string>
<string name="show_note">Показывать примечание</string>
<string name="show_validity">Показывать срок действия</string>
<string name="show_name_below_image_thumbnail">Показывать название под миниатюрой</string>
<string name="show_balance">Показывать баланс</string>
<string name="permissionReadCardsDescription">Чтение ваших карт и всех их данных, включая заметки и изображения</string>
<string name="permissionReadCardsLabel">Чтение карт Catima</string>
<string name="settings_allow_content_provider_read_summary">Приложениям по-прежнему придётся запрашивать разрешение для получения доступа</string>
<string name="settings_allow_content_provider_read_title">Разрешать другим приложениям доступ к моим данным</string>
<string name="settings_category_title_privacy">Конфиденциальность</string>
<string name="settings_display_barcode_max_brightness_summary">Необходимо для работы некоторых сканеров</string>
<string name="settings_keep_screen_on_summary">Отключение функции автоотключения экрана при отображении карты</string>
<string name="settings_category_title_cards">Карты</string>
<string name="settings_category_title_general">Общие</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Отключение функции блокировки экрана при отображении карты</string>
<string name="settings_oled_dark_summary">Снижение расхода заряда батареи на OLED-экранах</string>
</resources>

View File

@@ -46,7 +46,6 @@
<string name="copy_to_clipboard_toast">ID skopírované do schránky</string>
<string name="thumbnailDescription">Miniatúra</string>
<string name="settings">Nastavenia</string>
<string name="settings_category_title_ui">Používateľské prostredie</string>
<string name="settings_display_barcode_max_brightness">Zvýšiť jas pri zobrazení čiarového kódu </string>
<string name="deleteTitle">Odstrániť kartu</string>
<string name="deleteConfirmation">Naozaj chcete túto kartu odstrániť?</string>
@@ -267,4 +266,4 @@
<string name="noUnarchivedCardsMessage">Nie sú žiadne karty vrátené z archívu</string>
<string name="newBalanceSentence">Nový zostatok: <xliff:g>%s</xliff:g></string>
<string name="failedLaunchingPhotoPicker">Nepodarilo sa nájsť podporovanú aplikáciu galérie</string>
</resources>
</resources>

View File

@@ -46,7 +46,6 @@
<string name="copy_to_clipboard_toast">ID številka je kopirana v odložišče</string>
<string name="thumbnailDescription">Sličica</string>
<string name="settings">Nastavitve</string>
<string name="settings_category_title_ui">Uporabniški vmesnik</string>
<string name="settings_display_barcode_max_brightness">Povečaj osvetljenost prikaza črtne kode</string>
<string name="deleteTitle">Odstrani kartico zvestobe</string>
<string name="deleteConfirmation">Prosim potrdite, če želite izbrisati to kartico\?</string>
@@ -274,4 +273,4 @@
<string name="validFromDate">Velja od</string>
<string name="anyDate">Katerikoli datum</string>
<string name="chooseValidFromDate">Izberite datum začetka veljavnosti</string>
</resources>
</resources>

View File

@@ -77,7 +77,6 @@
<string name="settings_dark_theme">Mörkt</string>
<string name="settings_light_theme">Ljust</string>
<string name="settings_theme">Tema</string>
<string name="settings_category_title_ui">Användargränssnitt</string>
<string name="settings">Inställningar</string>
<string name="thumbnailDescription">Miniatyrbild</string>
<string name="copy_to_clipboard_toast">ID:t kopierat till Urklipp</string>
@@ -260,4 +259,4 @@
<string name="updateBalanceTitle">Hur mycket spenderade du\?</string>
<string name="updateBalanceHint">Ange summa</string>
<string name="newBalanceSentence">Ny balans: <xliff:g>%s</xliff:g></string>
</resources>
</resources>

View File

@@ -100,7 +100,6 @@
<string name="settings_light_theme">ık</string>
<string name="settings_system_theme">Sistem</string>
<string name="settings_theme">Tema</string>
<string name="settings_category_title_ui">Kullanıcı arayüzü</string>
<string name="settings">Ayarlar</string>
<string name="starImage">Sık kullanılan yıldız</string>
<string name="thumbnailDescription">Küçük resim</string>
@@ -205,7 +204,7 @@
<string name="group_name_is_empty">Grup adı boş olamaz</string>
<string name="group_updated">Grup güncellendi</string>
<string name="selectColor">Renk seç</string>
<string name="setIcon">Simge ayarla</string>
<string name="setIcon">Küçük resim ayarla</string>
<string name="action_show_details">Ayrıntıları göster</string>
<string name="action_hide_details">Ayrıntıları gizle</string>
<string name="translate_platform">Weblate\'de</string>
@@ -268,4 +267,20 @@
<string name="setBarcodeHeight">Barkod yüksekliğini ayarla</string>
<string name="openFrontImageInGalleryApp">Ön resmi galeri uygulamasında aç</string>
<string name="openBackImageInGalleryApp">Arka resmi galeri uygulamasında aç</string>
<string name="icon_header_click_text">Küçük resmi düzenlemek için uzun basın</string>
<string name="show_name_below_image_thumbnail">Küçük resmin altında adı göster</string>
<string name="show_note">Notu göster</string>
<string name="show_balance">Bakiyeyi göster</string>
<string name="show_validity">Geçerliliği göster</string>
<string name="permissionReadCardsLabel">Catima kartlarını oku</string>
<string name="permissionReadCardsDescription">Kartlarınızı ve tüm detaylarını, notlar ve resimler de dahil olmak üzere okuyun</string>
<string name="settings_keep_screen_on_summary">Ekran zaman aşımını bir kart görüntülerken devre dışı bırakır</string>
<string name="settings_allow_content_provider_read_title">Diğer uygulamaların verilerime erişmesine izin ver</string>
<string name="settings_display_barcode_max_brightness_summary">Bazı tarayıcıların çalışması için gereklidir</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Ekran kilidini bir kart görüntülerken devre dışı bırakır</string>
<string name="settings_allow_content_provider_read_summary">Uygulamaların erişim izni almak için yine de izin istemesi gerekecek</string>
<string name="settings_category_title_general">Genel</string>
<string name="settings_category_title_privacy">Gizlilik</string>
<string name="settings_oled_dark_summary">OLED ekranlarda güç kullanımını düşürür</string>
<string name="settings_category_title_cards">Kartlar</string>
</resources>

View File

@@ -79,7 +79,6 @@
<string name="settings_light_theme">Світла</string>
<string name="settings_system_theme">Системна</string>
<string name="settings_theme">Тема</string>
<string name="settings_category_title_ui">Інтерфейс користувача</string>
<string name="settings">Налаштування</string>
<string name="starImage">Улюблена зірка</string>
<string name="thumbnailDescription">Ескіз</string>
@@ -213,7 +212,7 @@
<string name="group_name_already_in_use">Група з такою назвою вже існує</string>
<string name="noGiftCardsGroup">Створите кілька карток, та призначте їх до групи тут.</string>
<string name="selectColor">Вибір кольору</string>
<string name="setIcon">Вибір іконки</string>
<string name="setIcon">Вибір мініатюри</string>
<string name="action_show_details">Показати деталі</string>
<string name="action_hide_details">Сховати деталі</string>
<string name="translate_platform">на Weblate</string>
@@ -282,4 +281,9 @@
<string name="setBarcodeHeight">Встановити висоту штрих-коду</string>
<string name="height">Висота:</string>
<string name="donate">Пожертвувати</string>
</resources>
<string name="icon_header_click_text">Тривале натискання для редагування мініатюри</string>
<string name="show_name_below_image_thumbnail">Показати назву під мініатюрою зображення</string>
<string name="show_note">Показати примітку</string>
<string name="show_validity">Показати термін дії</string>
<string name="show_balance">Показати баланс</string>
</resources>

View File

@@ -4,16 +4,16 @@
<plurals name="groupCardCount">
<item quantity="other"><xliff:g>%d</xliff:g> 卡片</item>
</plurals>
<string name="app_libraries">第三方自由程序库: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="debug_version_fmt">版本: <xliff:g id="version">%s</xliff:g></string>
<string name="app_libraries">第三方自由程序库<xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="debug_version_fmt">版本<xliff:g id="version">%s</xliff:g></string>
<string name="about_title_fmt">关于 <xliff:g id="app_name">%s</xliff:g></string>
<string name="card">卡片</string>
<string name="addManually">手动输入卡号</string>
<string name="settings_system_theme">系统设置</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">版权所有 © 2019<xliff:g>%d</xliff:g> Sylvia van Os</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os</string>
<string name="importOptionApplicationButton">使用其他应用</string>
<string name="importOptionFilesystemButton">文件系统</string>
<string name="unstar">从收藏中</string>
<string name="importOptionFilesystemButton">使用文件系统</string>
<string name="unstar">从收藏中</string>
<string name="intent_import_card_from_url_share_multiple_text">我想和你分享一些卡片</string>
<string name="copy_to_clipboard_multiple_toast">卡号已复制到剪贴板</string>
<string name="wrongValueForBarcodeType">该值对所选条形码类型无效</string>
@@ -74,36 +74,35 @@
<string name="settings_dark_theme">暗色</string>
<string name="settings_light_theme">浅色</string>
<string name="settings_theme">主题</string>
<string name="settings_category_title_ui">用户界面</string>
<string name="settings">设置</string>
<string name="thumbnailDescription">缩略图</string>
<string name="copy_to_clipboard_toast">已复制卡号到剪贴板</string>
<string name="enterBarcodeInstructions">输入卡号,并从下面选择其条码类型,或选择\"无条码\"</string>
<string name="enterBarcodeInstructions">输入卡号,并从下面选择其条码类型,或选择无条码</string>
<string name="selectBarcodeTitle">选择条码</string>
<string name="app_resources">第三方自由资源:<xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_license">本软件为自由软件,使用 GPLv3+ 许可证</string>
<string name="app_copyright_old">基于 Loyalty Card Keychain
\n版权所有 © 20162020 Branden Archer</string>
\nCopyright © 20162020 Branden Archer</string>
<string name="about">关于</string>
<string name="importOptionApplicationExplanation">使用任何应用程序或您喜欢的文件管理器打开文件。</string>
<string name="importOptionApplicationTitle">使用其他应用</string>
<string name="importOptionFilesystemExplanation">请从文件系统选择文件.</string>
<string name="importOptionFilesystemExplanation">请从文件系统选择文件</string>
<string name="importOptionFilesystemTitle">从文件系统导入</string>
<string name="exportOptionExplanation">导出的数据将储存至你选择的位置.</string>
<string name="exportOptionExplanation">导出的数据将储存至你选择的位置</string>
<string name="cameraPermissionDeniedTitle">无法访问相机</string>
<string name="noCameraPermissionDirectToSystemSetting">Catima需要访问您的相机来扫描条形码. 轻触这里以更改您的权限设置。</string>
<string name="exporting">导出中…</string>
<string name="importing">导入中…</string>
<string name="noCameraPermissionDirectToSystemSetting">Catima 需要访问您的相机来扫描条形码轻触这里以更改您的权限设置。</string>
<string name="exporting">导出中…</string>
<string name="importing">导入中…</string>
<string name="exportFailed">无法导出卡片</string>
<string name="exportFailedTitle">导出失败</string>
<string name="exportSuccessfulTitle">导出成功</string>
<string name="importFailed">无法导入卡片</string>
<string name="importFailedTitle">导入失败</string>
<string name="importSuccessfulTitle">导入成功</string>
<string name="importExportHelp">备份数据允许将其移动到另一个设备上。</string>
<string name="importExportHelp">备份你的数据允许将其移动到另一个设备上。</string>
<string name="exportName">导出</string>
<string name="importExport">导入/导出</string>
<string name="failedParsingImportUriError">无法解析导入URI</string>
<string name="failedParsingImportUriError">无法解析导入 URI</string>
<string name="noCardExistsError">找不到卡片</string>
<string name="noCardIdError">未输入卡号</string>
<string name="noStoreError">未输入卡片名称</string>
@@ -113,7 +112,7 @@
<string name="editCardTitle">编辑卡片</string>
<string name="addCardTitle">添加卡片</string>
<string name="scanCardBarcode">扫描条码</string>
<string name="sendLabel">发送…</string>
<string name="sendLabel">发送…</string>
<string name="share">分享</string>
<string name="copy_to_clipboard">复制卡号到剪贴板</string>
<string name="ok">确定</string>
@@ -124,22 +123,22 @@
<string name="cancel">取消</string>
<string name="star">添加到收藏</string>
<string name="noBarcode">无条形码</string>
<string name="barcodeNoBarcode">无条形码</string>
<string name="barcodeNoBarcode">可用条形码</string>
<string name="barcodeType">条形码类型</string>
<string name="cardId">卡号</string>
<string name="note">备注</string>
<string name="storeName">名称</string>
<string name="noMatchingGiftCards">没有结果。尝试改变你的搜索</string>
<string name="noGiftCards">点击 \"+\"加号按钮来添加卡片,或者从⋮ 菜单导入。</string>
<string name="noMatchingGiftCards">没有结果。试试其他关键字</string>
<string name="noGiftCards">点击“+”加号按钮来添加卡片,或者从 ⋮ 菜单导入。</string>
<string name="action_add">添加</string>
<string name="action_search">搜索</string>
<string name="deleteConfirmation">删除此卡?</string>
<string name="deleteConfirmation">确定要永久删除此卡?</string>
<string name="deleteTitle">移除卡片</string>
<string name="starImage">最喜欢的星星</string>
<string name="starImage">收藏夹星星</string>
<string name="importStocardMessage">选择 Stocard 导出文件 <i>****.zip</i>来导入。
\n发电子邮件给 support@stocardapp.com 请求获得数据导出文件。</string>
<plurals name="deleteCardsConfirmation">
<item quantity="other">确定永久删除 <xliff:g>%d</xliff:g> 这些卡片?</item>
<item quantity="other">确定永久删除 <xliff:g>%d</xliff:g> 这些卡片?</item>
</plurals>
<plurals name="selectedCardCount">
<item quantity="other">选中了 <xliff:g>%d</xliff:g> 张卡</item>
@@ -163,14 +162,14 @@
<string name="backImageDescription">背面图像</string>
<string name="frontImageDescription">正面图像</string>
<string name="importStocard">从Stocard导入</string>
<string name="noGiftCardsGroup">创建一些卡片,然后分配给这里的小组</string>
<string name="noGiftCardsGroup">创建一些卡片并分配到这个卡组中</string>
<string name="barcodeImageDescriptionWithType"><xliff:g>%s</xliff:g>型条码图像</string>
<string name="group_edit">编辑组</string>
<plurals name="balancePoints">
<item quantity="other"><xliff:g>%s</xliff:g></item>
</plurals>
<string name="settings_locale">语言</string>
<string name="setIcon">设置图</string>
<string name="setIcon">设置缩略</string>
<string name="settings_pink_theme">粉色</string>
<string name="settings_oled_dark">纯黑色背景的深色主题</string>
<string name="translate_platform">在Weblate上</string>
@@ -247,12 +246,12 @@
<string name="failedToRetrieveImageFile">无法检索图像文件</string>
<string name="newBalanceSentence">新余额:<xliff:g>%s</xliff:g></string>
<string name="barcodeLongPressMessage">只能在图库应用程序中打开图像</string>
<string name="storageReadPermissionRequired">此操作所需的读取存储空间的权限…</string>
<string name="storageReadPermissionRequired">此操作所需的读取存储空间的权限…</string>
<string name="validFromDate">有效期自</string>
<string name="anyDate">任何日期</string>
<string name="chooseValidFromDate">选择有效日期</string>
<string name="validFromSentence">有效期自: <xliff:g>%s</xliff:g></string>
<string name="cameraPermissionRequired">此操作所需的访问相机的权限…</string>
<string name="cameraPermissionRequired">此操作所需的访问相机的权限…</string>
<string name="height">高度:</string>
<string name="switchToFrontImage">选择正面图像</string>
<string name="switchToBackImage">选择背面图像</string>
@@ -261,4 +260,20 @@
<string name="openBackImageInGalleryApp">使用图库软件打开背面图像</string>
<string name="setBarcodeHeight">设置条形码高度</string>
<string name="donate">捐赠</string>
<string name="icon_header_click_text">长按可编辑缩略图</string>
<string name="show_note">显示备注</string>
<string name="show_balance">显示余额</string>
<string name="show_name_below_image_thumbnail">在图像缩略图下方显示名称</string>
<string name="show_validity">显示有效性</string>
<string name="permissionReadCardsLabel">读取 Catima 卡</string>
<string name="settings_allow_content_provider_read_summary">应用程序仍然需要请求权限</string>
<string name="settings_allow_content_provider_read_title">允许其他应用程序访问我的数据</string>
<string name="permissionReadCardsDescription">读取你的卡片及其所有细节,包括笔记和图像</string>
<string name="settings_keep_screen_on_summary">在查看卡片时禁止屏幕超时</string>
<string name="settings_oled_dark_summary">减少 OLED 显示屏上的电池使用量</string>
<string name="settings_category_title_privacy">隐私</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">查看卡片时禁用屏幕锁</string>
<string name="settings_display_barcode_max_brightness_summary">一些扫描仪工作所必需的</string>
<string name="settings_category_title_cards">卡包</string>
<string name="settings_category_title_general">常规</string>
</resources>

View File

@@ -14,7 +14,7 @@
\n
\n我們並不會收集任何資料任何人都可以檢視我們的原始碼並驗證這點。</string>
<string name="star">新增至收藏</string>
<string name="app_license">公共版權 (Copylefted) 的自由軟體,許可 GPLv3+</string>
<string name="app_license">公共版權Copylefted的自由軟體,許可 GPLv3+</string>
<string name="unstar">從收藏中移除</string>
<string name="cancel">取消</string>
<string name="save">儲存</string>
@@ -29,12 +29,12 @@
<string name="addManually">手動輸入 ID</string>
<string name="all">全部</string>
<string name="balance">餘額</string>
<string name="balanceSentence">餘額: <xliff:g>%s</xliff:g></string>
<string name="balanceSentence">餘額<xliff:g>%s</xliff:g></string>
<string name="app_copyright_old">基於 Loyalty Card Keychain\n著作權所有 © 20162020 Branden Archer</string>
<string name="barcodeId">條碼內容</string>
<string name="barcodeImageDescriptionWithType">圖片為 <xliff:g>%s</xliff:g> 的條碼</string>
<string name="card">卡片</string>
<string name="card_ids_copied">已複製 ID(s)</string>
<string name="card_ids_copied">已複製 ID</string>
<string name="cardShortcut">卡片捷徑</string>
<string name="chooseExpiryDate">選擇逾期日期</string>
<string name="chooseImportType">從地點匯入資料</string>
@@ -60,7 +60,7 @@
<string name="exporting">匯出中…</string>
<string name="exportName">匯出</string>
<string name="exportOptionExplanation">資料將寫至您所選的位置。</string>
<string name="exportPassword">透過密碼保護您的匯出檔 (選用)</string>
<string name="exportPassword">透過密碼保護您的匯出檔選用</string>
<string name="exportPasswordHint">輸入密碼</string>
<string name="exportSuccessful">已匯出資料</string>
<string name="exportSuccessfulTitle">已匯出</string>
@@ -70,14 +70,14 @@
<string name="groups">群組</string>
<string name="groupsList">群組:<xliff:g>%s</xliff:g></string>
<string name="help_translate_this_app">幫助翻譯本程式</string>
<string name="importExport">匯入/匯出</string>
<string name="importExport">匯入匯出</string>
<string name="importFailedTitle">匯入失敗</string>
<string name="importFailed">無法匯入資料</string>
<string name="importing">匯入中…</string>
<string name="importSuccessfulTitle">已匯入</string>
<string name="intent_import_card_from_url_share_multiple_text">我想要分享些卡片給你</string>
<string name="intent_import_card_from_url_share_text">我想要分享張卡片給你</string>
<string name="leaveWithoutSaveConfirmation">存就離開?</string>
<string name="leaveWithoutSaveConfirmation">存就離開?</string>
<string name="leaveWithoutSaveTitle">離開</string>
<string name="license">許可</string>
<string name="never">永不</string>
@@ -123,7 +123,7 @@
<string name="settings_locale">語言</string>
<string name="settings_system_locale">系統語言</string>
<string name="settings_theme_color">主題顏色</string>
<string name="app_contributors">感謝以下貢獻者: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="app_contributors">感謝以下貢獻者<xliff:g id="app_contributors">%s</xliff:g></string>
<string name="privacy_policy">隱私權政策</string>
<plurals name="selectedCardCount">
<item quantity="other">已選取 <xliff:g>%d</xliff:g></item>
@@ -132,7 +132,7 @@
<item quantity="other">刪除 <xliff:g>%d</xliff:g> 張卡片</item>
</plurals>
<plurals name="deleteCardsConfirmation">
<item quantity="other">永久刪除 <xliff:g>%d</xliff:g> 張卡片?</item>
<item quantity="other">永久刪除 <xliff:g>%d</xliff:g> 張卡片</item>
</plurals>
<plurals name="groupCardCount">
<item quantity="other"><xliff:g>%d</xliff:g> 張卡片</item>
@@ -143,7 +143,6 @@
<string name="settings_theme">主題</string>
<string name="thumbnailDescription">縮圖</string>
<string name="noGroupCards">此群組為空</string>
<string name="settings_category_title_ui">用戶界面</string>
<string name="settings_light_theme">淺色</string>
<string name="settings_dark_theme">深色</string>
<string name="settings_display_barcode_max_brightness">調高條碼介面螢幕亮度</string>
@@ -178,10 +177,10 @@
\n請您先透過您的 FidMe 個人檔案選取『Data Protection』並選擇『Extract my data』。</string>
<string name="importCatima">自 Catima 匯入</string>
<string name="importCatimaMessage">選取您自 Catima 匯出的 <i>catima.zip</i> 檔案以進行匯入。
\n您可透過其他裝置的 Catima 程式中的匯入/匯出選單進行匯出。</string>
\n您可透過其他裝置的 Catima 程式中的匯入匯出選單進行匯出。</string>
<string name="points"></string>
<string name="parsingBalanceFailed"><xliff:g>%s</xliff:g> 似乎不是個可用的餘額數值。</string>
<string name="app_libraries">第三方自由函庫:<xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_libraries">第三方自由函庫:<xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_resources">第三方自由資源:<xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="selectBarcodeTitle">選擇條碼</string>
<string name="noGroups">請點選 + 加號按鈕新增群組。</string>
@@ -202,7 +201,7 @@
<item quantity="other"><xliff:g>%s</xliff:g> 個點數</item>
</plurals>
<string name="selectColor">選擇顏色</string>
<string name="setIcon">設定圖</string>
<string name="setIcon">設定</string>
<string name="group_edit">編輯群組</string>
<string name="group_name_already_in_use">此群組名稱已存在</string>
<string name="group_name_is_empty">群組名稱不能為空</string>
@@ -235,7 +234,7 @@
<string name="nextCard">下一張</string>
<string name="welcome">歡迎使用 Catima</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="other">檢視封存 (<xliff:g>%1$d</xliff:g> 張卡片)</item>
<item quantity="other">檢視封存<xliff:g>%1$d</xliff:g> 張卡片</item>
</plurals>
<string name="settings_lock_on_opening_orientation">開啟卡片時鎖定的方向</string>
<string name="importCards">導入卡片</string>
@@ -243,13 +242,26 @@
<string name="validFromDate">生效</string>
<string name="anyDate">任何日期</string>
<string name="chooseValidFromDate">選擇生效日期</string>
<string name="validFromSentence">生效日期: <xliff:g>%s</xliff:g></string>
<string name="validFromSentence">生效日期:<xliff:g>%s</xliff:g></string>
<string name="storageReadPermissionRequired">這個行動需要閱讀儲存空間的權限…</string>
<string name="cameraPermissionRequired">這個行動需要使用鏡頭的權限…</string>
<string name="cameraPermissionDeniedTitle">不能使用鏡頭</string>
<string name="updateBalance">更新餘額</string>
<string name="updateBalanceTitle">你用了多少?</string>
<string name="updateBalanceHint">輸入金額</string>
<string name="currentBalanceSentence">餘額: <xliff:g>%s</xliff:g></string>
<string name="newBalanceSentence">新的餘額: <xliff:g>%s</xliff:g></string>
</resources>
<string name="currentBalanceSentence">餘額:<xliff:g>%s</xliff:g></string>
<string name="newBalanceSentence">新的餘額:<xliff:g>%s</xliff:g></string>
<string name="switchToBarcode">選擇條碼</string>
<string name="openFrontImageInGalleryApp">以圖庫軟件開啟正面圖片</string>
<string name="show_note">顯示備註</string>
<string name="show_balance">顯示餘額</string>
<string name="show_validity">顯示有效性</string>
<string name="switchToFrontImage">選擇正面圖片</string>
<string name="switchToBackImage">選擇背面圖片</string>
<string name="height">高度:</string>
<string name="donate">捐款</string>
<string name="icon_header_click_text">長按以編輯縮圖</string>
<string name="openBackImageInGalleryApp">以圖庫軟體開啟背面圖片</string>
<string name="show_name_below_image_thumbnail">在縮圖下方顯示名稱</string>
<string name="setBarcodeHeight">設定條碼高度</string>
</resources>

View File

@@ -67,6 +67,8 @@
<string name="exporting">Exporting…</string>
<string name="storageReadPermissionRequired">Permission to read storage needed for this action…</string>
<string name="cameraPermissionRequired">Permission to access camera needed for this action…</string>
<string name="permissionReadCardsLabel">Read Catima Cards</string>
<string name="permissionReadCardsDescription">Read your cards and all its details, including notes and images</string>
<string name="cameraPermissionDeniedTitle">Could not access the camera</string>
<string name="noCameraPermissionDirectToSystemSetting">To scan barcodes, Catima will need access to your camera. Tap here to change your permission settings.</string>
<string name="exportOptionExplanation">The data will be written to a location of your choice.</string>
@@ -90,7 +92,6 @@
<string name="thumbnailDescription">Thumbnail</string>
<string name="starImage">Favorite star</string>
<string name="settings">Settings</string>
<string name="settings_category_title_ui">User interface</string>
<string name="settings_theme">Theme</string>
<string name="settings_key_theme" translatable="false">pref_theme</string>
<string name="settings_system_theme">System</string>
@@ -111,11 +112,17 @@
<string name="settings_key_lock_on_opening_orientation" translatable="false">lock_on_opening</string>
<string name="settings_key_max_font_size_scale" translatable="false">pref_max_font_size_scale</string>
<string name="settings_display_barcode_max_brightness">Brighten barcode view</string>
<string name="settings_display_barcode_max_brightness_summary">Necessary for some scanners to work</string>
<string name="settings_key_display_barcode_max_brightness" translatable="false">pref_display_card_max_brightness</string>
<string name="settings_keep_screen_on">Keep screen on</string>
<string name="settings_keep_screen_on_summary">Disables screen timeout while viewing a card</string>
<string name="settings_key_keep_screen_on" translatable="false">pref_keep_screen_on</string>
<string name="settings_disable_lockscreen_while_viewing_card">Prevent screen lock</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Disables screen lock while viewing a card</string>
<string name="settings_allow_content_provider_read_title">Allow other apps to access my data</string>
<string name="settings_allow_content_provider_read_summary">Apps will still have to request permission to be granted access</string>
<string name="settings_key_disable_lockscreen_while_viewing_card" translatable="false">pref_disable_lockscreen_while_viewing_card</string>
<string name="settings_key_allow_content_provider_read" translatable="false">pref_allow_content_provider_read</string>
<string name="settings_key_oled_dark" translatable="false">pref_oled_dark</string>
<string name="sharedpreference_active_tab" translatable="false">sharedpreference_active_tab</string>
<string name="sharedpreference_privacy_policy_shown" translatable="false">sharedpreference_privacy_policy_shown</string>
@@ -123,7 +130,6 @@
<string name="sharedpreference_sort_order" translatable="false">sharedpreference_sort_order</string>
<string name="sharedpreference_sort_direction" translatable="false">sharedpreference_sort_direction</string>
<string name="sharedpreference_card_details" translatable="false">sharedpreference_card_details</string>
<string name="sharedpreference_card_details_show" translatable="false">sharedpreference_card_details_show</string>
<string name="intent_import_card_from_url_share_text">I want to share a card with you</string>
<string name="intent_import_card_from_url_host_catima_app" translatable="false">catima.app</string>
<string name="intent_import_card_from_url_path_prefix_catima_app" translatable="false">/share</string>
@@ -221,10 +227,11 @@
<string name="turn_flashlight_off">Turn flashlight off</string>
<string name="settings_locale">Language</string>
<string name="settings_oled_dark">Pure black background for dark theme</string>
<string name="settings_oled_dark_summary">Reduces battery usage on OLED displays</string>
<string name="settings_key_locale" translatable="false">pref_locale</string>
<string name="settings_system_locale">System</string>
<string name="selectColor">Select color</string>
<string name="setIcon">Set icon</string>
<string name="setIcon">Set thumbnail</string>
<string name="setting_key_theme_color" translatable="false">pref_theme_color</string>
<string name="settings_theme_color">Theme color</string>
<string name="settings_catima_theme">Catima</string>
@@ -313,5 +320,16 @@
<string name="openBackImageInGalleryApp">Open back image in gallery app</string>
<string name="setBarcodeHeight">Set barcode height</string>
<string name="donate">Donate</string>
<string name="icon_header_click_text">Long press to edit icon</string>
<string name="icon_header_click_text">Long press to edit thumbnail</string>
<string name="show_name_below_image_thumbnail">Show name below image thumbnail</string>
<string name="show_note">Show note</string>
<string name="show_balance">Show balance</string>
<string name="show_validity">Show validity</string>
<string name="sharedpreference_card_details_show_note" translatable="false">sharedpreference_card_details_show_note</string>
<string name="sharedpreference_card_details_show_balance" translatable="false">sharedpreference_card_details_show_balance</string>
<string name="sharedpreference_card_details_show_validity" translatable="false">sharedpreference_card_details_show_validity</string>
<string name="sharedpreference_card_details_show_name_below_thumbnail" translatable="false">sharedpreference_card_details_show_name_below_thumbnail</string>
<string name="settings_category_title_cards">Cards</string>
<string name="settings_category_title_general">General</string>
<string name="settings_category_title_privacy">Privacy</string>
</resources>

View File

@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
android:title="@string/settings_category_title_ui"
android:title="@string/settings_category_title_general"
app:iconSpaceReserved="false">
<ListPreference
@@ -13,7 +13,8 @@
android:key="@string/settings_key_theme"
android:title="@string/settings_theme"
app:iconSpaceReserved="false"
app:singleLineTitle="false" />
app:singleLineTitle="false"
app:useSimpleSummaryProvider="true" />
<ListPreference
android:key="@string/setting_key_theme_color"
@@ -22,12 +23,14 @@
android:entries="@array/color_value_strings"
android:entryValues="@array/color_values"
app:iconSpaceReserved="false"
app:singleLineTitle="false" />
app:singleLineTitle="false"
app:useSimpleSummaryProvider="true" />
<SwitchPreferenceCompat
android:widgetLayout="@layout/preference_material_switch"
android:defaultValue="false"
android:key="@string/settings_key_oled_dark"
android:summary="@string/settings_oled_dark_summary"
android:title="@string/settings_oled_dark"
app:iconSpaceReserved="false"
app:singleLineTitle="false" />
@@ -39,12 +42,19 @@
android:key="@string/settings_key_locale"
android:title="@string/settings_locale"
app:iconSpaceReserved="false"
app:singleLineTitle="false" />
app:singleLineTitle="false"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/settings_category_title_cards"
app:iconSpaceReserved="false">
<SwitchPreferenceCompat
android:widgetLayout="@layout/preference_material_switch"
android:defaultValue="true"
android:key="@string/settings_key_display_barcode_max_brightness"
android:summary="@string/settings_display_barcode_max_brightness_summary"
android:title="@string/settings_display_barcode_max_brightness"
app:iconSpaceReserved="false"
app:singleLineTitle="false" />
@@ -56,12 +66,14 @@
android:key="@string/settings_key_card_orientation"
android:title="@string/settings_card_orientation"
app:iconSpaceReserved="false"
app:singleLineTitle="false" />
app:singleLineTitle="false"
app:useSimpleSummaryProvider="true" />
<SwitchPreferenceCompat
android:widgetLayout="@layout/preference_material_switch"
android:defaultValue="true"
android:key="@string/settings_key_keep_screen_on"
android:summary="@string/settings_keep_screen_on_summary"
android:title="@string/settings_keep_screen_on"
app:iconSpaceReserved="false"
app:singleLineTitle="false" />
@@ -70,11 +82,25 @@
android:widgetLayout="@layout/preference_material_switch"
android:defaultValue="true"
android:key="@string/settings_key_disable_lockscreen_while_viewing_card"
android:summary="@string/settings_disable_lockscreen_while_viewing_card_summary"
android:title="@string/settings_disable_lockscreen_while_viewing_card"
app:iconSpaceReserved="false"
app:singleLineTitle="false" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/settings_category_title_privacy"
app:iconSpaceReserved="false">
<SwitchPreferenceCompat
android:widgetLayout="@layout/preference_material_switch"
android:defaultValue="true"
android:key="@string/settings_key_allow_content_provider_read"
android:summary="@string/settings_allow_content_provider_read_summary"
android:title="@string/settings_allow_content_provider_read_title"
app:iconSpaceReserved="false"
app:singleLineTitle="false" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -67,25 +67,6 @@ public class ImportExportTest {
mDatabase = TestHelpers.getEmptyDb(activity).getWritableDatabase();
}
/**
* Add the given number of cards, each with
* an index in the store name.
*
* @param cardsToAdd
*/
private void addLoyaltyCards(int cardsToAdd) {
// Add in reverse order to test sorting
for (int index = cardsToAdd; index > 0; index--) {
String storeName = String.format("store, \"%4d", index);
String note = String.format("note, \"%4d", index);
long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, index, 0, null,0);
boolean result = (id != -1);
assertTrue(result);
}
assertEquals(cardsToAdd, DBHelper.getLoyaltyCardCount(mDatabase));
}
private void addLoyaltyCardsFiveStarred() {
int cardsToAdd = 9;
// Add in reverse order to test sorting
@@ -183,18 +164,6 @@ public class ImportExportTest {
assertEquals(4, DBHelper.getLoyaltyCardCount(mDatabase));
}
private void addGroups(int groupsToAdd) {
// Add in reverse order to test sorting
for (int index = groupsToAdd; index > 0; index--) {
String groupName = String.format("group, \"%4d", index);
long id = DBHelper.insertGroup(mDatabase, groupName);
boolean result = (id != -1);
assertTrue(result);
}
assertEquals(groupsToAdd, DBHelper.getGroupCount(mDatabase));
}
/**
* Check that all of the cards follow the pattern
* specified in addLoyaltyCards(), and are in sequential order
@@ -285,7 +254,7 @@ public class ImportExportTest {
/**
* Check that all of the groups follow the pattern
* specified in addGroups(), and are in sequential order
* specified in {@link TestHelpers#addGroups}, and are in sequential order
* where the smallest group's index is 1
*/
private void checkGroups() {
@@ -308,7 +277,7 @@ public class ImportExportTest {
public void multipleCardsExportImport() throws IOException {
final int NUM_CARDS = 10;
addLoyaltyCards(NUM_CARDS);
TestHelpers.addLoyaltyCards(mDatabase, NUM_CARDS);
ByteArrayOutputStream outData = new ByteArrayOutputStream();
OutputStreamWriter outStream = new OutputStreamWriter(outData);
@@ -338,7 +307,7 @@ public class ImportExportTest {
final int NUM_CARDS = 10;
List<char[]> passwords = Arrays.asList(null, "123456789".toCharArray());
for (char[] password : passwords) {
addLoyaltyCards(NUM_CARDS);
TestHelpers.addLoyaltyCards(mDatabase, NUM_CARDS);
ByteArrayOutputStream outData = new ByteArrayOutputStream();
OutputStreamWriter outStream = new OutputStreamWriter(outData);
@@ -411,8 +380,8 @@ public class ImportExportTest {
final int NUM_CARDS = 10;
final int NUM_GROUPS = 3;
addLoyaltyCards(NUM_CARDS);
addGroups(NUM_GROUPS);
TestHelpers.addLoyaltyCards(mDatabase, NUM_CARDS);
TestHelpers.addGroups(mDatabase, NUM_GROUPS);
List<Group> emptyGroup = new ArrayList<>();
@@ -484,7 +453,7 @@ public class ImportExportTest {
public void importExistingCardsNotReplace() throws IOException {
final int NUM_CARDS = 10;
addLoyaltyCards(NUM_CARDS);
TestHelpers.addLoyaltyCards(mDatabase, NUM_CARDS);
ByteArrayOutputStream outData = new ByteArrayOutputStream();
OutputStreamWriter outStream = new OutputStreamWriter(outData);
@@ -513,7 +482,7 @@ public class ImportExportTest {
final int NUM_CARDS = 10;
for (DataFormat format : DataFormat.values()) {
addLoyaltyCards(NUM_CARDS);
TestHelpers.addLoyaltyCards(mDatabase, NUM_CARDS);
ByteArrayOutputStream outData = new ByteArrayOutputStream();
OutputStreamWriter outStream = new OutputStreamWriter(outData);
@@ -558,7 +527,7 @@ public class ImportExportTest {
final File sdcardDir = Environment.getExternalStorageDirectory();
final File exportFile = new File(sdcardDir, "Catima.csv");
addLoyaltyCards(NUM_CARDS);
TestHelpers.addLoyaltyCards(mDatabase, NUM_CARDS);
TestTaskCompleteListener listener = new TestTaskCompleteListener();

View File

@@ -97,6 +97,37 @@ public class ImportURITest {
assertEquals(0, parsedCard.archiveStatus);
}
@Test
public void parseWithTrailingSlash() throws InvalidObjectException, UnsupportedEncodingException {
// Generate card
DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("10.00"), Currency.getInstance("EUR"), BarcodeFormat.UPC_A.toString(), null, CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE), null, 0, null,0);
// Get card
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
// Card to URI, with a trailing slash
Uri cardUri = importURIHelper.toUri(card).buildUpon().path("/share/").build();
assertEquals("/share/", cardUri.getPath());
// Parse URI
LoyaltyCard parsedCard = importURIHelper.parse(cardUri);
// Compare everything
assertEquals(card.store, parsedCard.store);
assertEquals(card.note, parsedCard.note);
assertEquals(card.validFrom, parsedCard.validFrom);
assertEquals(card.expiry, parsedCard.expiry);
assertEquals(card.balance, parsedCard.balance);
assertEquals(card.balanceType, parsedCard.balanceType);
assertEquals(card.cardId, parsedCard.cardId);
assertEquals(card.barcodeId, parsedCard.barcodeId);
assertEquals(card.barcodeType.format(), parsedCard.barcodeType.format());
assertNull(parsedCard.headerColor);
// No export of starStatus for export URL foreseen therefore 0 will be imported
assertEquals(0, parsedCard.starStatus);
assertEquals(0, parsedCard.archiveStatus);
}
@Test
public void failToParseInvalidUri() {
try {

View File

@@ -62,7 +62,7 @@ public class MainActivityTest {
assertEquals(menu.size(), 8);
assertEquals("Search", menu.findItem(R.id.action_search).getTitle().toString());
assertEquals("Sort", menu.findItem(R.id.action_sort).getTitle().toString());
assertEquals("Hide details", menu.findItem(R.id.action_unfold).getTitle().toString());
assertEquals("Show details", menu.findItem(R.id.action_shown_details).getTitle().toString());
assertEquals("Groups", menu.findItem(R.id.action_manage_groups).getTitle().toString());
assertEquals("Archive", menu.findItem(R.id.action_archived).getTitle().toString());
assertEquals("Import/Export", menu.findItem(R.id.action_import_export).getTitle().toString());

View File

@@ -1,14 +1,23 @@
package protect.card_locker;
import android.app.Activity;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.google.zxing.BarcodeFormat;
import java.io.FileNotFoundException;
import java.math.BigDecimal;
public class TestHelpers {
static public DBHelper getEmptyDb(Activity activity) {
DBHelper db = new DBHelper(activity);
private static final String BARCODE_DATA = "428311627547";
private static final CatimaBarcode BARCODE_TYPE = CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A);
public static DBHelper getEmptyDb(Context context) {
DBHelper db = new DBHelper(context);
SQLiteDatabase database = db.getWritableDatabase();
// Make sure no files remain
@@ -19,7 +28,7 @@ public class TestHelpers {
for (ImageLocationType imageLocationType : ImageLocationType.values()) {
try {
Utils.saveCardImage(activity.getApplicationContext(), null, cardID, imageLocationType);
Utils.saveCardImage(context.getApplicationContext(), null, cardID, imageLocationType);
} catch (FileNotFoundException ignored) {
}
}
@@ -34,4 +43,35 @@ public class TestHelpers {
return db;
}
/**
* Add the given number of cards, each with an index in the store name.
*
* @param mDatabase
* @param cardsToAdd
*/
public static void addLoyaltyCards(final SQLiteDatabase mDatabase, final int cardsToAdd) {
// Add in reverse order to test sorting
for (int index = cardsToAdd; index > 0; index--) {
String storeName = String.format("store, \"%4d", index);
String note = String.format("note, \"%4d", index);
long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, index, 0, null,0);
boolean result = (id != -1);
assertTrue(result);
}
assertEquals(cardsToAdd, DBHelper.getLoyaltyCardCount(mDatabase));
}
public static void addGroups(final SQLiteDatabase mDatabase, int groupsToAdd) {
// Add in reverse order to test sorting
for (int index = groupsToAdd; index > 0; index--) {
String groupName = String.format("group, \"%4d", index);
long id = DBHelper.insertGroup(mDatabase, groupName);
boolean result = (id != -1);
assertTrue(result);
}
assertEquals(groupsToAdd, DBHelper.getGroupCount(mDatabase));
}
}

View File

@@ -0,0 +1,259 @@
package protect.card_locker.contentprovider;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import android.content.ContentProvider;
import android.content.ContentResolver;
import android.content.pm.ProviderInfo;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import java.math.BigDecimal;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Currency;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import protect.card_locker.CatimaBarcode;
import protect.card_locker.DBHelper;
import protect.card_locker.Group;
import protect.card_locker.TestHelpers;
@RunWith(RobolectricTestRunner.class)
public class CardsContentProviderTest {
private ContentResolver mResolver;
private DBHelper dbHelper;
private SQLiteDatabase mDatabase;
@Before
public void setUp() {
final ContentProvider contentProvider = new CardsContentProvider();
final ProviderInfo providerInfo = new ProviderInfo();
providerInfo.authority = CardsContentProvider.AUTHORITY;
contentProvider.attachInfo(RuntimeEnvironment.getApplication(), providerInfo);
contentProvider.onCreate();
Robolectric.buildContentProvider(CardsContentProvider.class).create(providerInfo);
mResolver = RuntimeEnvironment.getApplication().getContentResolver();
dbHelper = TestHelpers.getEmptyDb(RuntimeEnvironment.getApplication());
mDatabase = dbHelper.getWritableDatabase();
}
@After
public void cleanup() {
mDatabase.close();
dbHelper.close();
}
@Test
public void testVersion() {
final Uri versionUri = getUri("version");
try (Cursor cursor = mResolver.query(versionUri, null, null, null)) {
assertEquals("number of entries", 1, cursor.getCount());
assertEquals("number of columns", 2, cursor.getColumnCount());
assertArrayEquals("column names", new String[]{"major", "minor"}, cursor.getColumnNames());
cursor.moveToNext();
assertEquals("major version", 1, cursor.getInt(cursor.getColumnIndexOrThrow("major")));
assertEquals("minor version", 0, cursor.getInt(cursor.getColumnIndexOrThrow("minor")));
}
}
@Test
public void testCards() {
final Uri cardsUri = getUri("cards");
try (Cursor cursor = mResolver.query(cardsUri, null, null, null)) {
assertEquals(cursor.getCount(), 0);
}
final String store = "the best store";
final String note = "this is a note";
final Date validFrom = Date.from(Instant.ofEpochMilli(1687112209000L));
final Date expiry = Date.from(Instant.ofEpochMilli(1687112277000L));
final BigDecimal balance = new BigDecimal("123.20");
final Currency balanceType = Currency.getInstance("EUR");
final String cardId = "a-card-id";
final String barcodeId = "barcode-id";
final CatimaBarcode barcodeType = CatimaBarcode.fromName("QR_CODE");
final int headerColor = 0xFFFF00FF;
final int starStatus = 1;
final long lastUsed = 1687112282000L;
final int archiveStatus = 1;
long id = DBHelper.insertLoyaltyCard(
mDatabase, store, note, validFrom, expiry, balance, balanceType,
cardId, barcodeId, barcodeType, headerColor, starStatus, lastUsed,
archiveStatus
);
assertEquals("expect first card", 1, id);
try (Cursor cursor = mResolver.query(cardsUri, null, null, null)) {
assertEquals("number of cards", 1, cursor.getCount());
final String[] expectedColumns = new String[]{
"_id", "store", "validfrom", "expiry", "balance", "balancetype",
"note", "headercolor", "cardid", "barcodeid",
"barcodetype", "starstatus", "lastused", "archive"
};
assertEquals("number of columns", expectedColumns.length, cursor.getColumnCount());
assertEquals(
"column names",
new HashSet<>(Arrays.asList(expectedColumns)),
new HashSet<>(Arrays.asList(cursor.getColumnNames()))
);
cursor.moveToNext();
final int actualId = cursor.getInt(cursor.getColumnIndexOrThrow("_id"));
final String actualName = cursor.getString(cursor.getColumnIndexOrThrow("store"));
final String actualNote = cursor.getString(cursor.getColumnIndexOrThrow("note"));
final long actualValidFrom = cursor.getLong(cursor.getColumnIndexOrThrow("validfrom"));
final long actualExpiry = cursor.getLong(cursor.getColumnIndexOrThrow("expiry"));
final BigDecimal actualBalance = new BigDecimal(cursor.getString(cursor.getColumnIndexOrThrow("balance")));
final String actualBalanceType = cursor.getString(cursor.getColumnIndexOrThrow("balancetype"));
final String actualCardId = cursor.getString(cursor.getColumnIndexOrThrow("cardid"));
final String actualBarcodeId = cursor.getString(cursor.getColumnIndexOrThrow("barcodeid"));
final String actualBarcodeType = cursor.getString(cursor.getColumnIndexOrThrow("barcodetype"));
final int actualHeaderColor = cursor.getInt(cursor.getColumnIndexOrThrow("headercolor"));
final int actualStarred = cursor.getInt(cursor.getColumnIndexOrThrow("starstatus"));
final long actualLastUsed = cursor.getLong(cursor.getColumnIndexOrThrow("lastused"));
final int actualArchiveStatus = cursor.getInt(cursor.getColumnIndexOrThrow("archive"));
assertEquals("Id", 1, actualId);
assertEquals("Name", store, actualName);
assertEquals("Note", note, actualNote);
assertEquals("ValidFrom", validFrom.getTime(), actualValidFrom);
assertEquals("Expiry", expiry.getTime(), actualExpiry);
assertEquals("Balance", balance, actualBalance);
assertEquals("BalanceTypeColumn", balanceType.toString(), actualBalanceType);
assertEquals("CardId", cardId, actualCardId);
assertEquals("BarcodeId", barcodeId, actualBarcodeId);
assertEquals("BarcodeType", barcodeType.format().name(), actualBarcodeType);
assertEquals("HeaderColorColumn", headerColor, actualHeaderColor);
assertEquals("Starred", starStatus, actualStarred);
assertEquals("LastUsed", lastUsed, actualLastUsed);
assertEquals("ArchiveStatus", archiveStatus, actualArchiveStatus);
}
}
@Test
public void testCardsProjection() {
final Uri cardsUri = getUri("cards");
try (Cursor cursor = mResolver.query(cardsUri, null, null, null)) {
assertEquals(cursor.getCount(), 0);
}
TestHelpers.addLoyaltyCards(mDatabase, 1);
// Query with projection of columns, including internal column names, which should be filtered out
try (Cursor cursor = mResolver.query(cardsUri, new String[] {"_id", "store", "zoomlevel"}, null, null)) {
assertEquals("number of cards", 1, cursor.getCount());
assertEquals("number of columns", 2, cursor.getColumnCount());
assertArrayEquals("column names", new String[]{"_id", "store"}, cursor.getColumnNames());
cursor.moveToNext();
final int actualId = cursor.getInt(cursor.getColumnIndexOrThrow("_id"));
final String actualName = cursor.getString(cursor.getColumnIndexOrThrow("store"));
assertEquals("id", 1, actualId);
assertEquals("store", "store, \" 1", actualName);
}
}
@Test
public void testGroups() {
final Uri groupsUri = getUri("groups");
try (Cursor cursor = mResolver.query(groupsUri, null, null, null)) {
assertEquals("start without groups", 0, cursor.getCount());
}
TestHelpers.addGroups(mDatabase, 4);
try (Cursor cursor = mResolver.query(groupsUri, null, null, null)) {
assertEquals("number of groups", 4, cursor.getCount());
assertEquals("number of columns", 2, cursor.getColumnCount());
assertArrayEquals("column names", new String[]{"_id", "orderId"}, cursor.getColumnNames());
for (int i = 0; i < 4; i++) {
cursor.moveToNext();
assertEquals(
String.format("groups[%d]._id", i),
String.format("group, \"%4d", 4 - i),
cursor.getString(cursor.getColumnIndexOrThrow("_id"))
);
assertEquals(
String.format("groups[%d].orderId", i),
String.valueOf(i),
cursor.getString(cursor.getColumnIndexOrThrow("orderId"))
);
}
}
}
@Test
public void testCardGroups() {
final Uri cardGroupsUri = getUri("card_groups");
try (Cursor cursor = mResolver.query(cardGroupsUri, null, null, null)) {
assertEquals(cursor.getCount(), 0);
}
TestHelpers.addLoyaltyCards(mDatabase, 5);
TestHelpers.addGroups(mDatabase, 4);
final List<Group> groupsForOne = new ArrayList<>();
groupsForOne.add(DBHelper.getGroup(mDatabase, "group, \" 1"));
final List<Group> groupsForTwo = new ArrayList<>();
groupsForTwo.add(DBHelper.getGroup(mDatabase, "group, \" 1"));
groupsForTwo.add(DBHelper.getGroup(mDatabase, "group, \" 2"));
DBHelper.setLoyaltyCardGroups(mDatabase, 1, groupsForOne);
DBHelper.setLoyaltyCardGroups(mDatabase, 2, groupsForTwo);
final Map<String, List<String>> expectedGroups = new HashMap<>() {{
put("group, \" 1", Arrays.asList("1", "2"));
put("group, \" 2", Collections.singletonList("2"));
}};
try (Cursor cursor = mResolver.query(cardGroupsUri, null, null, null)) {
assertEquals("number of card groups", 3, cursor.getCount());
assertEquals("number of columns", 2, cursor.getColumnCount());
assertArrayEquals("column names", new String[]{"cardId", "groupId"}, cursor.getColumnNames());
final Map<String, List<String>> groups = new HashMap<>();
while (cursor.moveToNext()) {
final String cardId = cursor.getString(cursor.getColumnIndexOrThrow("cardId"));
final String groupId = cursor.getString(cursor.getColumnIndexOrThrow("groupId"));
groups.computeIfAbsent(groupId, k -> new ArrayList<>()).add(cardId);
}
assertEquals("expected groups with cards", expectedGroups, groups);
}
}
private Uri getUri(final String endpoint) {
return Uri.parse(String.format(Locale.ROOT, "content://%s/%s", CardsContentProvider.AUTHORITY, endpoint));
}
}

78
docs/CONTENT_PROVIDER.md Normal file
View File

@@ -0,0 +1,78 @@
# Content Provider
Catima implements a [content provider](https://developer.android.com/guide/topics/providers/content-providers) to allow for external apps to interact with the cards database. Right now, this only provides read-only functionality.
Since runtime permissions are only available since Android 6.0 (API level 23), the content provider is disabled for older android versions in order to prevent unwanted access to the data.
## Package Names
There are 3 release channels, with 2 possible package names:
| Release Channel | Package Name |
|-----------------|-----------------------------|
| Google Play | me.hackerchick.catima |
| F-Droid | me.hackerchick.catima |
| Debug Build | me.hackerchick.catima.debug |
The package names are required for the authority and permissions, as described below.
## Authority
The authority for this content provider: `<package_name>.contentprovider.cards`
## Permissions
The content provider requires the following permissions:
- `<package_name>.READ_CARDS` - in order to access any of the URIs.
## URIs
### /version
Returns a single record with the current API version for the content provider.
A major version change implies breaking changes (eg. columns being renamed or removed).
| Column | Type | Description | Value |
|---------|-------|-------------------|-------|
| `major` | `int` | The major version | `1` |
| `minor` | `int` | The minor version | `0` |
### /cards
| Column | Type | Description |
|---------------|----------|----------------------------|
| `_id` | `int` | Unique card ID |
| `store` | `String` | Card name |
| `validfrom` | `long` | Timestamp from which the card is valid (unix epoch millis). |
| `expiry` | `long` | Expiration timestamp (unix epoch millis). |
| `balance` | `String` | Current balance, as a string-formatted big decimal. |
| `balancetype` | `String` | Balance currency code, ISO 4217. |
| `note` | `String` | A note. |
| `headercolor` | `int` | Header color, in RGBA. |
| `cardid` | `String` | Card ID. |
| `barcodeid` | `String` | Barcode value. If empty, it's the same as the card ID. |
| `barcodetype` | `String` | The barcode type name, matching [com.google.zxing.BarcodeFormat](https://zxing.github.io/zxing/apidocs/com/google/zxing/BarcodeFormat.html). |
| `starstatus` | `int` | 1 if starred, 0 if not |
| `lastused` | `long` | Timestamp of last card usage (unix epoch millis). |
| `archive` | `int` | 1 if archived, 0 if not |
### /groups
| Column | Type | Description |
|-----------|----------|----------------------------|
| `_id` | `String` | Group name (unique) |
| `orderId` | `int` | Group order, in the UI |
### /card_groups
Returns the mapping between cards and groups, by ID.
- A card can be in 0 or more groups.
- A group can contain 0 or more cards.
| Column | Type | Description |
|-----------|----------|--------------|
| `cardId` | `String` | Card ID |
| `groupId` | `String` | Group ID |

View File

@@ -58,7 +58,7 @@ For FidMe you need to select the barcode type for each entry afterwards.
# Building
Building can either be done through Android Studio (not reproducible!) or the build.sh script in this repository (reproducibly with Java 11, same way F-Droid builds it). This script can also sign the build.
Building can either be done through Android Studio (not reproducible!) or the build.sh script in this repository (reproducibly with OpenJDK 17, same way F-Droid builds it). This script can also sign the build.
Build without signing:
```

View File

@@ -3,7 +3,7 @@
# When releasing, do the following:
1. Press "Commit" and "Push" on Weblate to ensure all translations are up to date
2. Merge Weblate pull request
3. Update `CHANGELOG.md` with the new version name
3. Update `CHANGELOG.md` with the new version name and the release date
4. Update `app/build.gradle` with the new `versionCode` and `versionName`
5. Build a new .apk: `KEYSTORE=/path/to/keystore KEYSTORE_ALIAS=catima ./build.sh`
6. Upload the APK to Google Play Open Testing

View File

@@ -0,0 +1,2 @@
- إخفاء البحث وتوسيع الأيقونات حتى تبقى بطاقة واحدة على الأقل
- تغييرات مختلفة على الثيمات

View File

@@ -1,2 +1,3 @@
- Změna ikony karty v pohledu aktivity dlouhým stisknutím ikony
- Vylepšení stylu tlačítek na obrazovce Skupiny
- Oprava dlouhých hodnot čárového kódu způsobující, že se čárový kód zmenšuje do ztracena

View File

@@ -0,0 +1,2 @@
- Drobná vylepšení uživatelského rozhraní
- Oprava nového vzhledu, který není použitelný na zařízeních se čtvercovými obrazovkami

View File

@@ -0,0 +1 @@
- Podpora výběru, které podrobnosti mají být zobrazeny v přehledu karty

View File

@@ -0,0 +1 @@
- Elegantnější vypořádání s chybějícími barvami hlaviček

View File

@@ -0,0 +1 @@
- Různé opravy pro RTL

View File

@@ -0,0 +1,4 @@
- Vylepšení vykreslování čárových kódů
- Základní spolupráce s externími aplikacemi (Android 6.0+)
- Přeuspořádána obrazovka nastavení
- Oprava importu z některých prohlížečů, které přidávají koncové / do URL sdílení

View File

@@ -0,0 +1 @@
- Oprava občasné havárie

View File

@@ -1 +1,2 @@
- Unterstützung bei der Eingabe des Gültigkeitsbeginns der Karte
- Fehler beim Importieren von Stocard behoben (Stocard's Export Format hat sich verändert)

View File

@@ -0,0 +1 @@
- Verwendung von Material You-Farben auf mehr Geräten (Update der Google-Bibliothek)

View File

@@ -0,0 +1,3 @@
- Komplette Neugestaltung der Haupt- und Treuekartenansicht
- Material You Design für den Einstellungsbildschirm
- Behebung eines Absturzes beim Foto machen mit deaktivierter Kamera-App

View File

@@ -0,0 +1 @@
- Verwendete Bibliotheken upgedatet

View File

@@ -0,0 +1,3 @@
- Langes Drücken auf das Kartensymbol in der Aktivitätsansicht, um es zu ändern
- Verbessertes Styling der Knöpfe im Gruppenbildschirm
- Behebung des Problems, dass lange Barcodewerte dazu führen, dass der Barcode winzig skaliert wird

View File

@@ -0,0 +1,2 @@
- Kleinere UI Verbesserungen
- Behebung des Fehlers, dass das neue Design nicht auf eckigen Bildschirmen verwendbar ist

View File

@@ -0,0 +1 @@
- Unterstützung bei der Auswahl der Details, die in der Kartenübersicht angezeigt werden sollen

View File

@@ -1,2 +1,2 @@
- Durch langes Klicken auf eine Karte wird die Option zum Kopieren der Karten-ID in die Zwischenablage angezeigt. (pull #49 (https://github.com/brarcher/loyalty-card-locker/issues/49))
- Die Zurück-Schaltfläche in der Eingabe-/Exportansicht funktioniert jetzt und bringt den Benutzer zur Hauptansicht
- Die Zurück-Schaltfläche in der Import-/Exportansicht funktioniert jetzt und bringt den Benutzer zur Hauptansicht

View File

@@ -0,0 +1,2 @@
- Minor UI improvements
- Fix new design not being usable on devices with square screens

View File

@@ -0,0 +1 @@
- Support selecting exactly which details to view in card overview

View File

@@ -0,0 +1 @@
- Deal more gracefully with missing header colours

View File

@@ -0,0 +1 @@
- Various RTL fixes

Some files were not shown because too many files have changed in this diff Show More