Compare commits

...

973 Commits

Author SHA1 Message Date
TheLastProject
98ba87ea56 Update feature graphic 2025-04-06 15:25:36 +00:00
Sylvia van Os
d5c03f9d36 Merge pull request #2428 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-04-06 17:24:15 +02:00
Sylvia van Os
6ed2ff849a Translated using Weblate (Persian)
Currently translated at 63.3% (211 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2025-04-06 17:03:08 +02:00
ssantos
2945450186 Translated using Weblate (Portuguese)
Currently translated at 99.3% (144 of 145 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2025-04-06 17:03:08 +02:00
KING APPS
8944c6d5dc Translated using Weblate (Persian)
Currently translated at 22.7% (33 of 145 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fa/
2025-04-06 04:37:03 +02:00
KING APPS
97db8ee025 Translated using Weblate (Persian)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/fa/
2025-04-06 04:37:03 +02:00
KING APPS
777a3cce28 Translated using Weblate (Persian)
Currently translated at 63.3% (211 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2025-04-06 04:37:03 +02:00
Sylvia van Os
91386df0f7 Merge pull request #2426 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-04-04 17:57:07 +02:00
XblateX
9f95812d32 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2025-04-04 16:24:48 +02:00
Sylvia van Os
361b011205 Merge pull request #2425 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-04-04 10:43:46 +02:00
Tachibana Saza
ac45a5cdfe Translated using Weblate (Japanese)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/ja/
2025-04-04 01:21:09 +02:00
Tachibana Saza
e892f5d57c Translated using Weblate (Japanese)
Currently translated at 81.6% (272 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2025-04-04 01:21:08 +02:00
Sylvia van Os
a3d24ebe3b Merge pull request #2424 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-04-02 20:19:30 +02:00
Sylvia van Os
29ce8e63b3 Translated using Weblate (Persian)
Currently translated at 46.2% (154 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2025-04-01 21:03:20 +02:00
alpha chart
223d6d1d35 Translated using Weblate (Persian)
Currently translated at 46.2% (154 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2025-04-01 19:46:49 +02:00
alpha chart
e712765f0b Translated using Weblate (Persian)
Currently translated at 46.2% (154 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2025-04-01 19:24:21 +02:00
alpha chart
ad68c43857 Added translation using Weblate (Persian) 2025-04-01 19:11:23 +02:00
alpha chart
626c25b781 Translated using Weblate (Persian)
Currently translated at 45.9% (153 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2025-04-01 19:11:23 +02:00
Sylvia van Os
0e9366e0ce Merge pull request #2423 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-04-01 07:31:25 +02:00
Branislav Veljkovic
cccffe9543 Translated using Weblate (Serbian)
Currently translated at 94.2% (314 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sr/
2025-04-01 03:27:29 +02:00
Sylvia van Os
821e81303c Merge pull request #2421 from CatimaLoyalty/dependabot/github_actions/actions/setup-python-5.5.0
Bump actions/setup-python from 5.4.0 to 5.5.0
2025-03-31 07:03:14 +02:00
dependabot[bot]
d3ba0ff93f Bump actions/setup-python from 5.4.0 to 5.5.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.4.0 to 5.5.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5.4.0...v5.5.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 02:44:55 +00:00
Sylvia van Os
2bf9f58054 Merge pull request #2420 from CatimaLoyalty/create-pull-request/patch-1743308358
Update contributors
2025-03-30 12:16:15 +02:00
TheLastProject
07ba380c21 Update contributors 2025-03-30 04:19:17 +00:00
Sylvia van Os
6e523dff7e Merge pull request #2419 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-30 00:33:20 +01:00
abdelbasset jabrane
702cc17bd5 Translated using Weblate (Arabic)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2025-03-30 00:02:03 +01:00
Sylvia van Os
6b9c452de7 Merge pull request #2418 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-26 10:32:27 +01:00
mohamad jamshidi
5d9a670225 Translated using Weblate (Persian)
Currently translated at 45.6% (152 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2025-03-26 01:10:20 +01:00
Sylvia van Os
4cb939ab6b Merge pull request #2416 from CatimaLoyalty/dependabot/gradle/com.android.application-8.9.1
Bump com.android.application from 8.9.0 to 8.9.1
2025-03-25 07:14:36 +01:00
dependabot[bot]
f14b2dffcd Bump com.android.application from 8.9.0 to 8.9.1
Bumps com.android.application from 8.9.0 to 8.9.1.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-25 03:03:46 +00:00
Sylvia van Os
55b0ee7a63 Merge pull request #2415 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-24 22:01:08 +01:00
ar djeb
4adfb0d292 Translated using Weblate (Arabic)
Currently translated at 99.3% (331 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2025-03-24 20:18:52 +00:00
Sylvia van Os
948ee26852 Bump fastlane 2025-03-24 18:44:34 +01:00
Sylvia van Os
a652d3fd9a Merge pull request #2413 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.6.2
Bump actions/upload-artifact from 4.6.1 to 4.6.2
2025-03-24 13:21:21 +01:00
Sylvia van Os
18e530f3a0 Merge pull request #2414 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-24 13:13:47 +01:00
Edgars Andersons
a55dcd760c Translated using Weblate (Latvian)
Currently translated at 8.2% (12 of 145 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lv/
2025-03-24 13:04:38 +01:00
Максим Горпиніч
2bbcad03ef Translated using Weblate (Ukrainian)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2025-03-24 13:04:38 +01:00
solokot
cc9c50032c Translated using Weblate (Russian)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2025-03-24 13:04:38 +01:00
dependabot[bot]
06cf3e9288 Bump actions/upload-artifact from 4.6.1 to 4.6.2
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.6.1...v4.6.2)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 03:02:10 +00:00
Sylvia van Os
a25e91dede Merge pull request #2412 from CatimaLoyalty/create-pull-request/patch-1742767250
Update feature graphic
2025-03-23 23:04:21 +01:00
TheLastProject
57086649f4 Update feature graphic 2025-03-23 22:00:50 +00:00
Sylvia van Os
7d2fc03248 Merge pull request #2410 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-23 22:59:38 +01:00
ssantos
b2ad30d1ae Translated using Weblate (Portuguese)
Currently translated at 97.9% (142 of 145 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2025-03-23 19:40:12 +00:00
ssantos
8970a0a031 Translated using Weblate (Portuguese (Portugal))
Currently translated at 97.9% (142 of 145 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_PT/
2025-03-23 19:40:06 +00:00
Sylvia van Os
c9e713cf7f Merge pull request #2409 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-23 17:58:01 +01:00
Fjuro
64e315f0b0 Translated using Weblate (Czech)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2025-03-23 16:18:27 +00:00
Sylvia van Os
f60cf0e674 Merge pull request #2408 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-23 15:50:42 +01:00
大王叫我来巡山
5d2a1b0263 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2025-03-23 15:36:48 +01:00
Sylvia van Os
77860441ad Merge pull request #2406 from CatimaLoyalty/create-pull-request/patch-1742703483
Update contributors
2025-03-23 10:33:48 +01:00
Sylvia van Os
f46ec1ec51 Merge pull request #2405 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-23 10:32:38 +01:00
TheLastProject
e644c347ec Update contributors 2025-03-23 04:18:03 +00:00
B o d o
0b28df9999 Translated using Weblate (German)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2025-03-23 00:34:29 +01:00
Sylvia van Os
dddb3e3a11 Merge pull request #2404 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-22 20:56:27 +01:00
Edgars Andersons
0518821341 Translated using Weblate (Latvian)
Currently translated at 7.5% (11 of 145 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lv/
2025-03-22 19:42:43 +00:00
B o d o
2eefcf1270 Translated using Weblate (German)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2025-03-22 19:42:42 +00:00
Sylvia van Os
93c3705207 Merge pull request #2403 from CatimaLoyalty/create-pull-request/patch-1742664270
Update Fastlane changelogs
2025-03-22 19:16:44 +01:00
TheLastProject
9fcf9e4dd9 Update Fastlane changelogs 2025-03-22 17:24:29 +00:00
Sylvia van Os
392ce9bc79 Fix typo 2025-03-22 18:24:16 +01:00
Sylvia van Os
da3eaf36f1 Release Catima 2.34.5 2025-03-22 18:18:24 +01:00
Sylvia van Os
0458c501c8 Merge pull request #2394 from CatimaLoyalty/create-pull-request/patch-1742235107
Update Fastlane changelogs
2025-03-17 19:12:06 +01:00
TheLastProject
632ef8b3a8 Update Fastlane changelogs 2025-03-17 18:11:47 +00:00
Sylvia van Os
40e5014cc6 Update changelog 2025-03-17 19:11:31 +01:00
Sylvia van Os
ba09eb4ca3 Merge pull request #2393 from CatimaLoyalty/fix/2317
Support pkpass files without any extra data
2025-03-17 19:10:57 +01:00
Sylvia van Os
2c77dcadb5 Support pkpass files without any extra data
Previously, the code assumed one of "boardingPass", "coupon", "eventTicket", "generic" existed and refused to pass a pkpass file without any of them
2025-03-17 18:37:28 +01:00
Sylvia van Os
99eaaebf1c Merge pull request #2392 from CatimaLoyalty/bump/tests_35
Run tests on API 35
2025-03-16 18:41:22 +01:00
Sylvia van Os
f2e77cdf09 Run tests on API 35 2025-03-16 18:31:53 +01:00
Sylvia van Os
8f00b17315 Merge pull request #2391 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-16 00:50:42 +01:00
Fajar Shiddiq
3a17756532 Translated using Weblate (Indonesian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2025-03-16 00:41:45 +01:00
Sylvia van Os
cff3fff971 Merge pull request #2390 from CatimaLoyalty/create-pull-request/patch-1741987875
Update Fastlane changelogs
2025-03-14 22:32:17 +01:00
TheLastProject
2763635f17 Update Fastlane changelogs 2025-03-14 21:31:14 +00:00
Sylvia van Os
1dd1a1273f Update CHANGELOG 2025-03-14 22:31:01 +01:00
Sylvia van Os
3f5b953c16 Merge pull request #2388 from CatimaLoyalty/create-pull-request/patch-1741984134
Update Fastlane changelogs
2025-03-14 22:30:47 +01:00
Sylvia van Os
1539d88d78 Merge pull request #2389 from CatimaLoyalty/fix/pkpassCrash
Fix pkpass reading crashing Catima
2025-03-14 22:30:11 +01:00
Sylvia van Os
91ee846054 Fix pkpass reading crashing Catima 2025-03-14 22:09:04 +01:00
TheLastProject
c5cecee7b1 Update Fastlane changelogs 2025-03-14 20:28:54 +00:00
Sylvia van Os
1e0a52d780 Update CHANGELOG 2025-03-14 21:28:40 +01:00
Sylvia van Os
0792bb1407 Merge pull request #2378 from CatimaLoyalty/feature/android15
Target Android 15
2025-03-14 21:26:58 +01:00
Sylvia van Os
6e9a05389a Merge pull request #2384 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-7.0.8
Bump peter-evans/create-pull-request from 7.0.7 to 7.0.8
2025-03-10 12:11:59 +01:00
dependabot[bot]
68833a7ff1 Bump peter-evans/create-pull-request from 7.0.7 to 7.0.8
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.7 to 7.0.8.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v7.0.7...v7.0.8)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 02:58:22 +00:00
Sylvia van Os
cc7553850a Target Android 15
We apply window insets to basically not draw behind the top and bottom
bar. While this is a slight visual downgrade (we used to draw behind the
top bar before), it at least allows us to target Android 15.
2025-03-09 16:51:06 +01:00
Sylvia van Os
e66277d665 Merge pull request #2382 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-09 12:06:50 +01:00
Sylvia van Os
caea63ea32 Merge pull request #2383 from CatimaLoyalty/create-pull-request/patch-1741493688
Update contributors
2025-03-09 09:55:44 +01:00
TheLastProject
1761465532 Update contributors 2025-03-09 04:14:48 +00:00
Pixiii
8218cc63c7 Translated using Weblate (Lithuanian)
Currently translated at 93.3% (311 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2025-03-08 18:30:12 +01:00
Sylvia van Os
c2ff763311 Merge pull request #2375 from CatimaLoyalty/create-pull-request/patch-1741191680
Update locales
2025-03-07 20:07:08 +01:00
Sylvia van Os
813287a657 Merge pull request #2376 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-07 20:06:47 +01:00
Fjuro
66c3046c4d Translated using Weblate (Czech)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2025-03-07 04:06:57 +01:00
ssantos
acbdf79d79 Translated using Weblate (Portuguese)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2025-03-07 04:06:57 +01:00
Sylvia van Os
ade3db0902 Merge pull request #2372 from CatimaLoyalty/dependabot/gradle/com.android.application-8.9.0
Bump com.android.application from 8.8.2 to 8.9.0
2025-03-05 18:31:24 +01:00
TheLastProject
d66066c195 Update locales 2025-03-05 16:21:19 +00:00
Sylvia van Os
0a222ca16a Merge pull request #2374 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-05 17:21:02 +01:00
ssantos
48fa369dc3 Added translation using Weblate (Portuguese) 2025-03-05 14:36:53 +00:00
ssantos
9e861b1b10 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2025-03-05 14:36:52 +00:00
dependabot[bot]
6b7926ecde Bump com.android.application from 8.8.2 to 8.9.0
Bumps com.android.application from 8.8.2 to 8.9.0.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 02:09:02 +00:00
Sylvia van Os
ccd6e12547 Merge pull request #2371 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-03-04 18:37:02 +01:00
Balázs Meskó
c869104e82 Translated using Weblate (Hungarian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2025-03-04 17:09:09 +01:00
Sylvia van Os
f430d3071b Merge pull request #2369 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-7.0.7
Bump peter-evans/create-pull-request from 7.0.6 to 7.0.7
2025-03-03 07:09:21 +01:00
dependabot[bot]
26460753a6 Bump peter-evans/create-pull-request from 7.0.6 to 7.0.7
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.6 to 7.0.7.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v7.0.6...v7.0.7)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 02:30:19 +00:00
Sylvia van Os
2653c7aea3 Merge pull request #2367 from CatimaLoyalty/create-pull-request/patch-1740889044
Update contributors
2025-03-02 13:31:55 +01:00
juuce79
1a892b2de3 Kotlin conversion of AboutActivity with tests also in Kotlin (#2360) 2025-03-02 13:30:10 +01:00
TheLastProject
a9e9ee511d Update contributors 2025-03-02 04:17:23 +00:00
Sylvia van Os
7719a2d3fd Merge pull request #2365 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-02-28 18:50:07 +01:00
Ricky Tigg
84a6202db1 Translated using Weblate (Finnish)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2025-02-28 12:51:42 +00:00
Sylvia van Os
4d8a4fbd6a Merge pull request #2364 from CatimaLoyalty/dependabot/gradle/com.android.application-8.8.2
Bump com.android.application from 8.8.1 to 8.8.2
2025-02-28 07:56:59 +01:00
dependabot[bot]
d556e7e0a2 Bump com.android.application from 8.8.1 to 8.8.2
Bumps com.android.application from 8.8.1 to 8.8.2.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-28 02:32:30 +00:00
Sylvia van Os
5f039c5c3f Merge pull request #2362 from CatimaLoyalty/dependabot/gradle/androidx.constraintlayout-constraintlayout-2.2.1
Bump androidx.constraintlayout:constraintlayout from 2.2.0 to 2.2.1
2025-02-27 08:14:49 +01:00
dependabot[bot]
5bf69db296 Bump androidx.constraintlayout:constraintlayout from 2.2.0 to 2.2.1
Bumps androidx.constraintlayout:constraintlayout from 2.2.0 to 2.2.1.

---
updated-dependencies:
- dependency-name: androidx.constraintlayout:constraintlayout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-27 07:03:05 +00:00
Sylvia van Os
f20cac5d85 Merge pull request #2361 from CatimaLoyalty/dependabot/gradle/androidx.exifinterface-exifinterface-1.4.0
Bump androidx.exifinterface:exifinterface from 1.3.7 to 1.4.0
2025-02-27 08:02:08 +01:00
dependabot[bot]
69976289ca Bump androidx.exifinterface:exifinterface from 1.3.7 to 1.4.0
Bumps androidx.exifinterface:exifinterface from 1.3.7 to 1.4.0.

---
updated-dependencies:
- dependency-name: androidx.exifinterface:exifinterface
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-27 02:13:51 +00:00
Sylvia van Os
8b30f92dfd Merge pull request #2359 from CatimaLoyalty/create-pull-request/patch-1740551110
Update Gradle to 8.13
2025-02-26 19:03:36 +01:00
Sylvia van Os
477c70a8e5 Merge pull request #2358 from CatimaLoyalty/dependabot/gradle/com.android.tools-desugar_jdk_libs-2.1.5
Bump com.android.tools:desugar_jdk_libs from 2.1.4 to 2.1.5
2025-02-26 08:34:30 +01:00
TheLastProject
2e9d1a41f6 Update Gradle to 8.13 2025-02-26 06:25:09 +00:00
dependabot[bot]
ff617036c7 Bump com.android.tools:desugar_jdk_libs from 2.1.4 to 2.1.5
Bumps [com.android.tools:desugar_jdk_libs](https://github.com/google/desugar_jdk_libs) from 2.1.4 to 2.1.5.
- [Changelog](https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/desugar_jdk_libs/commits)

---
updated-dependencies:
- dependency-name: com.android.tools:desugar_jdk_libs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 02:16:31 +00:00
Sylvia van Os
2b4e8b1f8b Merge pull request #2357 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-02-25 16:56:33 +01:00
Priit Jõerüüt
7bcbdd8358 Translated using Weblate (Estonian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2025-02-25 16:29:26 +01:00
Sylvia van Os
45c212c5cc Merge pull request #2356 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.6.1
Bump actions/upload-artifact from 4.6.0 to 4.6.1
2025-02-24 08:14:07 +01:00
dependabot[bot]
00d7b5e231 Bump actions/upload-artifact from 4.6.0 to 4.6.1
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.0 to 4.6.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.6.0...v4.6.1)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 02:57:08 +00:00
Sylvia van Os
0314d49b77 Merge pull request #2355 from CatimaLoyalty/create-pull-request/patch-1740284254
Update contributors
2025-02-23 09:09:05 +01:00
TheLastProject
6335b731df Update contributors 2025-02-23 04:17:34 +00:00
Sylvia van Os
c248d1e84c Merge pull request #2354 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-02-22 09:06:29 +01:00
தமிழ்நேரம்
94de9829b9 Translated using Weblate (Tamil)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ta/
2025-02-22 00:40:54 +00:00
Edgars Andersons
0448efd04c Translated using Weblate (Latvian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2025-02-22 00:40:54 +00:00
Sylvia van Os
21f4b9b5cf Merge pull request #2352 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-02-17 17:11:47 +01:00
Trond Kjetil Bremnes
01a30db52e Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2025-02-17 15:18:34 +00:00
Sylvia van Os
01ed9bd30f Merge pull request #2347 from CatimaLoyalty/dependabot/gradle/com.android.application-8.8.1
Bump com.android.application from 8.8.0 to 8.8.1
2025-02-14 08:32:51 +01:00
dependabot[bot]
583edb53d9 Bump com.android.application from 8.8.0 to 8.8.1
Bumps com.android.application from 8.8.0 to 8.8.1.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-14 02:50:40 +00:00
Sylvia van Os
f51cc70d8e Merge pull request #2346 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-02-13 19:09:14 +01:00
zedsansor
539d05a603 Translated using Weblate (Persian)
Currently translated at 45.0% (150 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2025-02-12 21:01:59 +01:00
Sylvia van Os
906162ebb4 Merge pull request #2343 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-02-11 20:02:28 +01:00
Lari Tanase
b06203dc8a Translated using Weblate (Romanian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2025-02-11 17:02:20 +00:00
Sylvia van Os
6aec4b93ff Merge pull request #2341 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-02-10 19:49:28 +01:00
Mahan Khalili
3ea6f64021 Translated using Weblate (Persian)
Currently translated at 37.5% (125 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2025-02-10 16:02:02 +00:00
Lari Tanase
51fb01b190 Translated using Weblate (Romanian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2025-02-10 16:02:01 +00:00
dicaeffe
01b23109ae Translated using Weblate (Italian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2025-02-10 16:02:00 +00:00
Sylvia van Os
4e291b58d3 Merge pull request #2339 from CatimaLoyalty/create-pull-request/patch-1739074637
Update contributors
2025-02-09 11:45:49 +01:00
TheLastProject
1689cf1026 Update contributors 2025-02-09 04:17:17 +00:00
Sylvia van Os
a55ce2c952 Merge pull request #2338 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-02-06 18:58:05 +01:00
이정희
d2ff17a90e Translated using Weblate (Italian)
Currently translated at 81.9% (118 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2025-02-06 16:02:42 +00:00
Odoamar
70c446e88d Translated using Weblate (Polish)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2025-02-06 16:02:41 +00:00
Sylvia van Os
0d6dc40da5 Merge pull request #2334 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-02-03 20:43:41 +01:00
Hosted Weblate
a4f3a81d58 Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/
2025-02-03 20:02:48 +01:00
Priit Jõerüüt
c64f75ffe4 Translated using Weblate (Estonian)
Currently translated at 10.4% (15 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/et/
2025-02-03 20:02:48 +01:00
Ricky Tigg
0fdb6ee567 Translated using Weblate (Finnish)
Currently translated at 99.6% (332 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2025-02-03 20:02:47 +01:00
이정희
9aa40fc88c Translated using Weblate (Korean)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2025-02-03 20:02:46 +01:00
Sylvia van Os
4f4c0171c0 Translated using Weblate (Hebrew (Israel))
Currently translated at 29.4% (98 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/he_IL/
2025-02-03 20:02:45 +01:00
Anonymous
e4644b3eb7 Translated using Weblate (Hebrew (Israel))
Currently translated at 29.4% (98 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/he_IL/
2025-02-03 20:02:44 +01:00
Sylvia van Os
999cf241f8 Merge pull request #2331 from CatimaLoyalty/dependabot/github_actions/actions/setup-python-5.4.0
Bump actions/setup-python from 5.3.0 to 5.4.0
2025-02-03 19:30:38 +01:00
dependabot[bot]
42b964a324 Bump actions/setup-python from 5.3.0 to 5.4.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5.3.0...v5.4.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 02:47:52 +00:00
Sylvia van Os
1262bfd502 Merge pull request #2329 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-01-31 20:29:52 +01:00
Bruno Fragoso
81fe561678 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2025-01-31 18:07:38 +01:00
polarwood
9cb989155d Translated using Weblate (Turkish)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2025-01-31 18:07:38 +01:00
Fermín Etcheverry
59587f4a40 Translated using Weblate (Spanish)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2025-01-31 18:07:38 +01:00
Sylvia van Os
4dc0d4cd24 Merge pull request #2326 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-01-29 18:00:50 +01:00
Ricky Tigg
89598be72e Translated using Weblate (Finnish)
Currently translated at 4.1% (6 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fi/
2025-01-29 16:03:18 +01:00
Sylvia van Os
1d2359f295 Merge pull request #2324 from CatimaLoyalty/dependabot/gradle/org.jetbrains.kotlin.android-2.1.10
Bump org.jetbrains.kotlin.android from 2.1.0 to 2.1.10
2025-01-28 10:21:53 +01:00
dependabot[bot]
026984920b Bump org.jetbrains.kotlin.android from 2.1.0 to 2.1.10
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 2.1.0 to 2.1.10.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.1.0...v2.1.10)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin.android
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-28 02:50:47 +00:00
Sylvia van Os
03ed289ef9 Merge pull request #2319 from CatimaLoyalty/create-pull-request/patch-1737865002
Update contributors
2025-01-26 10:10:23 +01:00
TheLastProject
0ccbeb42dd Update contributors 2025-01-26 04:16:42 +00:00
Sylvia van Os
3f9b772a11 Merge pull request #2316 from CatimaLoyalty/create-pull-request/patch-1737786088
Update Gradle to 8.12.1
2025-01-25 13:33:46 +01:00
TheLastProject
e97c9de471 Update Gradle to 8.12.1 2025-01-25 06:21:27 +00:00
Sylvia van Os
872db6b966 Merge pull request #2315 from CatimaLoyalty/create-pull-request/patch-1737497854
Update feature graphic
2025-01-22 21:46:40 +01:00
Sylvia van Os
724d036df9 Merge pull request #2314 from CatimaLoyalty/fix/imagemagick
Fix feature graphic generation
2025-01-21 23:27:02 +01:00
TheLastProject
fc98e6651a Update feature graphic 2025-01-21 22:17:33 +00:00
Sylvia van Os
a70e4aa7a7 Fix feature graphic generation 2025-01-21 23:14:30 +01:00
Sylvia van Os
d542be322c Merge pull request #2312 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-01-21 23:05:55 +01:00
Sylvia van Os
d5a977c5b0 Translated using Weblate (Catalan)
Currently translated at 4.1% (6 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ca/
2025-01-21 22:54:35 +01:00
mrestivill
bac9199974 Translated using Weblate (Catalan)
Currently translated at 3.4% (5 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ca/
2025-01-21 22:19:26 +01:00
mrestivill
bb92ec2291 Translated using Weblate (Catalan)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/ca/
2025-01-21 22:19:25 +01:00
mrestivill
b155f45b01 Translated using Weblate (Catalan)
Currently translated at 81.9% (273 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ca/
2025-01-21 22:19:24 +01:00
Milo Ivir
b2f79f836b Translated using Weblate (Croatian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2025-01-21 22:19:24 +01:00
ikanakova
9ba7e4a92b Translated using Weblate (Czech)
Currently translated at 100.0% (144 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2025-01-21 22:19:23 +01:00
Sylvia van Os
28088beb72 Merge pull request #2311 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-01-20 22:21:27 +01:00
reimu105
25351f4138 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2025-01-20 02:51:26 +00:00
B o d o
1ac4db8641 Translated using Weblate (German)
Currently translated at 100.0% (144 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2025-01-20 02:51:26 +00:00
J. Lavoie
5cee4ef497 Translated using Weblate (French)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2025-01-20 02:51:25 +00:00
Sylvia van Os
b323c2e5cd Merge pull request #2310 from CatimaLoyalty/create-pull-request/patch-1737260228
Update contributors
2025-01-19 09:52:14 +01:00
TheLastProject
66be4a8c18 Update contributors 2025-01-19 04:17:08 +00:00
Sylvia van Os
dd2bd294ba Merge pull request #2308 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-01-18 13:02:13 +01:00
Edgars Andersons
e4db1e931a Translated using Weblate (Latvian)
Currently translated at 6.9% (10 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lv/
2025-01-18 11:45:31 +00:00
Edgars Andersons
f8b3e9c65b Translated using Weblate (Latvian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2025-01-18 11:45:31 +00:00
reimu105
880a596621 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 87.5% (126 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hant/
2025-01-18 11:45:30 +00:00
reimu105
9903b4d955 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2025-01-18 11:45:29 +00:00
大王叫我来巡山
40bc87c772 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (144 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2025-01-18 11:45:28 +00:00
Максим Горпиніч
586642c6f6 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (144 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2025-01-18 11:45:28 +00:00
solokot
f3847a4a2b Translated using Weblate (Russian)
Currently translated at 100.0% (144 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2025-01-18 11:45:27 +00:00
B o d o
63352c310e Translated using Weblate (German)
Currently translated at 100.0% (144 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2025-01-18 11:45:27 +00:00
Sylvia van Os
e7aac163c2 Release Catima 2.34.4 2025-01-17 19:23:43 +01:00
Sylvia van Os
5a3d61d8f0 Merge pull request #2306 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-01-17 19:20:18 +01:00
Sylvia van Os
33ba81d3b0 Translated using Weblate (Dutch)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2025-01-17 19:08:14 +01:00
josé m
6a0956181d Translated using Weblate (Galician)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/gl/
2025-01-17 19:03:59 +01:00
Priit Jõerüüt
aca7d3bd9c Translated using Weblate (Estonian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2025-01-17 19:03:59 +01:00
109247019824
e3e8378f8e Translated using Weblate (Bulgarian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2025-01-17 19:03:59 +01:00
大王叫我来巡山
61d235b497 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (144 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2025-01-17 19:03:59 +01:00
大王叫我来巡山
e069d7a956 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2025-01-17 19:03:59 +01:00
ikanakova
3d8806e38c Translated using Weblate (Czech)
Currently translated at 100.0% (144 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2025-01-17 19:03:59 +01:00
Максим Горпиніч
650da3bd6a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (144 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2025-01-17 19:03:59 +01:00
solokot
26b7cece35 Translated using Weblate (Russian)
Currently translated at 100.0% (144 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2025-01-17 19:03:59 +01:00
B o d o
1d3da4d1d1 Translated using Weblate (German)
Currently translated at 100.0% (144 of 144 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2025-01-17 19:03:59 +01:00
Максим Горпиніч
bc3aeed090 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2025-01-17 19:03:59 +01:00
solokot
6606eeb9a7 Translated using Weblate (Russian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2025-01-17 19:03:59 +01:00
Vasilis K
2401a3f8bf Translated using Weblate (Greek)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2025-01-17 19:03:59 +01:00
B o d o
b3685c0c7e Translated using Weblate (German)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2025-01-17 19:03:59 +01:00
ikanakova
868315948e Translated using Weblate (Czech)
Currently translated at 100.0% (333 of 333 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2025-01-17 19:03:59 +01:00
Sylvia van Os
19a68719fe Merge pull request #2305 from CatimaLoyalty/create-pull-request/patch-1737136973
Update Fastlane changelogs
2025-01-17 19:03:12 +01:00
TheLastProject
92570ec75c Update Fastlane changelogs 2025-01-17 18:02:53 +00:00
Sylvia van Os
573817f81d Update CHANGELOG 2025-01-17 19:02:39 +01:00
Sylvia van Os
21da1fed85 Merge pull request #2304 from CatimaLoyalty/fix/15_no_e2e
Revert to targeting Android 14
2025-01-17 19:02:05 +01:00
Sylvia van Os
c23527eb82 Revert to targeting Android 14
This reverts commit ff08dbe5d5.

I tried keeping the target at Android 15 and opting out of edge-to-edge
enforcement, but this is not a true compatibility mode and broke the
multi-selection UI in the main activity.
2025-01-17 18:38:57 +01:00
Sylvia van Os
926b9e0822 Merge pull request #2302 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-01-17 17:34:14 +01:00
Sebastian
d32a0b698d Translated using Weblate (Danish)
Currently translated at 56.0% (186 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/da/
2025-01-17 00:11:07 +00:00
Sylvia van Os
47bf18f219 Merge pull request #2298 from CatimaLoyalty/create-pull-request/patch-1736974941
Update Fastlane changelogs
2025-01-15 22:02:57 +01:00
TheLastProject
91096c5839 Update Fastlane changelogs 2025-01-15 21:02:20 +00:00
Sylvia van Os
477c16360e Update CHANGELOG 2025-01-15 22:02:06 +01:00
Christos Tsingiropoylos
9a1d7d2e44 Sort by valid from date (#2297) 2025-01-15 22:01:25 +01:00
Sylvia van Os
be54c50786 Release Catima 2.34.3 2025-01-15 17:50:02 +01:00
Sylvia van Os
2624924f53 Merge pull request #2295 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-01-15 17:47:42 +01:00
Priit Jõerüüt
724552eaa3 Translated using Weblate (Estonian)
Currently translated at 7.6% (11 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/et/
2025-01-15 08:51:45 +01:00
Edgars Andersons
bef0d70d09 Translated using Weblate (Latvian)
Currently translated at 6.2% (9 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lv/
2025-01-15 08:51:45 +01:00
大王叫我来巡山
d7201f62ab Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2025-01-15 08:51:45 +01:00
Максим Горпиніч
1f229980b7 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2025-01-15 08:51:44 +01:00
solokot
8f08b1989b Translated using Weblate (Russian)
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2025-01-15 08:51:44 +01:00
Kachelkaiser
e3c83c0cb0 Translated using Weblate (German)
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2025-01-15 08:51:44 +01:00
Sylvia van Os
431e380f5e Merge pull request #2294 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-01-14 17:15:43 +01:00
josé m
5c7b102e08 Translated using Weblate (Galician)
Currently translated at 10.4% (15 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/gl/
2025-01-14 07:11:44 +01:00
B o d o
6dc1a1b196 Translated using Weblate (German)
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2025-01-14 07:11:44 +01:00
Sylvia van Os
6c01d2ffa9 Merge pull request #2291 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.6.0
Bump actions/upload-artifact from 4.5.0 to 4.6.0
2025-01-13 18:58:47 +01:00
dependabot[bot]
3156fd6daf Bump actions/upload-artifact from 4.5.0 to 4.6.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.5.0...v4.6.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 02:20:56 +00:00
Sylvia van Os
6fa4ab3e3b Add Contributor Covenant Code of Conduct 2025-01-12 11:54:15 +01:00
Sylvia van Os
9fa67b59c7 Merge pull request #2290 from CatimaLoyalty/create-pull-request/patch-1736655501
Update contributors
2025-01-12 10:34:20 +01:00
TheLastProject
0935a17fec Update contributors 2025-01-12 04:18:21 +00:00
Sylvia van Os
5fdc575485 Merge pull request #2289 from CatimaLoyalty/hack/espass_as_pkpass
Add unofficial support for espass
2025-01-11 12:50:06 +01:00
Sylvia van Os
d6bbd16945 Add unofficial support for espass
While espass files aren't pkpass files, they are so similar we can
generally parse them fine with the pkpass parser. While this feature
shouldn't be advertised as it is kinda hacky, it does make it easier for
PassAndroid users to share cards with Catima users.
2025-01-11 12:38:03 +01:00
Sylvia van Os
1110f7ee99 Merge pull request #2288 from CatimaLoyalty/create-pull-request/patch-1736595116
Update Fastlane changelogs
2025-01-11 12:32:10 +01:00
TheLastProject
d64860a34e Update Fastlane changelogs 2025-01-11 11:31:56 +00:00
Sylvia van Os
9fb0da6954 Update CHANGELOG 2025-01-11 12:31:43 +01:00
Sylvia van Os
12b0f8806b Merge pull request #2286 from CatimaLoyalty/fix/add_secondary_pkpass_mimetype
Also parse application/vnd-com.apple.pkpass as pkpass files
2025-01-11 12:30:52 +01:00
Sylvia van Os
5c5a1df39d Also parse application/vnd-com.apple.pkpass as pkpass files 2025-01-11 12:19:48 +01:00
Sylvia van Os
5b0ac65fbe Merge pull request #2217 from CatimaLoyalty/dependabot/gradle/androidx.core-core-ktx-1.15.0
Bump androidx.core:core-ktx from 1.13.1 to 1.15.0
2025-01-11 11:40:24 +01:00
dependabot[bot]
e9b542ee6e Bump androidx.core:core-ktx from 1.13.1 to 1.15.0
Bumps androidx.core:core-ktx from 1.13.1 to 1.15.0.

---
updated-dependencies:
- dependency-name: androidx.core:core-ktx
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-11 10:07:38 +00:00
Sylvia van Os
ae6bf5e8f6 Merge pull request #2285 from CatimaLoyalty/fix/bumpCompileSdk
Bump compile SDK
2025-01-11 11:06:40 +01:00
Sylvia van Os
4dc564ffcf Bump AGP 2025-01-11 10:55:56 +01:00
Sylvia van Os
49a9ef2f80 Bump compile SDK 2025-01-11 10:44:23 +01:00
Sylvia van Os
1907f482eb Merge pull request #2277 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-01-10 20:02:52 +01:00
Sylvia van Os
08aad7ce20 Merge pull request #2275 from CatimaLoyalty/dependabot/gradle/com.android.application-8.8.0
Bump com.android.application from 8.7.3 to 8.8.0
2025-01-10 19:28:48 +01:00
josé m
f555a160d5 Translated using Weblate (Galician)
Currently translated at 9.7% (14 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/gl/
2025-01-10 07:31:36 +01:00
Максим Горпиніч
2d9b7f358e Translated using Weblate (Ukrainian)
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2025-01-10 07:31:36 +01:00
solokot
db396b5f21 Translated using Weblate (Russian)
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2025-01-10 07:31:34 +01:00
B o d o
018d36c3fd Translated using Weblate (German)
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2025-01-10 07:31:31 +01:00
dependabot[bot]
e6621244b8 Bump com.android.application from 8.7.3 to 8.8.0
Bumps com.android.application from 8.7.3 to 8.8.0.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-10 02:58:19 +00:00
Sylvia van Os
29aef64d97 Merge pull request #2273 from CatimaLoyalty/fix/weblate_conflict_20250109
Fix/weblate conflict 20250109
2025-01-09 18:21:14 +01:00
Edgars Andersons
cbe243feb3 Translated using Weblate (Latvian)
Currently translated at 6.2% (9 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lv/
2025-01-09 17:29:39 +01:00
Joel A
ff02c59f85 Translated using Weblate (Swedish)
Currently translated at 94.8% (315 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2025-01-09 17:29:39 +01:00
大王叫我来巡山
3895bc1f73 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2025-01-09 17:29:39 +01:00
ikanakova
cd0cce532a Translated using Weblate (Czech)
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2025-01-09 17:29:39 +01:00
Максим Горпиніч
3fdf6693d2 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2025-01-09 17:29:39 +01:00
solokot
d2be344700 Translated using Weblate (Russian)
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2025-01-09 17:29:39 +01:00
B o d o
9bd2898678 Translated using Weblate (German)
Currently translated at 100.0% (143 of 143 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2025-01-09 17:29:39 +01:00
Sylvia van Os
07f2348a6d Merge pull request #2270 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-01-08 17:29:55 +01:00
Sylvia van Os
ddd1c1a516 Merge pull request #2269 from CatimaLoyalty/create-pull-request/patch-1736289127
Update Fastlane changelogs
2025-01-07 23:32:20 +01:00
TheLastProject
8de76e3c52 Update Fastlane changelogs 2025-01-07 22:32:07 +00:00
Sylvia van Os
6ea2645e9d Update CHANGELOG 2025-01-07 23:31:40 +01:00
Sylvia van Os
ed166b1b33 Merge pull request #2268 from CatimaLoyalty/fix/incorrectSoftInputModes
Ensure save button stays pressable while keyboard is visible in edit screen
2025-01-07 23:29:59 +01:00
Sylvia van Os
2dd53a5300 Ensure save button stays pressable while keyboard is visible in edit screen
Also cleans up some other unnecessary windowSoftInputMode configurations
left over from years ago
2025-01-07 23:12:11 +01:00
ikanakova
97f9120acf Translated using Weblate (Czech)
Currently translated at 100.0% (142 of 142 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2025-01-07 19:54:10 +01:00
Sylvia van Os
dd29be75f2 Merge pull request #2266 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2025-01-07 19:11:39 +01:00
Sylvia van Os
fa87df2ed8 Merge pull request #2267 from CatimaLoyalty/create-pull-request/patch-1736269587
Update Fastlane changelogs
2025-01-07 18:06:56 +01:00
TheLastProject
1fb94de809 Update Fastlane changelogs 2025-01-07 17:06:26 +00:00
Sylvia van Os
0e18e84c8f Update CHANGELOG 2025-01-07 18:06:11 +01:00
Sylvia van Os
0ba2261033 Merge pull request #2263 from CatimaLoyalty/fix/sdk35
Android 15 (SDK 35) support
2025-01-07 18:05:35 +01:00
ikanakova
703ebf9418 Translated using Weblate (Czech)
Currently translated at 100.0% (142 of 142 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2025-01-07 18:03:24 +01:00
Sylvia van Os
ff08dbe5d5 Android 15 (SDK 35) support 2025-01-04 15:20:07 +01:00
Sylvia van Os
3003a10550 Merge pull request #2261 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-7.0.6
Bump peter-evans/create-pull-request from 7.0.5 to 7.0.6
2024-12-30 11:47:11 +01:00
dependabot[bot]
f95be6cc71 Bump peter-evans/create-pull-request from 7.0.5 to 7.0.6
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.5 to 7.0.6.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v7.0.5...v7.0.6)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-30 02:49:57 +00:00
Sylvia van Os
23bc40e630 Merge pull request #2260 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-29 12:26:53 +01:00
Jiri Grönroos
45c47674fb Translated using Weblate (Finnish)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-12-29 11:01:14 +00:00
David
cf1d1a8122 Translated using Weblate (French)
Currently translated at 100.0% (142 of 142 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2024-12-29 11:01:13 +00:00
Sylvia van Os
45d2629863 Merge pull request #2259 from CatimaLoyalty/create-pull-request/patch-1735445907
Update contributors
2024-12-29 09:19:29 +01:00
TheLastProject
f6b0736bbf Update contributors 2024-12-29 04:18:27 +00:00
Sylvia van Os
83f9a2bcc9 Release Catima 2.34.2 2024-12-26 19:59:09 +01:00
Sylvia van Os
1b817222f0 Merge pull request #2256 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-26 19:57:45 +01:00
Edgars Andersons
50db796a47 Translated using Weblate (Latvian)
Currently translated at 5.6% (8 of 142 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lv/
2024-12-26 19:48:28 +01:00
Doctorredits_here
f2f7fe3151 Translated using Weblate (Indonesian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2024-12-26 19:48:28 +01:00
大王叫我来巡山
90293b90fb Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (142 of 142 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-12-26 19:48:27 +01:00
Максим Горпиніч
f1751eaebf Translated using Weblate (Ukrainian)
Currently translated at 100.0% (142 of 142 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-12-26 19:48:25 +01:00
solokot
19a3aa0b86 Translated using Weblate (Russian)
Currently translated at 100.0% (142 of 142 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-12-26 19:48:22 +01:00
B o d o
a3b901e357 Translated using Weblate (German)
Currently translated at 100.0% (142 of 142 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-12-26 19:48:19 +01:00
solokot
fbe12cfadc Translated using Weblate (Russian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-12-26 19:48:17 +01:00
Sylvia van Os
3ffbf11902 Merge pull request #2255 from CatimaLoyalty/create-pull-request/patch-1735164841
Update Fastlane changelogs
2024-12-25 23:14:22 +01:00
TheLastProject
5c3b32a6ee Update Fastlane changelogs 2024-12-25 22:14:00 +00:00
Sylvia van Os
36267b8255 Update CHANGELOG 2024-12-25 23:13:47 +01:00
Sylvia van Os
668c9b0d76 Merge pull request #2253 from CatimaLoyalty/fix/2249
Improve star and archive display
2024-12-25 23:13:08 +01:00
Sylvia van Os
eebbe6dec8 Improve star and archive display
By improving the icons to all have a small border, they will be visible
on every background and we can severely simplify the code
2024-12-25 21:06:15 +01:00
Sylvia van Os
a84ae51a4f Merge pull request #2251 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-24 15:46:49 +01:00
Peter Dave Hello
bdbb977233 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2024-12-24 15:00:28 +01:00
Sylvia van Os
ac27cc6a1e Merge pull request #2238 from CatimaLoyalty/feature/flavours
Start using flavours
2024-12-24 14:47:29 +01:00
Sylvia van Os
91551bf4e8 Start using flavours
Currently, this just allows us to remove the donation button on Google
Play without using the deprecated installer APIs.

In the future, this should allow us to also release multiple versions of
Catima (for example: WearOS is a commonly requested feature, but this
needs non-free dependencies, which may not be okay to all users).
2024-12-24 14:33:35 +01:00
Sylvia van Os
e8c11debfd Merge pull request #2247 from CatimaLoyalty/dependabot/gradle/com.android.tools-desugar_jdk_libs-2.1.4
Bump com.android.tools:desugar_jdk_libs from 2.1.3 to 2.1.4
2024-12-23 11:46:40 +01:00
Sylvia van Os
e29a1c659f Merge pull request #2246 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.5.0
Bump actions/upload-artifact from 4.4.3 to 4.5.0
2024-12-23 11:45:31 +01:00
dependabot[bot]
d66bf0e3fd Bump com.android.tools:desugar_jdk_libs from 2.1.3 to 2.1.4
Bumps [com.android.tools:desugar_jdk_libs](https://github.com/google/desugar_jdk_libs) from 2.1.3 to 2.1.4.
- [Changelog](https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/desugar_jdk_libs/commits)

---
updated-dependencies:
- dependency-name: com.android.tools:desugar_jdk_libs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 02:16:11 +00:00
dependabot[bot]
172b71dd00 Bump actions/upload-artifact from 4.4.3 to 4.5.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.3 to 4.5.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.4.3...v4.5.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 02:11:36 +00:00
Sylvia van Os
10ce432c97 Merge pull request #2244 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-22 12:55:42 +01:00
Sylvia van Os
3299a8dca3 Merge pull request #2245 from CatimaLoyalty/create-pull-request/patch-1734841042
Update contributors
2024-12-22 11:44:56 +01:00
TheLastProject
5dca8bc5d2 Update contributors 2024-12-22 04:17:21 +00:00
grgergo
1b8f8704f5 Translated using Weblate (Hungarian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-12-22 02:38:39 +01:00
Deleted User
64e801311b Translated using Weblate (German)
Currently translated at 100.0% (141 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-12-22 02:38:39 +01:00
Sylvia van Os
da8202b4e1 Merge pull request #2242 from CatimaLoyalty/create-pull-request/patch-1734762145
Update Gradle to 8.12
2024-12-21 21:26:13 +01:00
Sylvia van Os
72d70f1265 Merge pull request #2243 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-21 20:42:01 +01:00
Edgars Andersons
660597e89a Translated using Weblate (Latvian)
Currently translated at 4.9% (7 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lv/
2024-12-21 09:00:52 +01:00
Edgars Andersons
4a48ac8797 Translated using Weblate (Latvian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2024-12-21 09:00:51 +01:00
TheLastProject
4c61c19e4f Update Gradle to 8.12 2024-12-21 06:22:24 +00:00
Sylvia van Os
bb3b13364c Merge pull request #2237 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-18 19:18:07 +01:00
Sylvia van Os
b34bb65f79 Translated using Weblate (Tamil)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ta/
2024-12-18 19:00:02 +01:00
தமிழ்நேரம்
a7cfb4b68f Translated using Weblate (Tamil)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ta/
2024-12-18 16:00:34 +01:00
Trond Kjetil Bremnes
8d58a6192d Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2024-12-18 16:00:33 +01:00
Sylvia van Os
1da34ceda4 Merge pull request #2236 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-17 18:59:58 +01:00
தமிழ்நேரம்
dc31b7e839 Translated using Weblate (Tamil)
Currently translated at 93.9% (312 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ta/
2024-12-17 00:00:38 +01:00
Priit Jõerüüt
5c6ee7b787 Translated using Weblate (Estonian)
Currently translated at 4.2% (6 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/et/
2024-12-17 00:00:36 +01:00
Nguyen Duc Tri Thuc
5620a62cad Translated using Weblate (Vietnamese)
Currently translated at 11.3% (16 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/vi/
2024-12-17 00:00:34 +01:00
Sylvia van Os
429abb4914 Merge pull request #2234 from CatimaLoyalty/create-pull-request/patch-1734236299
Update contributors
2024-12-15 09:54:00 +01:00
Sylvia van Os
f90d33daf7 Merge pull request #2235 from CatimaLoyalty/weblate
Weblate
2024-12-15 09:52:55 +01:00
தமிழ்நேரம்
baa67cf9f4 Translated using Weblate (Tamil)
Currently translated at 99.6% (331 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ta/
2024-12-15 09:44:55 +01:00
Isard Sabut
4054269db3 Translated using Weblate (Catalan)
Currently translated at 18.9% (63 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ca/
2024-12-15 09:44:35 +01:00
Augustin LAVILLE
559b8d00dd Translated using Weblate (French)
Currently translated at 99.2% (140 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2024-12-15 09:44:35 +01:00
Максим Горпиніч
9b9c19586f Translated using Weblate (Ukrainian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-12-15 09:44:35 +01:00
Augustin LAVILLE
a3407734a7 Translated using Weblate (French)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-12-15 09:44:35 +01:00
TheLastProject
99c579ee51 Update contributors 2024-12-15 04:18:18 +00:00
Sylvia van Os
81bc7db43e Merge pull request #2232 from CatimaLoyalty/create-pull-request/patch-1734181312
Update feature graphic
2024-12-14 14:08:58 +01:00
Sylvia van Os
117e08d957 Merge pull request #2231 from CatimaLoyalty/feature/sans_feature_graphics
Use Sans fonts for app name
2024-12-14 14:08:43 +01:00
TheLastProject
89356dac50 Update feature graphic 2024-12-14 13:01:51 +00:00
Sylvia van Os
c7bf1f5f30 Use Sans fonts for app name
Sans could be "friendlier". This also fixes the new zh-TW picture not
showing up
2024-12-14 13:59:29 +01:00
Sylvia van Os
1a7a2d31f4 Merge pull request #2229 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-14 12:47:04 +01:00
Sylvia van Os
8fd4335a98 Delete invalid translations
Incorrectly formatted XML will crash the app.
2024-12-14 12:07:59 +01:00
தமிழ்நேரம்
6b4b0e846b Translated using Weblate (Tamil)
Currently translated at 99.6% (331 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ta/
2024-12-13 23:02:26 +01:00
josé m
451fa87990 Translated using Weblate (Galician)
Currently translated at 4.2% (6 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/gl/
2024-12-13 23:02:26 +01:00
josé m
2c50c2b48c Translated using Weblate (Galician)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/gl/
2024-12-13 23:02:26 +01:00
Robin Syl
8b9c26ad5a Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 85.1% (120 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hant/
2024-12-13 23:02:26 +01:00
Robin Syl
ef7db55d8c Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.0% (329 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2024-12-13 23:02:26 +01:00
大王叫我来巡山
8f2d39d0ec Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (141 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-12-13 23:02:26 +01:00
Maxine Clementine Caulfield
3597e3098f Translated using Weblate (Czech)
Currently translated at 100.0% (141 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2024-12-13 23:02:26 +01:00
solokot
0702fc579c Translated using Weblate (Russian)
Currently translated at 100.0% (141 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-12-13 23:02:26 +01:00
B o d o
017cf19d27 Translated using Weblate (German)
Currently translated at 100.0% (141 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-12-13 23:02:26 +01:00
Dawid
83a3a5b9e2 Translated using Weblate (Polish)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-12-13 23:02:26 +01:00
Maxine Clementine Caulfield
54828c3c93 Translated using Weblate (Czech)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2024-12-13 23:02:25 +01:00
Sylvia van Os
31e517d7ee Merge pull request #2227 from CatimaLoyalty/create-pull-request/patch-1734118019
Update locales
2024-12-13 21:43:23 +01:00
TheLastProject
00957ac576 Update locales 2024-12-13 19:26:59 +00:00
Sylvia van Os
852c38d88d Merge pull request #2226 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-13 20:26:44 +01:00
Максим Горпиніч
67314b09a9 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (141 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-12-12 21:39:09 +01:00
B o d o
944e2ca0c0 Translated using Weblate (German)
Currently translated at 100.0% (141 of 141 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-12-12 21:39:09 +01:00
Dawid
68564864d5 Translated using Weblate (Polish)
Currently translated at 99.6% (331 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-12-12 21:39:09 +01:00
Sylvia van Os
19bccc0c82 Release Catima 2.34.1 2024-12-12 17:27:24 +01:00
Sylvia van Os
04905edab4 Merge pull request #2224 from CatimaLoyalty/create-pull-request/patch-1734020723
Update Fastlane changelogs
2024-12-12 17:25:36 +01:00
Sylvia van Os
179a9adbe5 Merge pull request #2222 from CatimaLoyalty/create-pull-request/patch-1734019804
Update locales
2024-12-12 17:25:23 +01:00
TheLastProject
3925a79158 Update Fastlane changelogs 2024-12-12 16:25:22 +00:00
Sylvia van Os
71de6f8c99 Update CHANGELOG 2024-12-12 17:25:07 +01:00
Sylvia van Os
9d81ca5c9b Merge pull request #2223 from CatimaLoyalty/fix/crashOnInvalidPkpassFile
Fix crash when trying to load invalid pkpass file
2024-12-12 17:24:08 +01:00
Sylvia van Os
75c393af92 Fix crash when trying to load invalid pkpass file 2024-12-12 17:13:49 +01:00
TheLastProject
3e16515b6c Update locales 2024-12-12 16:10:04 +00:00
Sylvia van Os
3e9857f14f Merge pull request #2221 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-12 17:09:38 +01:00
தமிழ்நேரம்
20ee7c9324 Added translation using Weblate (Tamil) 2024-12-12 16:29:00 +01:00
Hamza Mohamed
fa6ee155ac Translated using Weblate (Arabic)
Currently translated at 99.6% (331 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2024-12-12 01:01:11 +01:00
goknarbahceli
c186e53eab Translated using Weblate (Turkish)
Currently translated at 70.7% (99 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2024-12-12 01:01:09 +01:00
goknarbahceli
75abd6f80c Translated using Weblate (Turkish)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-12-12 01:01:08 +01:00
Sylvia van Os
0a98e6154c Update Fastlane 2024-12-11 17:11:13 +01:00
Sylvia van Os
c2b31fad43 Release Catima 2.34.0 2024-12-10 18:53:36 +01:00
Sylvia van Os
2043dffc10 Merge pull request #2218 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-10 18:52:41 +01:00
Sylvia van Os
244aabcc1a Translated using Weblate (Hindi)
Currently translated at 94.5% (314 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2024-12-10 18:44:54 +01:00
Miguel Mota
a1faed8717 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-12-10 18:36:55 +01:00
Arun Arya
fcf9176523 Translated using Weblate (Hindi)
Currently translated at 94.5% (314 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2024-12-10 18:36:55 +01:00
Sylvia van Os
30db9e3cd6 Translated using Weblate (Dutch)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-12-10 18:36:55 +01:00
Kamborio
fb3df0ff4d Translated using Weblate (Spanish)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-12-10 18:36:54 +01:00
Priit Jõerüüt
9b4b48e6e3 Translated using Weblate (Estonian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-12-09 22:01:11 +01:00
Edgars Andersons
9a9cdaff09 Translated using Weblate (Latvian)
Currently translated at 3.5% (5 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lv/
2024-12-09 22:01:10 +01:00
Edgars Andersons
3a82efcf6f Translated using Weblate (Latvian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2024-12-09 22:01:10 +01:00
이정희
7c2d08b06f Translated using Weblate (Korean)
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ko/
2024-12-09 22:01:09 +01:00
이정희
aebe84c2cd Translated using Weblate (Korean)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2024-12-09 22:01:08 +01:00
solokot
3768f0ebcf Translated using Weblate (Russian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-12-09 22:01:07 +01:00
Sylvia van Os
8f7d527c21 Translated using Weblate (Dutch)
Currently translated at 99.3% (330 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-12-09 22:01:07 +01:00
Giovanni Donisi
54ec5ee0d0 Translated using Weblate (Italian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-12-09 22:01:06 +01:00
Sylvia van Os
dccb244c8f Merge pull request #2216 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-08 21:55:56 +01:00
Asmodeus
a37084af1a Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-12-08 21:01:46 +01:00
109247019824
af0a7ae89b Translated using Weblate (Bulgarian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-12-08 21:01:45 +01:00
大王叫我来巡山
315cbab4be Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-12-08 21:01:44 +01:00
大王叫我来巡山
bc3830d685 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-12-08 21:01:43 +01:00
Максим Горпиніч
4893d28bb0 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-12-08 21:01:42 +01:00
solokot
2a7670e19d Translated using Weblate (Russian)
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-12-08 21:01:41 +01:00
Vasilis K
86e6a1bb2d Translated using Weblate (Greek)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-12-08 21:01:40 +01:00
Sylvia van Os
d1d3f95dfe Merge pull request #2215 from CatimaLoyalty/create-pull-request/patch-1733631542
Update contributors
2024-12-08 14:51:30 +01:00
TheLastProject
ebfc90e998 Update contributors 2024-12-08 04:19:02 +00:00
Sylvia van Os
704db9eb46 Merge pull request #2214 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-07 20:23:11 +01:00
B o d o
3557870d34 Translated using Weblate (German)
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-12-07 18:41:43 +01:00
Sylvia van Os
59354c7251 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-12-07 18:41:41 +01:00
B o d o
cae25599f8 Translated using Weblate (German)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-12-07 18:41:41 +01:00
109247019824
e89eb46f79 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-12-07 18:25:36 +01:00
Максим Горпиніч
039b433d0a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-12-07 18:25:29 +01:00
Vasilis K
0319d16f2b Translated using Weblate (Greek)
Currently translated at 100.0% (332 of 332 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-12-07 18:25:29 +01:00
Sylvia van Os
f11c45d169 Merge pull request #2213 from CatimaLoyalty/create-pull-request/patch-1733591941
Update Fastlane changelogs
2024-12-07 18:19:24 +01:00
TheLastProject
572c0fea4a Update Fastlane changelogs 2024-12-07 17:19:01 +00:00
Sylvia van Os
5e9d364e5e Update CHANGELOG 2024-12-07 18:18:47 +01:00
Sylvia van Os
57d62fdb29 Merge pull request #2212 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-07 17:44:35 +01:00
summoner001
0c7332396b Translated using Weblate (Hungarian)
Currently translated at 97.8% (322 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-12-07 17:36:35 +01:00
Renko
7bdca36f53 Translated using Weblate (Romanian)
Currently translated at 99.0% (326 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-12-07 17:36:35 +01:00
Sylvia van Os
f8a8a84f1e Merge pull request #2038 from CatimaLoyalty/feature/pkpass2024
Add Pkpass parser
2024-12-07 17:33:50 +01:00
Sylvia van Os
8009baca26 Remove unnecessary image load from storage calls
The LoyaltyCard object itself loads the images itself
2024-12-07 15:23:07 +01:00
Sylvia van Os
e0786594bc Load images on request
This prevents loading the front and back images when scrolling through
the loyalty card list and should allow scaling to more images/files more
easily
2024-12-07 15:23:07 +01:00
Sylvia van Os
7fe67960bf Move TaskHandler to ViewModel
This should make it possible to properly cancel the running barcode
generation threads on rotation and prevent CPU rising on many rotations.
2024-12-07 15:23:07 +01:00
Sylvia van Os
83fca93649 Use ViewModel to prevent hammering storage
When you turn a LoyaltyCard into a bundle, it writes the files to
storage as it can't otherwise fit in the limited storage size. This
means that, on rotation, you write all images to storage and load them
again. Using a ViewModel prevents that storage hit due to holding it in
memory (as a ViewModel has a longer lifecycle).
2024-12-07 15:23:07 +01:00
Sylvia van Os
96a9850d9c Delete old cache files on startup 2024-12-07 15:23:07 +01:00
Sylvia van Os
1cb9ddecac Support for returning images from PkpassParser 2024-12-07 15:23:07 +01:00
Sylvia van Os
f7697ce8bf Support opening supported barcode files directly 2024-12-07 15:23:07 +01:00
Sylvia van Os
9358348795 Add option to share pkpass file to Catima 2024-12-07 15:23:07 +01:00
Sylvia van Os
711ca1e761 Add option to load pkpass from ScanActivity 2024-12-07 15:23:07 +01:00
Sylvia van Os
8eeff0058b Refactor ScanActivity result code (use ParseResult) 2024-12-07 15:23:07 +01:00
Sylvia van Os
ea456c6d80 Add Pkpass parser 2024-12-07 15:23:05 +01:00
Sylvia van Os
3bdc06b5b4 Merge pull request #2211 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-07 11:53:00 +01:00
inesre
2c9fbfcae8 Translated using Weblate (Spanish)
Currently translated at 47.8% (67 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2024-12-06 23:01:06 +00:00
solokot
e4a28f9fc9 Translated using Weblate (Russian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-12-06 23:01:05 +00:00
Sylvia van Os
630bf14387 Merge pull request #2210 from CatimaLoyalty/fix/transparentThumbnails3
Fix background colour for shortcuts
2024-12-05 19:01:09 +01:00
Sylvia van Os
4dd85f845e Fix background colour for shortcuts 2024-12-05 18:52:27 +01:00
Sylvia van Os
8382d1975b Merge pull request #2209 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-04 17:50:58 +01:00
大王叫我来巡山
4d4cac6a9e Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-12-04 17:15:30 +01:00
solokot
5bd276a32d Translated using Weblate (Russian)
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-12-04 17:15:29 +01:00
Sylvia van Os
e31ad60d32 Merge pull request #2207 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-12-03 21:02:12 +01:00
Nguyen Duc Tri Thuc
f511b29fcb Translated using Weblate (Vietnamese)
Currently translated at 10.7% (15 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/vi/
2024-12-03 19:09:57 +00:00
Nguyen Duc Tri Thuc
158abdb96c Translated using Weblate (Vietnamese)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2024-12-03 19:09:57 +00:00
Sylvia van Os
959f6770dd Translated using Weblate (Latvian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2024-12-03 19:09:56 +00:00
Максим Горпиніч
c429fef56d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-12-03 19:09:55 +00:00
Kachelkaiser
4ce8d293f4 Translated using Weblate (German)
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-12-03 19:09:55 +00:00
Edgars Andersons
ef9b28671b Translated using Weblate (Latvian)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/lv/
2024-12-03 19:09:54 +00:00
Edgars Andersons
e3afaa1d49 Translated using Weblate (Latvian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2024-12-03 19:09:54 +00:00
Lassi Määttä
094e6951d0 Translated using Weblate (Finnish)
Currently translated at 3.5% (5 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fi/
2024-12-03 19:09:53 +00:00
Sylvia van Os
73f33e238c Merge pull request #2206 from CatimaLoyalty/dependabot/gradle/com.android.application-8.7.3
Bump com.android.application from 8.7.2 to 8.7.3
2024-12-03 19:59:38 +01:00
Sylvia van Os
d1b8051771 Merge pull request #2205 from CatimaLoyalty/fix/transparentThumbnails2
Make thumbnails in edit view consistent with card view
2024-12-03 16:38:51 +00:00
dependabot[bot]
17fd6db65f Bump com.android.application from 8.7.2 to 8.7.3
Bumps com.android.application from 8.7.2 to 8.7.3.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-03 02:50:05 +00:00
Sylvia van Os
e6345bc2fe Make thumbnails in edit view consistent with card view
Commit 88c1dd1bc6 changed the behaviour of
the background colour of the thumbnails, but the edit view still used
the old behaviour. This creates more consistency.
2024-12-03 00:33:21 +01:00
Sylvia van Os
208b1a2eba Merge pull request #2204 from CatimaLoyalty/dependabot/gradle/com.github.yalantis-ucrop-2.2.10
Bump com.github.yalantis:ucrop from 2.2.9 to 2.2.10
2024-12-02 21:18:36 +00:00
dependabot[bot]
b796425551 Bump com.github.yalantis:ucrop from 2.2.9 to 2.2.10
Bumps [com.github.yalantis:ucrop](https://github.com/Yalantis/uCrop) from 2.2.9 to 2.2.10.
- [Release notes](https://github.com/Yalantis/uCrop/releases)
- [Commits](https://github.com/Yalantis/uCrop/compare/2.2.9...2.2.10)

---
updated-dependencies:
- dependency-name: com.github.yalantis:ucrop
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 02:05:16 +00:00
Sylvia van Os
425a9f9a57 Merge pull request #2203 from CatimaLoyalty/create-pull-request/patch-1733026828
Update contributors
2024-12-01 09:51:18 +00:00
TheLastProject
3701c1f2cb Update contributors 2024-12-01 04:20:28 +00:00
Sylvia van Os
7a5233ed1a Merge pull request #2202 from CatimaLoyalty/create-pull-request/patch-1732976710
Update Fastlane changelogs
2024-11-30 15:23:09 +00:00
TheLastProject
5df349c118 Update Fastlane changelogs 2024-11-30 14:25:09 +00:00
Sylvia van Os
f97da3afcb Update CHANGELOG 2024-11-30 15:24:55 +01:00
Sylvia van Os
d997759ccf Merge pull request #2201 from CatimaLoyalty/fix/transparentThumbnails
Use black/white background colour instead of dominant colour for images
2024-11-30 10:34:20 +00:00
Sylvia van Os
5e710ba424 Merge pull request #2200 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-29 16:44:03 +00:00
Sylvia van Os
88c1dd1bc6 Use black/white background colour instead of dominant colour for images
This severely reduces the risk of a transparent PNG being put on a
background which is the same colour as the logo
2024-11-29 17:37:03 +01:00
Ricky Tigg
b63fbfa4c6 Translated using Weblate (Finnish)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/fi/
2024-11-29 10:00:45 +01:00
mingyee2
565b441444 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2024-11-29 10:00:44 +01:00
Greg
6900cf3475 Translated using Weblate (Polish)
Currently translated at 99.6% (328 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-11-29 10:00:43 +01:00
Sylvia van Os
2c0c63aad4 Merge pull request #2196 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-27 16:44:21 +00:00
Doctorredits_here
b48e6f2437 Translated using Weblate (Indonesian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2024-11-27 11:00:32 +01:00
Trond Kjetil Bremnes
37b4096713 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2024-11-27 11:00:31 +01:00
Sylvia van Os
7a0894e4d2 Merge pull request #2194 from CatimaLoyalty/create-pull-request/patch-1732641808
Update feature graphic
2024-11-26 17:30:21 +00:00
TheLastProject
e6f8c29078 Update feature graphic 2024-11-26 17:23:27 +00:00
Sylvia van Os
b1672408c3 Merge pull request #2193 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-26 17:22:14 +00:00
josé m
b79f2ae51d Translated using Weblate (Galician)
Currently translated at 2.1% (3 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/gl/
2024-11-26 07:00:57 +01:00
Augustin LAVILLE
2a758d2e57 Translated using Weblate (French)
Currently translated at 98.5% (138 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2024-11-26 07:00:56 +01:00
Sylvia van Os
07def17334 Merge pull request #2189 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-24 20:11:40 +00:00
Sylvia van Os
1c3fb47c89 Merge pull request #2190 from CatimaLoyalty/feature/readd-fdroid
Re-add F-Droid
2024-11-24 20:02:41 +00:00
Sylvia van Os
d1e4deb7eb Re-add F-Droid 2024-11-24 20:36:24 +01:00
大王叫我来巡山
ad97571ab0 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-11-24 20:01:25 +01:00
Максим Горпиніч
4bbf0983c5 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-11-24 20:01:25 +01:00
solokot
13e86e5e53 Translated using Weblate (Russian)
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-11-24 20:01:24 +01:00
B o d o
454070c346 Translated using Weblate (German)
Currently translated at 100.0% (140 of 140 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-11-24 20:01:24 +01:00
Sylvia van Os
10458d9975 Merge pull request #2188 from CatimaLoyalty/create-pull-request/patch-1732421879
Update contributors
2024-11-24 12:18:59 +00:00
TheLastProject
823c38c50c Update contributors 2024-11-24 04:17:58 +00:00
Sylvia van Os
a593e68ffb Merge pull request #2187 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-23 20:38:21 +00:00
Priit Jõerüüt
5ef8cf5381 Translated using Weblate (Estonian)
Currently translated at 2.8% (4 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/et/
2024-11-23 19:00:38 +01:00
Sebastian
db94d5bc5d Translated using Weblate (Danish)
Currently translated at 39.5% (130 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/da/
2024-11-23 19:00:37 +01:00
Sylvia van Os
b6fe1bc2a7 Merge pull request #2186 from CatimaLoyalty/create-pull-request/patch-1732292688
Update Fastlane changelogs
2024-11-22 16:25:12 +00:00
TheLastProject
78754ca313 Update Fastlane changelogs 2024-11-22 16:24:48 +00:00
Sylvia van Os
8e8667b721 Update CHANGELOG 2024-11-22 17:24:31 +01:00
Sylvia van Os
40731104cb Merge pull request #2185 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.14.1
Bump org.robolectric:robolectric from 4.14 to 4.14.1
2024-11-22 15:56:32 +00:00
dependabot[bot]
879872202a Bump org.robolectric:robolectric from 4.14 to 4.14.1
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.14 to 4.14.1.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.14...robolectric-4.14.1)

---
updated-dependencies:
- dependency-name: org.robolectric:robolectric
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-22 02:20:08 +00:00
Sylvia van Os
0fcf16d9d2 Merge pull request #2182 from CatimaLoyalty/fix/transparentPdf
Fix parsing PDF with transparent background
2024-11-21 20:27:58 +00:00
Sylvia van Os
23d27ab838 Merge pull request #2184 from CatimaLoyalty/create-pull-request/patch-1732170302
Update Gradle to 8.11.1
2024-11-21 17:56:04 +00:00
TheLastProject
0b4df647d1 Update Gradle to 8.11.1 2024-11-21 06:25:02 +00:00
Sylvia van Os
a74c4f822e Release Catima 2.33.0 2024-11-19 17:48:48 +01:00
Sylvia van Os
389372e8f3 Fix parsing PDF with transparent background 2024-11-18 22:03:41 +01:00
Sylvia van Os
c228d274b5 Merge pull request #2181 from CatimaLoyalty/create-pull-request/patch-1731953537
Update locales
2024-11-18 18:35:52 +00:00
TheLastProject
d8e0e03aa5 Update locales 2024-11-18 18:12:17 +00:00
Sylvia van Os
171dd7af59 Merge pull request #2179 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-18 18:12:02 +00:00
Sylvia van Os
10bf27a246 Merge pull request #2180 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.14
Bump org.robolectric:robolectric from 4.13 to 4.14
2024-11-18 06:09:35 +00:00
dependabot[bot]
199c243eb0 Bump org.robolectric:robolectric from 4.13 to 4.14
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.13 to 4.14.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.13...robolectric-4.14)

---
updated-dependencies:
- dependency-name: org.robolectric:robolectric
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 02:42:36 +00:00
josé m
11b0143b1c Translated using Weblate (Galician)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/gl/
2024-11-17 16:01:42 +01:00
josé m
f2e20eaea3 Added translation using Weblate (Galician) 2024-11-17 16:00:17 +01:00
josé m
c8725a4588 Translated using Weblate (Galician)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/gl/
2024-11-17 16:00:15 +01:00
josé m
f881965485 Added translation using Weblate (Galician) 2024-11-17 16:00:14 +01:00
ritchierope
3e16d0daf6 Translated using Weblate (Hungarian)
Currently translated at 97.8% (322 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-11-17 16:00:12 +01:00
Sylvia van Os
7068f57443 Merge pull request #2178 from CatimaLoyalty/create-pull-request/patch-1731817092
Update contributors
2024-11-17 11:42:06 +00:00
TheLastProject
8b611511f5 Update contributors 2024-11-17 04:18:12 +00:00
Sylvia van Os
1c9f0ee724 Merge pull request #2175 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-16 12:30:41 +00:00
Giovanni Donisi
2d816b39f6 Translated using Weblate (Italian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-11-15 22:01:04 +01:00
Sylvia van Os
c0b13bf040 Merge pull request #2174 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-14 17:31:23 +00:00
B o d o
e40d98f386 Translated using Weblate (German)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-11-14 18:01:34 +01:00
Sylvia van Os
8af295a72b Translated using Weblate (Dutch)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-11-14 18:01:33 +01:00
Sylvia van Os
ac4dde1f8b Merge pull request #2173 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-13 16:48:00 +00:00
大王叫我来巡山
2dc87fd37c Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-11-13 16:18:15 +01:00
Максим Горпиніч
aebceec1f6 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-11-13 16:18:15 +01:00
solokot
95b59a9cc3 Translated using Weblate (Russian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-11-13 16:18:15 +01:00
B o d o
4ff72b66a8 Translated using Weblate (German)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-11-13 16:18:15 +01:00
Sylvia van Os
d1162d0272 Merge pull request #2172 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-12 17:37:25 +00:00
Sylvia van Os
794ac2bab2 Merge pull request #2171 from CatimaLoyalty/create-pull-request/patch-1731392619
Update Gradle to 8.11
2024-11-12 17:36:13 +00:00
Lassi Määttä
7b76fe86b2 Translated using Weblate (Finnish)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-11-12 14:00:36 +01:00
TheLastProject
4387c7ed1e Update Gradle to 8.11 2024-11-12 06:23:38 +00:00
Sylvia van Os
f819fc7db9 Merge pull request #2170 from CatimaLoyalty/create-pull-request/patch-1731347745
Update Fastlane changelogs
2024-11-11 17:57:33 +00:00
TheLastProject
fb5a882fdb Update Fastlane changelogs 2024-11-11 17:55:44 +00:00
Sylvia van Os
be8c0a6787 Update CHANGELOG 2024-11-11 18:55:31 +01:00
Sylvia van Os
5dc84fbd77 Merge pull request #2169 from CatimaLoyalty/fix/note_line_limit
Limit max line count to 5 on main view
2024-11-11 17:54:33 +00:00
Sylvia van Os
0c37827fb0 Limit max line count to 5 on main view
This prevents cards with very long notes to take up the entire screen or
more. This effect is worse with more columns.
2024-11-11 18:43:30 +01:00
Sylvia van Os
cee5d39b27 Merge pull request #2168 from CatimaLoyalty/fix/shorter_date_on_main_screen
Use MEDIUM instead of FULL date format on main screen
2024-11-11 17:21:07 +00:00
Sylvia van Os
9c5603eae6 Use MEDIUM instead of FULL date format on main screen
This improves the display of high column counts
2024-11-11 17:50:14 +01:00
Sylvia van Os
dd42c99ca7 Merge pull request #2167 from CatimaLoyalty/create-pull-request/patch-1731212204
Update contributors
2024-11-10 10:42:11 +00:00
TheLastProject
403c60ec6c Update contributors 2024-11-10 04:16:44 +00:00
Sylvia van Os
7c7e6d3b45 Merge pull request #2166 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-09 21:20:07 +00:00
大王叫我来巡山
316e51efb2 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-11-09 20:01:50 +01:00
Максим Горпиніч
9e838e266b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-11-09 20:01:49 +01:00
solokot
a56b984c53 Translated using Weblate (Russian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-11-09 20:01:48 +01:00
B o d o
4040b270a8 Translated using Weblate (German)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-11-09 20:01:47 +01:00
Sylvia van Os
eab8614bcc Merge pull request #2165 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-08 18:36:27 +00:00
kowih83264
ef8befe0cd Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-11-08 19:00:56 +01:00
gallegonovato
860b79fc9b Translated using Weblate (Spanish)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-11-08 19:00:55 +01:00
Sylvia van Os
93341fc4ec Merge pull request #2164 from CatimaLoyalty/dependabot/gradle/com.android.tools-desugar_jdk_libs-2.1.3
Bump com.android.tools:desugar_jdk_libs from 2.1.2 to 2.1.3
2024-11-08 16:59:02 +00:00
dependabot[bot]
51f123bc41 Bump com.android.tools:desugar_jdk_libs from 2.1.2 to 2.1.3
Bumps [com.android.tools:desugar_jdk_libs](https://github.com/google/desugar_jdk_libs) from 2.1.2 to 2.1.3.
- [Changelog](https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/desugar_jdk_libs/commits)

---
updated-dependencies:
- dependency-name: com.android.tools:desugar_jdk_libs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-08 02:24:08 +00:00
Sylvia van Os
f0512fbeca Merge pull request #2162 from CatimaLoyalty/create-pull-request/patch-1730917344
Update Fastlane changelogs
2024-11-06 18:22:51 +00:00
TheLastProject
71f6fcd2e6 Update Fastlane changelogs 2024-11-06 18:22:24 +00:00
Sylvia van Os
d1a244efa0 Update CHANGELOG 2024-11-06 19:22:10 +01:00
Sylvia van Os
075478db17 Merge pull request #2092 from vp193dt/main
#1962: Refactoring of Search Behavior: Restoring of Previous Search Query After Coming Back from Card Interaction or Screen Rotation on Search
2024-11-06 18:21:08 +00:00
vp193dt
6f4582eec9 Refactoring of Search Behavior: Restoring of Previous Search Query After Coming Back from Card Interaction or Screen Rotation on Search 2024-11-06 19:12:01 +01:00
Sylvia van Os
91f5f9a8b4 Merge pull request #2161 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-06 17:03:05 +00:00
Marnick L'Eau
f04adc0901 Translated using Weblate (Dutch)
Currently translated at 51.7% (72 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2024-11-06 13:01:02 +01:00
Augustin LAVILLE
f184ee7e58 Translated using Weblate (French)
Currently translated at 99.2% (138 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2024-11-06 13:01:01 +01:00
min7-i
9abeec578e Translated using Weblate (German)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-11-06 13:01:00 +01:00
Sylvia van Os
8deab5f94f Merge pull request #2160 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-05 18:53:00 +00:00
Priit Jõerüüt
50fca74267 Translated using Weblate (Estonian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-11-05 12:36:58 +01:00
Davi Souza
9e7bf97cc9 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-11-05 12:36:58 +01:00
Hasan Cesur
96be72b4c6 Translated using Weblate (Turkish)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-11-05 12:36:58 +01:00
Kristoffer Grundström
5c31ac6d00 Translated using Weblate (Swedish)
Currently translated at 5.0% (7 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sv/
2024-11-05 12:36:57 +01:00
Kristoffer Grundström
1675d591dd Translated using Weblate (Swedish)
Currently translated at 95.4% (314 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2024-11-05 12:36:57 +01:00
109247019824
361495dfed Translated using Weblate (Bulgarian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-11-05 12:36:57 +01:00
大王叫我来巡山
2b81e861f6 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-11-05 12:36:57 +01:00
大王叫我来巡山
657a761c3a Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-11-05 12:36:55 +01:00
Максим Горпиніч
6d401c4234 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-11-05 12:36:55 +01:00
solokot
8a33d2e5ed Translated using Weblate (Russian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-11-05 12:36:53 +01:00
B o d o
66e994be60 Translated using Weblate (German)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-11-05 12:36:52 +01:00
Максим Горпиніч
4e50ca9340 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-11-05 12:36:50 +01:00
solokot
af064d1cda Translated using Weblate (Russian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-11-05 12:36:50 +01:00
Marnick L'Eau
585c444f2d Translated using Weblate (Dutch)
Currently translated at 97.8% (322 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-11-05 12:36:49 +01:00
Augustin LAVILLE
85683a0b3f Translated using Weblate (French)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-11-05 12:36:49 +01:00
Vasilis K
4c7aa2b26b Translated using Weblate (Greek)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-11-05 12:36:49 +01:00
B o d o
af236e1099 Translated using Weblate (German)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-11-05 12:36:49 +01:00
Sylvia van Os
79f6014e26 Merge pull request #2157 from CatimaLoyalty/create-pull-request/patch-1730607506
Update contributors
2024-11-03 08:28:03 +00:00
TheLastProject
0fa3de40ba Update contributors 2024-11-03 04:18:25 +00:00
Sylvia van Os
d77f938107 Merge pull request #2155 from CatimaLoyalty/create-pull-request/patch-1730584271
Update Fastlane changelogs
2024-11-02 21:54:41 +00:00
TheLastProject
e44aaa6618 Update Fastlane changelogs 2024-11-02 21:51:10 +00:00
Sylvia van Os
96d88bb08c Update CHANGELOG 2024-11-02 22:50:53 +01:00
Sylvia van Os
b502f89da6 Merge pull request #2147 from leaumar/feat/1952-columns
resolve #1952 custom column count
2024-11-02 21:47:48 +00:00
Sylvia van Os
d7b8cd7e03 More consistant naming and column edge case bugfix for shortcut picker 2024-11-02 13:45:25 +01:00
Sylvia van Os
61681bdc2b Set default card columns to 4 on big screens 2024-11-01 22:36:12 +01:00
Sylvia van Os
dc65030a63 Padding fixes to ensure the cards scale well without changing text size in LoyaltyCardViewActivity 2024-11-01 22:35:33 +01:00
Sylvia van Os
328c110a97 General cleanups 2024-11-01 22:32:05 +01:00
Sylvia van Os
0b7cd32209 Merge pull request #2152 from CatimaLoyalty/dependabot/gradle/com.android.application-8.7.2
Bump com.android.application from 8.7.1 to 8.7.2
2024-11-01 19:25:10 +00:00
Sylvia van Os
b1c0ab74d7 Merge pull request #2151 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-01 19:25:00 +00:00
Marnes
faee01cde2 implement #1952: better values between portrait and landscape 2024-11-01 18:51:26 +01:00
Marnes
6f456437f7 implement #1952: custom column count 2024-11-01 18:27:41 +01:00
Marnes
1b0fd94a8c misc. linting 2024-11-01 18:27:33 +01:00
dependabot[bot]
268d04841f Bump com.android.application from 8.7.1 to 8.7.2
Bumps com.android.application from 8.7.1 to 8.7.2.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-01 03:00:22 +00:00
大王叫我来巡山
9408ac5d9f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-11-01 02:02:45 +01:00
Sylvia van Os
45d2b6206e Merge pull request #2149 from CatimaLoyalty/dependabot/gradle/androidx.constraintlayout-constraintlayout-2.2.0
Bump androidx.constraintlayout:constraintlayout from 2.1.4 to 2.2.0
2024-10-31 16:49:45 +00:00
dependabot[bot]
a943fdcc5a Bump androidx.constraintlayout:constraintlayout from 2.1.4 to 2.2.0
Bumps androidx.constraintlayout:constraintlayout from 2.1.4 to 2.2.0.

---
updated-dependencies:
- dependency-name: androidx.constraintlayout:constraintlayout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-31 02:18:56 +00:00
Sylvia van Os
06e02f0b0f Update fastlane 2024-10-30 19:42:10 +01:00
Sylvia van Os
5b29dc66a9 Merge pull request #2148 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-30 18:38:23 +00:00
大王叫我来巡山
5187916fd3 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-10-30 18:10:54 +00:00
Максим Горпиніч
d6e444c6e9 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-10-30 18:10:54 +00:00
solokot
59f4ef1091 Translated using Weblate (Russian)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-10-30 18:10:53 +00:00
B o d o
bab1b3e9df Translated using Weblate (German)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-30 18:10:53 +00:00
Kachelkaiser
4e8cbdc93b Translated using Weblate (German)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-30 18:10:52 +00:00
Vasilis K
d3e5c5b335 Translated using Weblate (Greek)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-10-30 18:10:51 +00:00
Sylvia van Os
2b4b38ddc6 Merge pull request #2145 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-29 17:25:47 +00:00
B o d o
d3e6d775e8 Translated using Weblate (German)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-29 17:18:28 +00:00
Sylvia van Os
ecf3b57679 Release Catima 2.32.1 2024-10-29 18:18:09 +01:00
Sylvia van Os
115981ecc6 Merge pull request #2144 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-29 16:44:32 +00:00
大王叫我来巡山
009f297f59 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-10-29 16:36:14 +00:00
Максим Горпиніч
f539fb1acf Translated using Weblate (Ukrainian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-10-29 16:36:14 +00:00
solokot
297e1e79c2 Translated using Weblate (Russian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-10-29 16:36:13 +00:00
B o d o
d8a95d9d48 Translated using Weblate (German)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-29 16:36:13 +00:00
Vasilis K
1d8e87981b Translated using Weblate (Greek)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-10-29 16:36:12 +00:00
Sylvia van Os
5c97f9c89a Merge pull request #2143 from CatimaLoyalty/create-pull-request/patch-1730153137
Update Fastlane changelogs
2024-10-28 23:03:04 +00:00
TheLastProject
a3b02d775c Update Fastlane changelogs 2024-10-28 22:05:37 +00:00
Sylvia van Os
a83b01b0f4 Update CHANGELOG 2024-10-28 23:05:24 +01:00
Sylvia van Os
4be1d76869 Merge pull request #2142 from CatimaLoyalty/fix/2141
Fix text wrapping on add dialog
2024-10-28 22:04:19 +00:00
Sylvia van Os
15a6924894 Fix text wrapping on add dialog 2024-10-28 22:50:55 +01:00
Sylvia van Os
fdeef6504c Release Catima 2.32.0 2024-10-28 18:38:52 +01:00
Sylvia van Os
00ce3466fd Merge pull request #2138 from CatimaLoyalty/dependabot/github_actions/actions/setup-python-5.3.0
Bump actions/setup-python from 5.2.0 to 5.3.0
2024-10-28 06:41:27 +00:00
dependabot[bot]
ee3013499d Bump actions/setup-python from 5.2.0 to 5.3.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5.2.0...v5.3.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 06:32:46 +00:00
Sylvia van Os
0f966d036b Merge pull request #2137 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.2.2
Bump actions/checkout from 4.2.1 to 4.2.2
2024-10-28 06:31:52 +00:00
dependabot[bot]
2c09e625fb Bump actions/checkout from 4.2.1 to 4.2.2
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 02:33:10 +00:00
Sylvia van Os
8908796b44 Merge pull request #2136 from CatimaLoyalty/create-pull-request/patch-1730069540
Update Fastlane changelogs
2024-10-27 22:52:40 +00:00
TheLastProject
a01fd67565 Update Fastlane changelogs 2024-10-27 22:52:20 +00:00
Sylvia van Os
07fe173487 Update CHANGELOG 2024-10-27 22:52:08 +00:00
Sylvia van Os
e9e63e66a5 Merge pull request #2135 from CatimaLoyalty/fix/2104
Don't show import cancelled text on import completion
2024-10-27 22:04:28 +00:00
Sylvia van Os
6cbfb6dd48 Don't show import cancelled text on import completion 2024-10-27 22:51:45 +01:00
Sylvia van Os
e1f4c0a1ca Merge pull request #2132 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-27 20:29:23 +01:00
Sylvia van Os
5a6b912037 Merge pull request #2134 from CatimaLoyalty/create-pull-request/patch-1730002644
Update contributors
2024-10-27 20:28:04 +01:00
Sylvia van Os
996324829d Merge pull request #2133 from obfusk/update-stocard
update stocard_stores.csv
2024-10-27 20:25:08 +01:00
TheLastProject
e6e556f9af Update contributors 2024-10-27 04:17:24 +00:00
大王叫我来巡山
0318b99aa7 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-10-26 13:16:39 +02:00
Максим Горпиніч
bb79ba3ca5 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-10-26 13:16:27 +02:00
solokot
57679fdc40 Translated using Weblate (Russian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-10-26 13:16:15 +02:00
Kachelkaiser
01c80d1f8b Translated using Weblate (German)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-26 13:16:03 +02:00
FC (Fay) Stegerman
76d69219f8 update stocard_stores.csv 2024-10-25 19:05:01 +02:00
Kamborio
1b0761a36d Translated using Weblate (Spanish)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-10-25 12:16:52 +02:00
Sylvia van Os
b519507600 Merge pull request #2131 from CatimaLoyalty/create-pull-request/patch-1729799074
Update Fastlane changelogs
2024-10-24 21:47:15 +02:00
TheLastProject
cdb7077b91 Update Fastlane changelogs 2024-10-24 19:44:33 +00:00
Sylvia van Os
55639e3cf2 Update CHANGELOG 2024-10-24 21:44:20 +02:00
Sylvia van Os
088ee5dc34 Merge pull request #2125 from obfusk/stocard-spanned-fix
StocardImporter: use ZipFile (fixes spanned archive marker breaking import)
2024-10-24 21:43:53 +02:00
Sylvia van Os
20d8374edc Merge pull request #2130 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-24 19:18:17 +02:00
ikanakova
265b90251d Translated using Weblate (Czech)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2024-10-24 09:16:08 +02:00
ikanakova
49d833eee7 Translated using Weblate (Czech)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2024-10-24 09:16:08 +02:00
FC (Fay) Stegerman
98f4e0dd7f StocardImporter: use ZipFile (fixes spanned archive marker breaking import) 2024-10-22 21:36:29 +02:00
FC (Fay) Stegerman
4ec1a947bc modify stocard ZIP files to include spanned archive marker 2024-10-22 21:36:28 +02:00
Sylvia van Os
dfe825ebec Merge pull request #2127 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-22 19:26:11 +02:00
Balázs Meskó
4f24e0a2dc Translated using Weblate (Hungarian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-10-22 19:16:14 +02:00
Eji-san
ed57ab52c8 Translated using Weblate (Indonesian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2024-10-22 19:16:13 +02:00
B o d o
0d3c3c5e35 Translated using Weblate (German)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-22 19:16:12 +02:00
Kachelkaiser
333acb7911 Translated using Weblate (German)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-10-22 19:16:12 +02:00
Sylvia van Os
056b363b7b Merge pull request #2126 from CatimaLoyalty/dep/agp871
Bump com.android.application to 8.7.1 and suppress incorrect new lint warning
2024-10-22 19:01:27 +02:00
Sylvia van Os
693e89c635 Bump com.android.application to 8.7.1 and suppress incorrect new lint warning 2024-10-22 18:39:34 +02:00
Vincent Caron
d95a7f7982 Add icons to the "More options" dialog (#2121) 2024-10-21 18:39:30 +02:00
Sylvia van Os
2f72fee1aa Merge pull request #2122 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-21 17:49:06 +02:00
Jiri Grönroos
59ffa6c357 Translated using Weblate (Finnish)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-10-21 03:32:21 +02:00
Sylvia van Os
1eea1b4402 Merge pull request #2119 from CatimaLoyalty/create-pull-request/patch-1729397925
Update contributors
2024-10-20 11:14:44 +02:00
TheLastProject
c936d0df49 Update contributors 2024-10-20 04:18:45 +00:00
Sylvia van Os
41dd6b2b69 Merge pull request #2112 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-17 19:45:14 +02:00
Sylvia van Os
524ef19991 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-10-17 18:16:30 +02:00
João Palmeiro
3312f7db8c Translated using Weblate (Portuguese (Portugal))
Currently translated at 99.2% (136 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_PT/
2024-10-15 12:16:04 +02:00
befag74614
49ea6e39cf Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-10-15 12:16:03 +02:00
Renko
4c15ddc35c Translated using Weblate (Romanian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-10-15 12:16:02 +02:00
Wiktor Perskawiec
1a7c8f088d Translated using Weblate (Polish)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-10-15 12:16:02 +02:00
João Palmeiro
1d6af0c540 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-10-15 12:16:01 +02:00
Максим Горпиніч
261130aa6f Translated using Weblate (Ukrainian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-10-15 12:16:00 +02:00
Максим Горпиніч
98526fcd0b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-10-15 12:16:00 +02:00
Dklfajsjfi49wefklsf32
64d1e70d33 Translated using Weblate (Dutch)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-10-15 12:15:59 +02:00
Sylvia van Os
71473f3804 Merge pull request #2114 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.4.3
Bump actions/upload-artifact from 4.4.0 to 4.4.3
2024-10-14 09:41:27 +02:00
Sylvia van Os
f360ee172f Merge pull request #2113 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.2.1
Bump actions/checkout from 4.2.0 to 4.2.1
2024-10-14 09:39:49 +02:00
dependabot[bot]
4940f32fbf Bump actions/upload-artifact from 4.4.0 to 4.4.3
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.0 to 4.4.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.4.0...v4.4.3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 02:53:36 +00:00
dependabot[bot]
b025af8d07 Bump actions/checkout from 4.2.0 to 4.2.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.2.0...v4.2.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 02:53:35 +00:00
Sylvia van Os
6418ab7cbe Merge pull request #2111 from CatimaLoyalty/create-pull-request/patch-1728793081
Update contributors
2024-10-13 08:32:07 +02:00
TheLastProject
30edf0efcf Update contributors 2024-10-13 04:18:00 +00:00
Sylvia van Os
37b02b13fa Merge pull request #2110 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-12 14:50:37 +02:00
Roger S
05453e92ea Translated using Weblate (German)
Currently translated at 99.2% (136 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-12 13:47:44 +02:00
J. Lavoie
4c3b830788 Translated using Weblate (Italian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-10-12 13:47:43 +02:00
J. Lavoie
0c706f2e5b Translated using Weblate (French)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-10-12 13:47:43 +02:00
Sylvia van Os
5ebe02fb89 Merge pull request #2109 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-12 09:04:12 +02:00
Roger S
3b8bf99e79 Translated using Weblate (German)
Currently translated at 99.2% (136 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-11 21:59:29 +00:00
Priit Jõerüüt
916c3d4db8 Translated using Weblate (Estonian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-10-11 21:59:29 +00:00
Peter Dave Hello
b1e89424dc Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 88.3% (121 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hant/
2024-10-11 21:59:28 +00:00
Peter Dave Hello
9d2af821d1 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2024-10-11 21:59:27 +00:00
大王叫我来巡山
e9eee27932 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-10-11 21:59:26 +00:00
大王叫我来巡山
4d23dce932 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-10-11 21:59:26 +00:00
Tim Trek
7277097d59 Translated using Weblate (German)
Currently translated at 99.2% (136 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-11 21:59:26 +00:00
Sylvia van Os
d6bc1f407b Merge pull request #2108 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-10 21:56:45 +02:00
Oğuz Ersen
f002c83cbd Translated using Weblate (Turkish)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-10-10 21:00:06 +02:00
109247019824
afcd63805b Translated using Weblate (Bulgarian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-10-10 21:00:06 +02:00
solokot
f5cca4f3fb Translated using Weblate (Russian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-10-10 21:00:06 +02:00
Roger S
ad2048a72c Translated using Weblate (German)
Currently translated at 98.5% (135 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-10 21:00:06 +02:00
solokot
e1ceb8b6af Translated using Weblate (Russian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-10-10 21:00:06 +02:00
Roger S
a3ce7ba3ad Translated using Weblate (German)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-10-10 21:00:06 +02:00
Sylvia van Os
41f3845f63 Merge pull request #2105 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-10 17:53:45 +02:00
Anonymous
86434d3919 Translated using Weblate (Bengali)
Currently translated at 35.8% (113 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn/
2024-10-10 12:51:24 +02:00
Anonymous
75efd9a733 Translated using Weblate (Icelandic)
Currently translated at 36.8% (116 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/is/
2024-10-10 12:51:24 +02:00
gallegonovato
f5b691d68b Translated using Weblate (Spanish)
Currently translated at 48.9% (67 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2024-10-10 12:51:23 +02:00
Anonymous
e9bf7bb547 Translated using Weblate (Slovak)
Currently translated at 98.4% (310 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2024-10-10 12:51:22 +02:00
Tim Trek
c6b726eb63 Translated using Weblate (German)
Currently translated at 98.5% (134 of 136 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-10 10:37:29 +02:00
Sylvia van Os
42638e3df6 Merge pull request #2103 from CatimaLoyalty/create-pull-request/patch-1728420476
Update Fastlane changelogs
2024-10-08 23:15:47 +02:00
Sylvia van Os
33a3c7645e Change card with volume buttons at most once per second 2024-10-08 23:15:26 +02:00
TheLastProject
86a0a8d19a Update Fastlane changelogs 2024-10-08 20:47:56 +00:00
Sylvia van Os
a1da4a7ef3 Update CHANGELOG 2024-10-08 22:47:42 +02:00
Sylvia van Os
ecfb7bb188 Merge pull request #2102 from CatimaLoyalty/feature/volumeKeyNavigation
Volume key navigation
2024-10-08 22:44:41 +02:00
Sylvia van Os
bf2047e1d6 Rephrase some settings 2024-10-08 22:23:15 +02:00
Filip Rzuhovský
09dc0e4c15 Implemented card swiping with volume buttons mechanism 2024-10-08 19:48:17 +02:00
Sylvia van Os
eed5bcda30 Merge pull request #2098 from CatimaLoyalty/create-pull-request/patch-1728188277
Update contributors
2024-10-06 12:53:49 +02:00
TheLastProject
d35c9887f6 Update contributors 2024-10-06 04:17:56 +00:00
Sylvia van Os
7eb98c9d4b Merge pull request #2097 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-03 17:29:01 +02:00
Hosted Weblate
bc0d89573e Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/
2024-10-03 07:15:44 +02:00
Jen
67c8fc7dbd Translated using Weblate (Kannada)
Currently translated at 28.5% (89 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/kn/
2024-10-03 07:15:43 +02:00
Sylvia van Os
d472948201 Merge pull request #2091 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-30 17:14:28 +02:00
Priit Jõerüüt
3d44f6000d Translated using Weblate (Estonian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-09-30 14:34:04 +02:00
Legendbird580
9b2d001c3c Translated using Weblate (Swedish)
Currently translated at 92.3% (288 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2024-09-30 14:34:04 +02:00
Sylvia van Os
74ae9ee040 Merge pull request #2090 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.2.0
Bump actions/checkout from 4.1.7 to 4.2.0
2024-09-30 08:22:39 +02:00
dependabot[bot]
d1e455f038 Bump actions/checkout from 4.1.7 to 4.2.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.7...v4.2.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 03:00:18 +00:00
Sylvia van Os
7d49fa98e7 Merge pull request #2089 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-29 18:18:21 +02:00
Eji-san
db59441d11 Translated using Weblate (Indonesian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2024-09-29 14:07:28 +00:00
Sylvia van Os
5da8afeb7d Merge pull request #2088 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-25 17:22:22 +02:00
Ricky Tigg
7575d7f271 Translated using Weblate (Finnish)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-09-25 15:16:36 +02:00
Sylvia van Os
7830502987 Merge pull request #2085 from CatimaLoyalty/create-pull-request/patch-1727159056
Update Gradle to 8.10.2
2024-09-24 17:40:47 +02:00
TheLastProject
a3decdf9ad Update Gradle to 8.10.2 2024-09-24 06:24:15 +00:00
Sylvia van Os
051ece8358 Merge pull request #2084 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-7.0.5
Bump peter-evans/create-pull-request from 7.0.2 to 7.0.5
2024-09-23 19:24:07 +02:00
dependabot[bot]
92da7fc877 Bump peter-evans/create-pull-request from 7.0.2 to 7.0.5
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.2 to 7.0.5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v7.0.2...v7.0.5)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 02:16:13 +00:00
Sylvia van Os
727d9ce781 Refactor to allow updating a loyalty card from a bundle (#2051)
This allows us to send any (partial) loyalty card into the edit
activity, granting us greater flexibility in what kind of scan result we
can parse
2024-09-22 10:20:58 +02:00
Sylvia van Os
94cee771bd Merge pull request #2083 from CatimaLoyalty/dependabot/gradle/com.android.application-8.6.1
Bump com.android.application from 8.6.0 to 8.6.1
2024-09-18 08:21:43 +02:00
dependabot[bot]
73db115f02 Bump com.android.application from 8.6.0 to 8.6.1
Bumps com.android.application from 8.6.0 to 8.6.1.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-18 02:19:53 +00:00
Sylvia van Os
c8aab06d77 Merge pull request #2082 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-7.0.2
Bump peter-evans/create-pull-request from 7.0.1 to 7.0.2
2024-09-16 08:38:05 +02:00
dependabot[bot]
be80003860 Bump peter-evans/create-pull-request from 7.0.1 to 7.0.2
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v7.0.1...v7.0.2)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 02:18:55 +00:00
Sylvia van Os
639c024e7e Merge pull request #2081 from CatimaLoyalty/create-pull-request/patch-1726373855
Update contributors
2024-09-15 10:40:10 +02:00
TheLastProject
8dc1e9f6b5 Update contributors 2024-09-15 04:17:35 +00:00
Sylvia van Os
a2a4d9ac16 Merge pull request #2080 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-14 21:19:59 +02:00
Nazar
60de179f74 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (136 of 136 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-09-14 17:09:34 +02:00
Sylvia van Os
518f384b99 Merge pull request #2078 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-11 17:34:09 +02:00
solokot
a83598676b Translated using Weblate (Russian)
Currently translated at 100.0% (136 of 136 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-09-11 11:45:21 +00:00
Sylvia van Os
59ddfe1d05 Merge pull request #2076 from CatimaLoyalty/create-pull-request/patch-1725949366
Update Gradle to 8.10.1
2024-09-10 20:59:49 +02:00
TheLastProject
d6def93b4e Update Gradle to 8.10.1 2024-09-10 06:22:45 +00:00
Sylvia van Os
65d95f4616 Merge pull request #2075 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-7.0.1
Bump peter-evans/create-pull-request from 6.1.0 to 7.0.1
2024-09-09 17:54:15 +02:00
dependabot[bot]
b858f5dc01 Bump peter-evans/create-pull-request from 6.1.0 to 7.0.1
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.1.0 to 7.0.1.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6.1.0...v7.0.1)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 02:29:28 +00:00
Sylvia van Os
648dbe7031 Merge pull request #2074 from CatimaLoyalty/create-pull-request/patch-1725769023
Update contributors
2024-09-08 11:05:41 +02:00
TheLastProject
7b57c73d2a Update contributors 2024-09-08 04:17:03 +00:00
Sylvia van Os
9c2ec91100 Merge pull request #2073 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-07 11:19:14 +02:00
Priit Jõerüüt
c5769d5a81 Translated using Weblate (Estonian)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/et/
2024-09-06 23:09:22 +02:00
Sylvia van Os
d3d5f62801 Merge pull request #2070 from CatimaLoyalty/dependabot/gradle/com.android.tools-desugar_jdk_libs-2.1.2
Bump com.android.tools:desugar_jdk_libs from 2.1.1 to 2.1.2
2024-09-05 17:48:17 +02:00
Sylvia van Os
bf8146d509 Merge pull request #2072 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-05 17:38:44 +02:00
大王叫我来巡山
fad5e7e238 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (136 of 136 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-09-05 12:47:56 +02:00
dependabot[bot]
af79b22f71 Bump com.android.tools:desugar_jdk_libs from 2.1.1 to 2.1.2
Bumps [com.android.tools:desugar_jdk_libs](https://github.com/google/desugar_jdk_libs) from 2.1.1 to 2.1.2.
- [Changelog](https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/desugar_jdk_libs/commits)

---
updated-dependencies:
- dependency-name: com.android.tools:desugar_jdk_libs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-05 02:25:30 +00:00
Sylvia van Os
a31afef298 Merge pull request #2069 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-04 18:03:32 +02:00
N. Hao
6096876894 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2024-09-04 12:09:38 +02:00
Charlie Ringström
0fe3d79103 Translated using Weblate (Swedish)
Currently translated at 91.9% (287 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2024-09-04 12:09:37 +02:00
Lilith Maria
8b0ae9d61a Translated using Weblate (Lithuanian)
Currently translated at 2.2% (3 of 136 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lt/
2024-09-04 12:09:37 +02:00
Lilith Maria
4489b46200 Translated using Weblate (Lithuanian)
Currently translated at 97.1% (303 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2024-09-04 12:09:36 +02:00
Sylvia van Os
1240e8e353 Merge pull request #2067 from CatimaLoyalty/create-pull-request/patch-1725376723
Update feature graphic
2024-09-03 17:19:35 +02:00
TheLastProject
74fa400237 Update feature graphic 2024-09-03 15:18:43 +00:00
Sylvia van Os
cc7fe900d2 Merge pull request #2066 from CatimaLoyalty/fix/generateFeatureGraphicsNoTxt
Fix feature graphic generation failing for languages without title.txt
2024-09-03 17:17:31 +02:00
Sylvia van Os
aab416e62b Fix feature graphic generation failing for languages without title.txt 2024-09-02 23:50:36 +02:00
Sylvia van Os
d924c292bc Merge pull request #2065 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-02 23:41:33 +02:00
Priit Jõerüüt
a251fbfcc6 Translated using Weblate (Estonian)
Currently translated at 1.4% (2 of 136 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/et/
2024-09-02 21:09:37 +00:00
Asaf Cohen
5bea05ee15 Translated using Weblate (Hebrew (Israel))
Currently translated at 31.0% (97 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/he_IL/
2024-09-02 21:09:36 +00:00
Sylvia van Os
21c7eee893 Merge pull request #2064 from CatimaLoyalty/dependabot/github_actions/actions/setup-python-5.2.0
Bump actions/setup-python from 5.1.1 to 5.2.0
2024-09-02 19:26:13 +02:00
Sylvia van Os
c9a5e12352 Merge pull request #2063 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.4.0
Bump actions/upload-artifact from 4.3.6 to 4.4.0
2024-09-02 19:25:56 +02:00
dependabot[bot]
956140c6db Bump actions/setup-python from 5.1.1 to 5.2.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.1.1 to 5.2.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5.1.1...v5.2.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 02:55:56 +00:00
dependabot[bot]
fde0b3e412 Bump actions/upload-artifact from 4.3.6 to 4.4.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.6 to 4.4.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.3.6...v4.4.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 02:55:54 +00:00
Sylvia van Os
2e8ba7a185 Merge pull request #2062 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-01 22:23:01 +02:00
Xpto
cc27988681 Translated using Weblate (Portuguese)
Currently translated at 3.7% (5 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2024-09-01 20:10:05 +00:00
Sylvia van Os
590af0c276 Merge pull request #2061 from CatimaLoyalty/dependabot/gradle/com.android.application-8.6.0
Bump com.android.application from 8.5.2 to 8.6.0
2024-08-30 17:07:55 +02:00
dependabot[bot]
32fe6b2f77 Bump com.android.application from 8.5.2 to 8.6.0
Bumps com.android.application from 8.5.2 to 8.6.0.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-30 02:51:52 +00:00
Sylvia van Os
9f5607016d Merge pull request #2059 from CatimaLoyalty/dependabot/gradle/com.android.tools-desugar_jdk_libs-2.1.1
Bump com.android.tools:desugar_jdk_libs from 2.1.0 to 2.1.1
2024-08-29 10:47:03 +02:00
dependabot[bot]
2e6ecdf02d Bump com.android.tools:desugar_jdk_libs from 2.1.0 to 2.1.1
Bumps [com.android.tools:desugar_jdk_libs](https://github.com/google/desugar_jdk_libs) from 2.1.0 to 2.1.1.
- [Changelog](https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/desugar_jdk_libs/commits)

---
updated-dependencies:
- dependency-name: com.android.tools:desugar_jdk_libs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-29 02:32:59 +00:00
Sylvia van Os
ef6cb69fb0 Merge pull request #2057 from CatimaLoyalty/dependabot/gradle/com.android.tools-desugar_jdk_libs-2.1.0
Bump com.android.tools:desugar_jdk_libs from 2.0.4 to 2.1.0
2024-08-27 08:57:51 +02:00
dependabot[bot]
71504af6b2 Bump com.android.tools:desugar_jdk_libs from 2.0.4 to 2.1.0
Bumps [com.android.tools:desugar_jdk_libs](https://github.com/google/desugar_jdk_libs) from 2.0.4 to 2.1.0.
- [Changelog](https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/desugar_jdk_libs/commits)

---
updated-dependencies:
- dependency-name: com.android.tools:desugar_jdk_libs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-27 02:30:23 +00:00
Sylvia van Os
a3ca084444 Merge pull request #2056 from CatimaLoyalty/create-pull-request/patch-1724559358
Update contributors
2024-08-25 10:52:03 +02:00
TheLastProject
35082be6cd Update contributors 2024-08-25 04:15:57 +00:00
Sylvia van Os
934ddb1bfe Merge pull request #2055 from CatimaLoyalty/fix/1842
Fix about screen text overlaying into arrows
2024-08-24 18:57:57 +02:00
Sylvia van Os
5d0a1d8fb2 Fix about screen text overlaying into arrows 2024-08-24 18:35:36 +02:00
Sylvia van Os
1c8c492400 Release Catima 2.31.1 2024-08-24 14:07:16 +02:00
Sylvia van Os
186db1d419 Merge pull request #2053 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-23 00:06:02 +02:00
Uporabnik Alen
b596628f81 Translated using Weblate (Slovenian)
Currently translated at 82.3% (257 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2024-08-22 23:09:22 +02:00
Sylvia van Os
74aad20d6b Merge pull request #2050 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-19 17:40:23 +02:00
Priit Jõerüüt
e7a50901ea Translated using Weblate (Estonian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-08-19 15:09:17 +00:00
Sylvia van Os
b7fa0dc70c Merge pull request #2048 from CatimaLoyalty/create-pull-request/patch-1723962057
Update Gradle to 8.10
2024-08-18 11:07:45 +02:00
Sylvia van Os
c19dc78f3e Merge pull request #2047 from CatimaLoyalty/create-pull-request/patch-1723954751
Update contributors
2024-08-18 09:57:18 +02:00
TheLastProject
c7639f0a02 Update Gradle to 8.10 2024-08-18 06:20:57 +00:00
TheLastProject
ad984b2ec4 Update contributors 2024-08-18 04:19:10 +00:00
Sylvia van Os
baa0378fa2 Merge pull request #2046 from CatimaLoyalty/create-pull-request/patch-1723902322
Update Fastlane changelogs
2024-08-17 17:08:52 +02:00
TheLastProject
9f422dc5ac Update Fastlane changelogs 2024-08-17 13:45:21 +00:00
Sylvia van Os
3ab28d8270 Update CHANGELOG 2024-08-17 15:45:08 +02:00
Sylvia van Os
f63950ff3c Merge pull request #2045 from obfusk/patch-9
update obfusk/gradle-update-action to v3.0.0
2024-08-17 12:46:28 +02:00
FC (Fay) Stegerman
b4dd713dab update obfusk/gradle-update-action to v3.0.0 2024-08-15 13:44:42 +00:00
unbiaseduser-github
80e4701d41 Make Back button/gesture not instantly collapse the MainActivity's search view (#2030) 2024-08-14 20:09:46 +02:00
Sylvia van Os
7c7a05f1f8 Merge pull request #2044 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-13 19:19:08 +02:00
Sylvia van Os
6e57d4711a Merge pull request #2043 from CatimaLoyalty/create-pull-request/patch-1723568443
Update locales
2024-08-13 19:18:41 +02:00
Priit Jõerüüt
626c4c956e Translated using Weblate (Estonian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-08-13 19:02:09 +02:00
ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ
522ae07942 Translated using Weblate (Greek)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-08-13 19:02:08 +02:00
TheLastProject
e5b7f723d2 Update locales 2024-08-13 17:00:43 +00:00
Sylvia van Os
1c8830f59c Merge pull request #2041 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-13 19:00:27 +02:00
Sylvia van Os
ad25cf9c9e Remove translated strings no longer in Catima 2024-08-13 18:04:50 +02:00
Priit Jõerüüt
c4c63e5ddc Added translation using Weblate (Estonian) 2024-08-12 23:30:58 +02:00
Priit Jõerüüt
443c858700 Translated using Weblate (Estonian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-08-12 23:30:57 +02:00
Sylvia van Os
c19b80f991 Merge pull request #2033 from AndreVero/AndreVero-remove-unused-strings-issue-2027
Remove unused strings from string.xml
2024-08-12 23:06:38 +02:00
Sylvia van Os
f3ee88b43c More cleanups 2024-08-12 23:01:27 +02:00
Sylvia van Os
1ac6ee6c59 Merge pull request #2040 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.3.6
Bump actions/upload-artifact from 4.3.5 to 4.3.6
2024-08-12 18:16:38 +02:00
dependabot[bot]
3f4da811ca Bump actions/upload-artifact from 4.3.5 to 4.3.6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.5 to 4.3.6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.3.5...v4.3.6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 02:25:26 +00:00
Sylvia van Os
598a9dd2da Merge pull request #2037 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-11 13:09:33 +02:00
Priit Jõerüüt
7a7a81d5c4 Translated using Weblate (Estonian)
Currently translated at 41.0% (130 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-08-11 09:09:56 +00:00
Peter Dave Hello
2730d157d8 Translated using Weblate (Chinese (Traditional))
Currently translated at 86.6% (117 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hant/
2024-08-11 09:09:56 +00:00
Peter Dave Hello
55519e487d Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2024-08-11 09:09:53 +00:00
Sylvia van Os
55fb14b6df Merge pull request #2036 from CatimaLoyalty/create-pull-request/patch-1723349900
Update contributors
2024-08-11 10:45:26 +02:00
TheLastProject
6b8fdd9c5c Update contributors 2024-08-11 04:18:20 +00:00
Sylvia van Os
94b15220ea Merge pull request #2034 from CatimaLoyalty/dependabot/gradle/com.android.application-8.5.2
Bump com.android.application from 8.5.1 to 8.5.2
2024-08-09 08:21:29 +02:00
dependabot[bot]
bbb3be736e Bump com.android.application from 8.5.1 to 8.5.2
Bumps com.android.application from 8.5.1 to 8.5.2.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-09 02:29:54 +00:00
Sylvia van Os
0355dc6cf3 Merge pull request #2032 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-08 18:51:13 +02:00
Andrii
287918372a Remove unused strings from string.xml 2024-08-08 14:54:49 +01:00
Priit Jõerüüt
6597ec1b6e Translated using Weblate (Estonian)
Currently translated at 23.6% (75 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-08-08 02:09:16 +02:00
Sylvia van Os
3184db27d1 Merge pull request #2031 from CatimaLoyalty/create-pull-request/patch-1723047037
Update locales
2024-08-07 18:12:42 +02:00
TheLastProject
99434e69a7 Update locales 2024-08-07 16:10:36 +00:00
Sylvia van Os
cb0997a0b1 Merge pull request #2029 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-07 18:10:21 +02:00
Priit Jõerüüt
6fa2c71bd3 Added translation using Weblate (Estonian) 2024-08-07 01:57:36 +02:00
Sylvia van Os
2f66317190 Merge pull request #2025 from CatimaLoyalty/dependabot/github_actions/gradle/actions-4
Bump gradle/actions from 3 to 4
2024-08-05 18:11:05 +02:00
Sylvia van Os
c718d27a4c Merge pull request #2024 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.3.5
Bump actions/upload-artifact from 4.3.4 to 4.3.5
2024-08-05 18:04:04 +02:00
Sylvia van Os
cadb92c4ef Merge pull request #2026 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-05 17:07:33 +02:00
tygyh
16d66f6c90 Translated using Weblate (Swedish)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/sv/
2024-08-05 15:09:31 +02:00
Milo Ivir
5c157888af Translated using Weblate (Croatian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2024-08-05 15:09:30 +02:00
Sylvia van Os
a556899881 Translated using Weblate (Esperanto)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2024-08-05 15:09:30 +02:00
하루
3ed6ad8b11 Translated using Weblate (Korean)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2024-08-05 15:09:29 +02:00
Allan Nordhøy
a06887e663 Translated using Weblate (Norwegian Bokmål)
Currently translated at 96.2% (305 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2024-08-05 15:09:28 +02:00
dependabot[bot]
ef9757df75 Bump gradle/actions from 3 to 4
Bumps [gradle/actions](https://github.com/gradle/actions) from 3 to 4.
- [Release notes](https://github.com/gradle/actions/releases)
- [Commits](https://github.com/gradle/actions/compare/v3...v4)

---
updated-dependencies:
- dependency-name: gradle/actions
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-05 02:32:59 +00:00
dependabot[bot]
03811f1f39 Bump actions/upload-artifact from 4.3.4 to 4.3.5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.4 to 4.3.5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.3.4...v4.3.5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-05 02:32:57 +00:00
Sylvia van Os
c1801ae450 Merge pull request #2023 from CatimaLoyalty/create-pull-request/patch-1722776436
Update feature graphic
2024-08-04 15:01:16 +02:00
TheLastProject
24ee045dcf Update feature graphic 2024-08-04 13:00:35 +00:00
Sylvia van Os
06c0ddf6ae Merge pull request #2022 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-04 14:59:31 +02:00
Hosted Weblate
e22a7c3063 Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/
2024-08-04 08:09:35 +02:00
Amir
b91dcc8e27 Translated using Weblate (Persian)
Currently translated at 35.3% (112 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2024-08-04 08:09:34 +02:00
ed tavinor
496ba82835 Translated using Weblate (Esperanto)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/eo/
2024-08-04 08:09:34 +02:00
ed tavinor
410518e677 Translated using Weblate (Esperanto)
Currently translated at 1.4% (2 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/eo/
2024-08-04 08:09:33 +02:00
ed tavinor
7cafebab7d Translated using Weblate (Esperanto)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2024-08-04 08:09:32 +02:00
Sylvia van Os
429e22cc5e Merge pull request #2021 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-02 23:47:05 +02:00
ed tavinor
1edc17fb7e Translated using Weblate (Esperanto)
Currently translated at 75.3% (239 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2024-08-02 22:09:36 +02:00
Alexander Kulumbeg
dd3cf771bd Translated using Weblate (Slovak)
Currently translated at 99.2% (134 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sk/
2024-08-02 22:09:36 +02:00
Alexander Kulumbeg
eebb5e5cd4 Translated using Weblate (Slovak)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2024-08-02 22:09:35 +02:00
Sylvia van Os
46fc2aab55 Merge pull request #2019 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-01 21:42:05 +02:00
ed tavinor
b765560fff Translated using Weblate (Esperanto)
Currently translated at 40.0% (127 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2024-08-01 21:09:16 +02:00
Sylvia van Os
6a3dd841b0 Merge pull request #2018 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-31 18:58:39 +02:00
Scrambled777
1b899a40a5 Translated using Weblate (Hindi)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-07-31 16:38:12 +02:00
Sylvia van Os
a05769c42d Update fastlane 2024-07-28 13:12:41 +02:00
Sylvia van Os
2c2ff2d1d2 Merge pull request #2016 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-28 13:08:24 +02:00
kompowiec2
045363f138 Translated using Weblate (Polish)
Currently translated at 97.0% (131 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2024-07-28 11:10:32 +02:00
kompowiec2
6860e1deb0 Translated using Weblate (Polish)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-07-28 11:10:31 +02:00
Sylvia van Os
469ed374ad Release Catima 2.31.0 2024-07-26 18:13:40 +02:00
Sylvia van Os
d952f194be Merge pull request #2014 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-25 18:38:43 +02:00
大王叫我来巡山
ccbf4afd44 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-07-25 02:09:51 +00:00
solokot
2b1a950204 Translated using Weblate (Russian)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-07-25 02:09:50 +00:00
Sylvia van Os
e930ee8efd Merge pull request #2013 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-24 19:42:31 +02:00
gallegonovato
d469e50985 Translated using Weblate (Spanish)
Currently translated at 48.8% (66 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2024-07-24 03:28:16 +02:00
Sylvia van Os
39ba630479 Merge pull request #2012 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-23 18:18:13 +02:00
Francisco (F4VSE)
074f84818d Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-07-23 14:10:02 +00:00
Francisco (F4VSE)
dd645a761d Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_PT/
2024-07-23 14:10:01 +00:00
grgergo
a12125e26d Translated using Weblate (Hungarian)
Currently translated at 99.3% (315 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-07-23 14:10:00 +00:00
Sylvia van Os
67e82c5d8f Translated using Weblate (Dutch)
Currently translated at 53.3% (72 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2024-07-23 14:10:00 +00:00
Francisco (F4VSE)
52b30cf988 Translated using Weblate (French)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2024-07-23 14:09:59 +00:00
Monika
ccfdc5f3b5 Translated using Weblate (Polish)
Currently translated at 99.3% (315 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-07-23 14:09:59 +00:00
Francisco (F4VSE)
339d002529 Translated using Weblate (French)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-07-23 14:09:58 +00:00
Sylvia van Os
5afe0bdc59 Merge pull request #2011 from CatimaLoyalty/create-pull-request/patch-1721672428
Update Fastlane changelogs
2024-07-22 20:22:34 +02:00
TheLastProject
59d3a74206 Update Fastlane changelogs 2024-07-22 18:20:28 +00:00
Sylvia van Os
58d3d29fbe Merge pull request #2010 from CatimaLoyalty/fix/1971
Fix chip contrast in dark mode
2024-07-22 20:20:13 +02:00
Sylvia van Os
c340544886 Fix chip contrast in dark mode 2024-07-22 19:47:01 +02:00
Sylvia van Os
c137e6178a Merge pull request #2009 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-22 19:21:45 +02:00
arbadacarba
98f1fd42f6 Translated using Weblate (Dutch)
Currently translated at 53.3% (72 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2024-07-22 13:09:52 +00:00
Sylvia van Os
f344a3b125 Translated using Weblate (Dutch)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-07-22 13:09:28 +00:00
Giovanni Donisi
24bdffdce8 Translated using Weblate (Italian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-07-22 13:09:28 +00:00
Sylvia van Os
853f4aabfc Translated using Weblate (German)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-07-22 13:09:27 +00:00
Sylvia van Os
439cd870e5 Translated using Weblate (German)
Currently translated at 95.5% (129 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-07-21 14:43:29 +02:00
arbadacarba
ab47a769ea Translated using Weblate (Dutch)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-07-21 14:43:27 +02:00
SaMuTa
b73b6584c2 Translated using Weblate (Arabic)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2024-07-21 10:09:57 +00:00
gallegonovato
06f4fb29b4 Translated using Weblate (Spanish)
Currently translated at 48.1% (65 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2024-07-21 10:09:56 +00:00
arbadacarba
3d19acd434 Translated using Weblate (German)
Currently translated at 95.5% (129 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-07-21 10:09:55 +00:00
arbadacarba
40dd882857 Translated using Weblate (German)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-07-21 10:09:55 +00:00
Sylvia van Os
029f49078e Merge pull request #2007 from CatimaLoyalty/create-pull-request/patch-1721535313
Update contributors
2024-07-21 09:48:37 +02:00
TheLastProject
d5f19877f2 Update contributors 2024-07-21 04:15:12 +00:00
Sylvia van Os
9679b0746b Merge pull request #2006 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-20 13:58:23 +02:00
Scrambled777
55209cbca5 Translated using Weblate (Hindi)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-07-20 08:09:40 +02:00
Scrambled777
63d7ea9b06 Translated using Weblate (Hindi)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2024-07-20 08:09:39 +02:00
Sylvia van Os
1062d9a302 Merge pull request #2005 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-19 17:08:20 +02:00
André Nunes
30b2243d1e Translated using Weblate (Portuguese (Portugal))
Currently translated at 99.3% (315 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-07-18 13:10:11 +00:00
大王叫我来巡山
9f755c2939 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-07-18 13:10:10 +00:00
IllusiveMan196
375f6d9117 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-07-18 13:10:10 +00:00
solokot
1e3b6f197d Translated using Weblate (Russian)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-07-18 13:10:09 +00:00
IllusiveMan196
9cf21f9d75 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-07-18 13:10:09 +00:00
Fqwe1
033168cc8d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-07-18 13:10:08 +00:00
Sylvia van Os
e698240a91 Merge pull request #2003 from CatimaLoyalty/create-pull-request/patch-1721230720
Update locales
2024-07-17 18:51:03 +02:00
TheLastProject
83df2a3262 Update locales 2024-07-17 15:38:40 +00:00
Sylvia van Os
9dce540451 Merge pull request #2002 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-17 17:38:27 +02:00
Lugi
b8f683a335 Translated using Weblate (Serbian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sr/
2024-07-17 14:27:16 +02:00
Lugi
9781d9bbd9 Translated using Weblate (Serbian)
Currently translated at 93.3% (296 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sr/
2024-07-17 14:09:44 +02:00
Lugi
43f81c5368 Translated using Weblate (Serbian)
Currently translated at 93.0% (295 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sr/
2024-07-17 14:09:43 +02:00
Zero
c702d1523c Translated using Weblate (Czech)
Currently translated at 98.5% (133 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2024-07-17 14:09:42 +02:00
solokot
4def250361 Translated using Weblate (Russian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-07-17 14:09:41 +02:00
Zero
c34455db3c Translated using Weblate (Czech)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2024-07-17 14:09:40 +02:00
Sylvia van Os
e252d80de9 Merge pull request #2001 from CatimaLoyalty/create-pull-request/patch-1721143752
Update locales
2024-07-16 18:22:49 +02:00
TheLastProject
60cf1dbf23 Update locales 2024-07-16 15:29:12 +00:00
Sylvia van Os
5839a6b2c5 Merge pull request #2000 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-16 17:29:00 +02:00
Lugi
c0da6a3176 Added translation using Weblate (Serbian) 2024-07-16 12:01:51 +00:00
Jose Delvani
85d5316d1f Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-07-16 12:01:51 +00:00
Oğuz Ersen
cb9493eb6e Translated using Weblate (Turkish)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-07-16 12:01:50 +00:00
109247019824
cfb473df8c Translated using Weblate (Bulgarian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-07-16 12:01:50 +00:00
大王叫我来巡山
2ff395f5ef Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-07-16 12:01:49 +00:00
Renko
73fa270fce Translated using Weblate (Romanian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-07-16 12:01:49 +00:00
gallegonovato
552d49ea7b Translated using Weblate (Spanish)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-07-16 12:01:48 +00:00
Sylvia van Os
f1f6dea5e7 Merge pull request #1999 from CatimaLoyalty/create-pull-request/patch-1721069315
Update Fastlane changelogs
2024-07-15 20:51:17 +02:00
TheLastProject
a677b004b3 Update Fastlane changelogs 2024-07-15 18:48:35 +00:00
Sylvia van Os
fd34f59ff9 Update CHANGELOG 2024-07-15 20:48:20 +02:00
Sylvia van Os
0c09707744 Merge pull request #1998 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-15 18:02:24 +02:00
ssantos
142da5b0b6 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_PT/
2024-07-15 14:09:49 +02:00
109247019824
80b72c1984 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-07-15 14:09:49 +02:00
Sylvia van Os
e9f87684af Merge pull request #1997 from CatimaLoyalty/dependabot/github_actions/actions/setup-python-5.1.1
Bump actions/setup-python from 5.1.0 to 5.1.1
2024-07-15 08:23:08 +02:00
dependabot[bot]
5fb2f546b0 Bump actions/setup-python from 5.1.0 to 5.1.1
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5.1.0...v5.1.1)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-15 02:37:47 +00:00
Sylvia van Os
c234444026 Merge pull request #1996 from CatimaLoyalty/create-pull-request/patch-1720930686
Update contributors
2024-07-14 09:23:54 +02:00
TheLastProject
eda9dfaa10 Update contributors 2024-07-14 04:18:06 +00:00
Sylvia van Os
4f13827ae0 Merge pull request #1934 from CatimaLoyalty/feature/1675
Support setting front or back image as thumbnail
2024-07-13 18:17:31 +02:00
Sylvia van Os
47b076b41d Support setting front or back image as thumbnail 2024-07-13 18:15:05 +02:00
Sylvia van Os
1e40241219 Merge pull request #1995 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-13 14:17:17 +02:00
Fqwe1
796f4c918d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-07-13 11:09:21 +00:00
solokot
ae6ce7f443 Translated using Weblate (Russian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-07-13 11:09:20 +00:00
Sylvia van Os
95189ce5ce Merge pull request #1994 from CatimaLoyalty/create-pull-request/patch-1720765275
Update Gradle to 8.9
2024-07-12 19:09:51 +02:00
TheLastProject
8de78406d5 Update Gradle to 8.9 2024-07-12 06:21:15 +00:00
Sylvia van Os
ea253313d5 Merge pull request #1993 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-12 07:09:46 +02:00
Sylvia van Os
c3413c4340 Merge pull request #1991 from CatimaLoyalty/dependabot/gradle/com.android.application-8.5.1
Bump com.android.application from 8.5.0 to 8.5.1
2024-07-12 07:08:34 +02:00
Leo
d22e6ca984 Translated using Weblate (French)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-07-12 03:24:13 +00:00
dependabot[bot]
9b8ab86219 Bump com.android.application from 8.5.0 to 8.5.1
Bumps com.android.application from 8.5.0 to 8.5.1.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-12 02:31:50 +00:00
Sylvia van Os
8a9c603725 Merge pull request #1990 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-11 18:57:36 +02:00
ssantos
8f4da1b601 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-07-11 16:09:31 +00:00
yazan abu alenain
ce917be59d Translated using Weblate (Arabic)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2024-07-11 16:09:31 +00:00
Sylvia van Os
1b1d8788df Translated using Weblate (Romanian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-07-11 16:09:30 +00:00
Jan Novotny
c126bff23c Translated using Weblate (Czech)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2024-07-11 16:09:29 +00:00
Renko
64355e0ddc Translated using Weblate (Romanian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-07-10 16:09:23 +02:00
Diego Beraldin
510b7a0e56 Translated using Weblate (Italian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-07-10 16:09:22 +02:00
Sylvia van Os
12da47d34a Merge pull request #1988 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.13
Bump org.robolectric:robolectric from 4.12.2 to 4.13
2024-07-09 08:22:23 +02:00
dependabot[bot]
3dca6c1db2 Bump org.robolectric:robolectric from 4.12.2 to 4.13
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.12.2 to 4.13.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.12.2...robolectric-4.13)

---
updated-dependencies:
- dependency-name: org.robolectric:robolectric
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-09 02:05:32 +00:00
Sylvia van Os
29aec92a7a Merge pull request #1987 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-08 19:45:36 +02:00
Oğuz Ersen
c373c1f9dd Translated using Weblate (Turkish)
Currently translated at 74.0% (100 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2024-07-08 19:10:35 +02:00
Sylvia van Os
cba7c77fa2 Merge pull request #1986 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-08 19:04:22 +02:00
Oğuz Ersen
80e3db0b2d Translated using Weblate (Turkish)
Currently translated at 73.3% (99 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2024-07-08 18:53:38 +02:00
Jose Delvani
4452336aa0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-07-08 18:53:38 +02:00
Scrambled777
d0710a16b6 Translated using Weblate (Hindi)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2024-07-08 18:53:37 +02:00
Oğuz Ersen
38f603cc0d Translated using Weblate (Turkish)
Currently translated at 72.5% (98 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2024-07-08 18:53:37 +02:00
Oğuz Ersen
5a6652c864 Translated using Weblate (Turkish)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-07-08 18:53:37 +02:00
大王叫我来巡山
59ed3e3fba Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-07-08 18:53:37 +02:00
gallegonovato
870720ad4b Translated using Weblate (Spanish)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-07-08 18:53:37 +02:00
Kachelkaiser
7d7d5280c5 Translated using Weblate (German)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-07-08 18:53:37 +02:00
Sylvia van Os
a93ee4bbff Merge pull request #1985 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.3.4
Bump actions/upload-artifact from 4.3.3 to 4.3.4
2024-07-08 07:05:12 +02:00
dependabot[bot]
d9b719103a Bump actions/upload-artifact from 4.3.3 to 4.3.4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.3 to 4.3.4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.3.3...v4.3.4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-08 02:35:21 +00:00
Sylvia van Os
c65f488536 Merge pull request #1984 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-07 23:44:55 +02:00
Scrambled777
3c11817edb Translated using Weblate (Hindi)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-07-07 21:10:32 +00:00
solokot
8a5dac9c24 Translated using Weblate (Russian)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-07-07 21:10:32 +00:00
Sylvia van Os
968729fbe6 Merge pull request #1983 from CatimaLoyalty/fix/importExportHacks
Fix/import export hacks
2024-07-07 20:00:24 +02:00
Sylvia van Os
8a8d5c65f2 Fix cancelling import/export by tapping away from dialog 2024-07-07 14:06:31 +02:00
Sylvia van Os
80e05a0392 Hack: Don't turn screen off in import/export activity to avoid background kills 2024-07-07 14:06:02 +02:00
Sylvia van Os
2374e998ee Merge pull request #1982 from CatimaLoyalty/create-pull-request/patch-1720325722
Update contributors
2024-07-07 12:09:42 +02:00
TheLastProject
48b6b83fba Update contributors 2024-07-07 04:15:22 +00:00
Sylvia van Os
6eac516d01 Merge pull request #1981 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-06 21:30:57 +02:00
大王叫我来巡山
f1d42ccc77 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-07-06 20:09:33 +02:00
Renko
68ebf3243f Translated using Weblate (Romanian)
Currently translated at 3.7% (5 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ro/
2024-07-06 20:09:33 +02:00
Renko
f8a93ed5f2 Translated using Weblate (Romanian)
Currently translated at 99.3% (311 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-07-06 20:09:32 +02:00
Sylvia van Os
ce14cd0447 Merge pull request #1976 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-05 17:54:24 +02:00
leccro
ee5ac2785d Translated using Weblate (Persian)
Currently translated at 15.6% (49 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2024-07-05 17:04:58 +02:00
Sylvia van Os
1c68bfea8d Merge pull request #1968 from CatimaLoyalty/create-pull-request/patch-1719862199
Update Fastlane changelogs
2024-07-01 21:30:24 +02:00
TheLastProject
a097264983 Update Fastlane changelogs 2024-07-01 19:29:59 +00:00
Sylvia van Os
19d5c1144e Merge pull request #1965 from CatimaLoyalty/fix/allow_multiline_store_name_if_needed
Allow store name thumbnails to span multiple lines
2024-07-01 21:29:46 +02:00
Sylvia van Os
c123dd5d42 Allow store name thumbnails to span multiple lines
Allowing spanning multiple lines helps in case the store name doesn't
fit on a single line. However, the store name should fit a single line
if possible because it looks better when the store name isn't split
among lines. Due to limitations in Android's autoSizeTextType system,
this needs a fairly ugly workaround.
2024-07-01 19:42:35 +02:00
Sylvia van Os
3fe0fec801 Merge pull request #1966 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-01 17:42:06 +02:00
109247019824
245ff6ade9 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-07-01 00:05:58 +02:00
Sylvia van Os
353cf1daad Merge pull request #1964 from CatimaLoyalty/create-pull-request/patch-1719720956
Update contributors
2024-06-30 10:13:43 +02:00
TheLastProject
2e5dbd5cc1 Update contributors 2024-06-30 04:15:56 +00:00
Sylvia van Os
7d6ce95998 Merge pull request #1963 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-30 00:23:31 +02:00
Jose Delvani
dca9816fbe Translated using Weblate (Portuguese (Brazil))
Currently translated at 2.2% (3 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_BR/
2024-06-29 22:36:07 +02:00
Sylvia van Os
a5eee0a3b1 Update README paths 2024-06-28 20:59:58 +02:00
Sylvia van Os
5d0b890de9 Merge pull request #1958 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-28 17:14:15 +02:00
Jose Delvani
7c6492965f Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-06-28 05:09:31 +02:00
Sylvia van Os
5f5280e2a6 Merge pull request #1957 from CatimaLoyalty/dependabot/gradle/androidx.test-core-1.6.1
Bump androidx.test:core from 1.6.0 to 1.6.1
2024-06-27 17:40:43 +02:00
dependabot[bot]
220d6cb993 Bump androidx.test:core from 1.6.0 to 1.6.1
Bumps androidx.test:core from 1.6.0 to 1.6.1.

---
updated-dependencies:
- dependency-name: androidx.test:core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-27 02:13:00 +00:00
Sylvia van Os
5f33807560 Merge pull request #1956 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-26 17:54:21 +02:00
Marian Turba
6d64a900f0 Translated using Weblate (Slovak)
Currently translated at 97.0% (130 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sk/
2024-06-26 15:09:57 +02:00
Allan Nordhøy
3550c2a9f7 Translated using Weblate (Norwegian Bokmål)
Currently translated at 96.8% (303 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2024-06-26 15:09:56 +02:00
Sylvia van Os
0bdda70761 Merge pull request #1955 from CatimaLoyalty/dependabot/gradle/androidx.test-core-1.6.0
Bump androidx.test:core from 1.5.0 to 1.6.0
2024-06-25 17:52:25 +02:00
dependabot[bot]
01debf1a09 Bump androidx.test:core from 1.5.0 to 1.6.0
Bumps androidx.test:core from 1.5.0 to 1.6.0.

---
updated-dependencies:
- dependency-name: androidx.test:core
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-25 02:02:34 +00:00
Sylvia van Os
76df487661 Merge pull request #1953 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-6.1.0
Bump peter-evans/create-pull-request from 6.0.5 to 6.1.0
2024-06-24 21:58:08 +02:00
dependabot[bot]
73a129b430 Bump peter-evans/create-pull-request from 6.0.5 to 6.1.0
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.5 to 6.1.0.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6.0.5...v6.1.0)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 02:09:21 +00:00
Sylvia van Os
71afba8ab9 Merge pull request #1951 from CatimaLoyalty/create-pull-request/patch-1719116160
Update contributors
2024-06-23 13:58:06 +02:00
TheLastProject
c0b01fca35 Update contributors 2024-06-23 04:16:00 +00:00
Sylvia van Os
7158de8b81 Merge pull request #1950 from CatimaLoyalty/create-pull-request/patch-1719066500
Update feature graphic
2024-06-22 16:39:03 +02:00
TheLastProject
c1afefb712 Update feature graphic 2024-06-22 14:28:19 +00:00
Sylvia van Os
d924029a5a Merge pull request #1946 from CatimaLoyalty/fix/featuregraphic_generation
Fix kn-IN feature graphic generation
2024-06-22 16:27:19 +02:00
Sylvia van Os
f5d104fa68 Fix kn-IN feature graphic generation 2024-06-22 16:25:33 +02:00
Sylvia van Os
1c0c1c6efc Merge pull request #1941 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-21 21:28:13 +02:00
Sylvia van Os
4d4e449150 Update fastlane 2024-06-20 17:13:09 +02:00
Krisna A. Prayoga
900f92cbd6 Translated using Weblate (Indonesian)
Currently translated at 97.0% (130 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2024-06-19 17:09:45 +00:00
Krisna A. Prayoga
48aab74737 Translated using Weblate (Indonesian)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2024-06-19 17:09:44 +00:00
しいたけ
427aa039d6 Translated using Weblate (Japanese)
Currently translated at 3.7% (5 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ja/
2024-06-19 17:09:43 +00:00
ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ
91909e2ce3 Translated using Weblate (Greek)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-06-19 17:09:42 +00:00
Sylvia van Os
967f20edc7 Add missing date to changelog 2024-06-19 18:51:24 +02:00
792 changed files with 8891 additions and 2353 deletions

View File

@@ -28,27 +28,47 @@ env:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
flavor: [Foss, Gplay]
steps:
- uses: actions/checkout@v4.1.7
- name: Fail on bad translations
run: if grep -ri "&lt;xliff" app/src/main/res/values*/strings.xml; then echo "Invalidly escaped translations found"; exit 1; fi
- uses: gradle/actions/wrapper-validation@v3
- 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: timeout 5m ./gradlew testReleaseUnitTest || { ./gradlew --stop && timeout 5m ./gradlew testReleaseUnitTest; }
- name: SpotBugs
run: ./gradlew spotbugsRelease
- name: Archive test results
if: always()
uses: actions/upload-artifact@v4.3.3
with:
name: test-results
path: app/build/reports
- uses: actions/checkout@v4.2.2
- name: Fail on bad translations
run: if grep -ri "&lt;xliff" app/src/main/res/values*/strings.xml; then echo "Invalidly escaped translations found"; exit 1; fi
- uses: gradle/actions/wrapper-validation@v4
- 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 assemble${{ matrix.flavor }}Release
- name: Check lint
run: ./gradlew lint${{ matrix.flavor }}Release
- name: Run unit tests
run: timeout 5m ./gradlew test${{ matrix.flavor }}ReleaseUnitTest || { ./gradlew --stop && timeout 5m ./gradlew test${{ matrix.flavor }}ReleaseUnitTest; }
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Run instrumented tests (API 21)
uses: ReactiveCircus/android-emulator-runner@v2
with:
api-level: 21
arch: x86_64
script: ./gradlew connected${{ matrix.flavor }}DebugAndroidTest
- name: Run instrumented tests (API 35)
uses: ReactiveCircus/android-emulator-runner@v2
with:
api-level: 35
arch: x86_64
script: ./gradlew connected${{ matrix.flavor }}DebugAndroidTest
- name: SpotBugs
run: ./gradlew spotbugs${{ matrix.flavor }}Release
- name: Archive test results
if: always()
uses: actions/upload-artifact@v4.6.2
with:
name: test-results-flavor${{ matrix.flavor }}
path: app/build/reports

View File

@@ -27,15 +27,15 @@ jobs:
steps:
- name: Checkout repo
id: checkout
uses: actions/checkout@v4.1.7
uses: actions/checkout@v4.2.2
- name: Setup Python
uses: actions/setup-python@v5.1.0
uses: actions/setup-python@v5.5.0
with:
python-version: '3.x'
- name: Run converter script
run: python .scripts/changelog_to_fastlane.py
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6.0.5
uses: peter-evans/create-pull-request@v7.0.8
with:
title: "Update Fastlane changelogs"
commit-message: "Update Fastlane changelogs"

View File

@@ -25,7 +25,7 @@ jobs:
steps:
- name: Checkout repo
id: checkout
uses: actions/checkout@v4.1.7
uses: actions/checkout@v4.2.2
- name: Update contributors
id: update_contributors
uses: TheLastProject/contributors-to-file-action@v3.2.0
@@ -33,7 +33,7 @@ jobs:
file_in_repo: app/src/main/res/raw/contributors.txt
min_commit_count: 5
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6.0.5
uses: peter-evans/create-pull-request@v7.0.8
with:
title: "Update contributors"
commit-message: "Update contributors"

View File

@@ -6,6 +6,7 @@ on:
- main
paths:
- 'fastlane/**/title.txt'
- '.scripts/generate_feature_graphic/**'
permissions:
actions: none
checks: none
@@ -24,11 +25,11 @@ jobs:
generate-feature-graphic:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.7
- uses: actions/checkout@v4.2.2
- name: Install requirements
run: |
sudo apt-get update
sudo apt-get install optipng mat2
sudo apt-get install imagemagick mat2 optipng
# Install 200 weight versions of relevant Noto (to use for languages not supported by Lexend Deca)
sudo apt-get install fonts-noto-extra fonts-noto-cjk-extra
# Custom fonts
@@ -38,7 +39,7 @@ jobs:
- name: Generate featureGraphic.png for each language
run: .scripts/generate_feature_graphic/generate_feature_graphic.sh
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6.0.5
uses: peter-evans/create-pull-request@v7.0.8
with:
title: "Update feature graphic"
commit-message: "Update feature graphic"

View File

@@ -21,12 +21,12 @@ jobs:
gradle-update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.7
- uses: obfusk/gradle-update-action@v2.0.0
- uses: actions/checkout@v4.2.2
- uses: obfusk/gradle-update-action@v3.0.0
id: gradle-update
- uses: gradle/actions/wrapper-validation@v3
- uses: gradle/actions/wrapper-validation@v4
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6.0.5
uses: peter-evans/create-pull-request@v7.0.8
with:
title: "Update Gradle to ${{ steps.gradle-update.outputs.version }}"
commit-message: "Update Gradle to ${{ steps.gradle-update.outputs.version }}"

View File

@@ -25,13 +25,13 @@ jobs:
update-locales:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.7
- uses: actions/checkout@v4.2.2
- name: Add new locales
run: .scripts/new-locales.py
- name: Update locales
run: .scripts/locales.py
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6.0.5
uses: peter-evans/create-pull-request@v7.0.8
with:
title: "Update locales"
commit-message: "Update locales"

3
.gitignore vendored
View File

@@ -25,3 +25,6 @@
/.bundle/
/vendor/bundle
/lib/bundler/man/
# Catima-specific
SHA256SUMS

View File

@@ -4,6 +4,11 @@ set -euo pipefail
script_location="$(dirname "$(readlink -f "$0")")"
for lang in "$script_location/../../fastlane/metadata/android/"*; do
# Skip languages without title.txt
if [ ! -f "$lang/title.txt" ]; then
continue
fi
pushd "$lang"
# Place temporary copy for editing if needed
cp "$script_location/featureGraphic.svg" featureGraphic.svg
@@ -32,12 +37,12 @@ for lang in "$script_location/../../fastlane/metadata/android/"*; do
# We specifically need the Serif version because of the 200 weight
case "$(basename "$lang")" in
bg|el-GR|ru-RU|uk) sed -i "s/Lexend Deca/Noto Serif/" featureGraphic.svg ;;
hi-IN) sed -i -e "s/Yesteryear/Noto Serif Devanagari/" -e "s/Lexend Deca/Noto Serif Devanagari/" featureGraphic.svg ;;
hi-IN) sed -i -e "s/Yesteryear/Noto Sans Devanagari/" -e "s/Lexend Deca/Noto Serif Devanagari/" featureGraphic.svg ;;
ja-JP) sed -i "s/Lexend Deca/Noto Serif CJK JP/" featureGraphic.svg ;;
kn-IN) sed -i -e 's/font-size="150"/font-size="100"/' -e "s/Yesteryear/Noto Serif Kannada/" featureGraphic.svg ;;
ko) sed -i "s/Lexend Deca/Noto Serif CJK KR/" featureGraphic.svg ;;
kn-IN) sed -i -e 's/font-size="150"/font-size="100"/' -e 's/y="285.511"/y="235.511"/' featureGraphic.svg ;;
zh-CN) sed -i "s/Lexend Deca/Noto Serif CJK SC/" featureGraphic.svg ;;
zh-TW) sed -i "s/Lexend Deca/Noto Serif CJK TC/" featureGraphic.svg ;;
zh-TW) sed -i -e "s/Yesteryear/Noto Sans CJK TC/" -e "s/Lexend Deca/Noto Serif CJK TC/" featureGraphic.svg ;;
*) ;;
esac
fi

View File

@@ -1,6 +1,65 @@
# Changelog
## v2.30.0 - 136
## v2.34.5 - 147 (2025-03-22)
- Target Android 15
- Fix crash reading unsupported pkpass files
- Improve pkpass support
## v2.34.4 - 146 (2025-01-17)
- Ability to sort cards by start of validity
- Temporarily revert to targeting Android 14 to fix some UI issues
## v2.34.3 - 145 (2025-01-15)
- Target Android 15
- Fix keyboard covering save button in edit screen
- Fix some pkpass files not being detected as pkpass (application/vnd-com.apple.pkpass mime type support)
## v2.34.2 - 144 (2024-12-26)
- Improve archive/starred icon display
## v2.34.1 - 143 (2024-12-12)
- Fix crash when opening invalid pkpass files
## v2.34.0 - 142 (2024-12-10)
- Add Passbook (.pkpass) support
- Fix import of transparent PDF files
- Improve display of transparent thumbnails
## v2.33.0 - 141 (2024-11-19)
- Change default column on wide screens to 4
- Allow overriding column counts for portrait and landscape in settings
- Keep main screen search filter when rotating screen or opening a card
- Limit max length of note display on main screen
## v2.32.1 - 140 (2024-10-29)
- Fix text wrapping on add dialog
## v2.32.0 - 139 (2024-10-28)
- Option to navigate cards using the volume buttons
- Fix Stocard import
- Fix "Import cancelled" message appearing after successful import
## v2.31.1 - 138 (2024-08-24)
- Fix back gesture on main screen dismissing keyboard and search on Android 13+
## v2.31.0 - 137 (2024-07-26)
- Allow long store names in preview to split over multiple lines
- Option to use front of back image in thumbnail menu
- Minor import/export fixes
- Minor UI fixes
## v2.30.0 - 136 (2024-06-18)
- Support for creating a card when sharing plain text
- Display image type instead of barcode below images

128
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
catima.g9ex3@hackerchick.me.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

View File

@@ -5,25 +5,26 @@ GEM
base64
nkf
rexml
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.3.0)
aws-partitions (1.931.0)
aws-sdk-core (3.196.1)
aws-eventstream (1.3.2)
aws-partitions (1.1072.0)
aws-sdk-core (3.220.2)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
base64
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.81.0)
aws-sdk-core (~> 3, >= 3.193.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.151.0)
aws-sdk-core (~> 3, >= 3.194.0)
aws-sdk-kms (1.99.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.182.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.8)
aws-sigv4 (1.8.0)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.11.0)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
@@ -33,13 +34,13 @@ GEM
commander (4.6.0)
highline (~> 2.0.0)
declarative (0.0.20)
digest-crc (0.6.5)
digest-crc (0.7.0)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.6.20240107)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.110.0)
faraday (1.10.3)
excon (0.112.0)
faraday (1.10.4)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
@@ -58,17 +59,17 @@ GEM
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.1)
faraday-multipart (1.1.0)
multipart-post (~> 2.0)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.3.1)
fastlane (2.220.0)
fastimage (2.4.0)
fastlane (2.227.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
@@ -84,6 +85,7 @@ GEM
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
fastlane-sirp (>= 1.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
@@ -107,8 +109,10 @@ GEM
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty (~> 0.4.0)
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-sirp (1.0.0)
sysrandom (~> 1.0)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a)
@@ -126,12 +130,12 @@ GEM
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.31.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.7.0)
google-cloud-core (1.8.0)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.4.0)
google-cloud-errors (1.5.0)
google-cloud-storage (1.47.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
@@ -147,35 +151,36 @@ GEM
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.5)
http-cookie (1.0.8)
domain_name (~> 0.5)
httpclient (2.8.3)
httpclient (2.9.0)
mutex_m
jmespath (1.6.2)
json (2.7.2)
jwt (2.8.1)
json (2.10.2)
jwt (2.10.1)
base64
mini_magick (4.12.0)
mini_magick (4.13.2)
mini_mime (1.1.5)
multi_json (1.15.0)
multipart-post (2.4.1)
nanaimo (0.3.0)
mutex_m (0.3.0)
nanaimo (0.4.0)
naturally (2.2.1)
nkf (0.2.0)
optparse (0.5.0)
optparse (0.6.0)
os (1.1.4)
plist (3.7.1)
public_suffix (5.0.5)
plist (3.7.2)
public_suffix (6.0.1)
rake (13.2.1)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.8)
strscan (>= 3.0.9)
rouge (2.0.7)
rexml (3.4.1)
rouge (3.28.0)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
rubyzip (2.4.1)
security (0.1.5)
signet (0.19.0)
addressable (~> 2.8)
@@ -185,7 +190,7 @@ GEM
simctl (1.6.10)
CFPropertyList
naturally
strscan (3.1.0)
sysrandom (1.0.5)
terminal-notifier (2.0.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
@@ -195,17 +200,17 @@ GEM
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unicode-display_width (2.5.0)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
xcodeproj (1.24.0)
xcodeproj (1.27.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
xcpretty (0.3.0)
rouge (~> 2.0.7)
nanaimo (~> 0.4.0)
rexml (>= 3.3.6, < 4.0)
xcpretty (0.4.0)
rouge (~> 3.28.0)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
@@ -216,4 +221,4 @@ DEPENDENCIES
fastlane
BUNDLED WITH
2.5.9
2.5.22

View File

@@ -4,6 +4,7 @@ import com.github.spotbugs.snom.SpotBugsTask
plugins {
id("com.android.application")
id("com.github.spotbugs")
id("org.jetbrains.kotlin.android")
}
spotbugs {
@@ -15,19 +16,24 @@ spotbugs {
android {
namespace = "protect.card_locker"
compileSdk = 34
compileSdk = 35
defaultConfig {
applicationId = "me.hackerchick.catima"
minSdk = 21
targetSdk = 34
versionCode = 136
versionName = "2.30.0"
targetSdk = 35
versionCode = 147
versionName = "2.34.5"
vectorDrawables.useSupportLibrary = true
multiDexEnabled = true
resourceConfigurations += listOf("ar", "bg", "bn", "bn-rIN", "bs", "cs", "da", "de", "el-rGR", "en", "eo", "es", "es-rAR", "fi", "fr", "he-rIL", "hi", "hr", "hu", "in-rID", "is", "it", "ja", "ko", "lt", "lv", "nb-rNO", "nl", "oc", "pl", "pt-rBR", "pt-rPT", "ro-rRO", "ru", "sk", "sl", "sv", "tr", "uk", "vi", "zh-rCN", "zh-rTW")
resourceConfigurations += listOf("ar", "bg", "bn", "bn-rIN", "bs", "cs", "da", "de", "el-rGR", "en", "eo", "es", "es-rAR", "et", "fi", "fr", "gl", "he-rIL", "hi", "hr", "hu", "in-rID", "is", "it", "ja", "ko", "lt", "lv", "nb-rNO", "nl", "oc", "pl", "pt", "pt-rBR", "pt-rPT", "ro-rRO", "ru", "sk", "sl", "sr", "sv", "ta", "tr", "uk", "vi", "zh-rCN", "zh-rTW")
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
buildConfigField("boolean", "showDonate", "true")
buildConfigField("boolean", "showRateOnGooglePlay", "false")
}
buildTypes {
@@ -48,6 +54,21 @@ android {
viewBinding = true
}
flavorDimensions.add("type")
productFlavors {
create("foss") {
dimension = "type"
isDefault = true
}
create("gplay") {
dimension = "type"
// Google doesn't allow donation links
buildConfigField("boolean", "showDonate", "false")
buildConfigField("boolean", "showRateOnGooglePlay", "true")
}
}
bundle {
language {
enableSplit = false
@@ -60,8 +81,8 @@ android {
// Flag to enable support for the new language APIs
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
sourceSets {
@@ -82,25 +103,26 @@ android {
lint {
lintConfig = file("lint.xml")
}
kotlinOptions {
jvmTarget = "17"
}
}
dependencies {
// AndroidX
implementation("androidx.appcompat:appcompat:1.7.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("androidx.exifinterface:exifinterface:1.3.7")
implementation("androidx.constraintlayout:constraintlayout:2.2.1")
implementation("androidx.core:core-ktx:1.15.0")
implementation("androidx.core:core-splashscreen:1.0.1")
implementation("androidx.exifinterface:exifinterface:1.4.0")
implementation("androidx.palette:palette:1.0.0")
implementation("androidx.preference:preference:1.2.1")
implementation("com.google.android.material:material:1.12.0")
implementation("com.github.yalantis:ucrop:2.2.9")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
// Splash Screen
implementation("androidx.core:core-splashscreen:1.0.1")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")
// Third-party
implementation("com.journeyapps:zxing-android-embedded:4.3.0@aar")
implementation("com.github.yalantis:ucrop:2.2.10")
implementation("com.google.zxing:core:3.5.3")
implementation("org.apache.commons:commons-csv:1.9.0")
implementation("com.jaredrummler:colorpicker:1.1.0")
@@ -110,9 +132,18 @@ dependencies {
implementation("io.wcm.tooling.spotbugs:io.wcm.tooling.spotbugs.annotations:1.0.0")
// Testing
testImplementation("androidx.test:core:1.5.0")
testImplementation("junit:junit:4.13.2")
testImplementation("org.robolectric:robolectric:4.12.2")
val androidXTestVersion = "1.6.1"
val junitVersion = "4.13.2"
testImplementation("androidx.test:core:$androidXTestVersion")
testImplementation("junit:junit:$junitVersion")
testImplementation("org.robolectric:robolectric:4.14.1")
androidTestImplementation("androidx.test:core:$androidXTestVersion")
androidTestImplementation("junit:junit:$junitVersion")
androidTestImplementation("androidx.test.ext:junit:1.2.1")
androidTestImplementation("androidx.test:runner:$androidXTestVersion")
androidTestImplementation("androidx.test.uiautomator:uiautomator:2.3.0")
androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
}
tasks.withType<SpotBugsTask>().configureEach {

View File

@@ -0,0 +1,67 @@
package protect.card_locker;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.typeText;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withChild;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.junit.Assert.assertEquals;
import androidx.appcompat.widget.Toolbar;
import androidx.test.core.app.ActivityScenario;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.uiautomator.UiDevice;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
public class MainActivitySearchViewTest {
@Test
public void whenSearchViewIsExpandedAndBackIsPressedThenMenuItemShouldNotBeCollapsed() {
String query = "random arbitrary text";
try (ActivityScenario<MainActivity> mainActivityScenario = ActivityScenario.launch(MainActivity.class)) {
mainActivityScenario.onActivity(this::makeSearchMenuItemVisible);
onView(withId(R.id.action_search)).perform(click());
onView(withId(androidx.appcompat.R.id.search_src_text)).perform(typeText(query));
pressBack();
onView(withId(androidx.appcompat.R.id.search_src_text)).check(matches(withText(query)));
mainActivityScenario.onActivity(activity -> assertEquals(query, activity.mFilter));
}
}
@Test
public void whenSearchViewIsExpandedThenItShouldOnlyBeCollapsedWhenBackIsPressedTwice() {
try (ActivityScenario<MainActivity> mainActivityScenario = ActivityScenario.launch(MainActivity.class)) {
mainActivityScenario.onActivity(this::makeSearchMenuItemVisible);
onView(withId(R.id.action_search)).perform(click());
pressBack();
onView(withId(androidx.appcompat.R.id.search_src_text)).check(matches(isDisplayed()));
pressBack();
onView(withId(android.R.id.content)).check(matches(is(not(withChild(withId(androidx.appcompat.R.id.search_src_text))))));
}
}
private void makeSearchMenuItemVisible(MainActivity activity) {
Toolbar toolbar = activity.findViewById(R.id.toolbar);
toolbar.getMenu().findItem(R.id.action_search).setVisible(true);
}
private void pressBack() {
UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).pressBack();
}
}

View File

@@ -1,2 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_name">Debugar Catima</string>
</resources>

View File

@@ -1,2 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">عیب‌یابی کاتیما</string>
</resources>

View File

@@ -1,2 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_name">Catima-vianmääritys</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Depuración de Catima</string>
</resources>

View File

@@ -1,2 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_name">Catimaデバーグ</string>
</resources>

View File

@@ -1,2 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_name">Catima atkļūdošana</string>
</resources>

View File

@@ -1,2 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -40,12 +40,28 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="content"/>
<data android:host="*"/>
<data android:mimeType="image/*" />
<data android:mimeType="application/pdf" />
<data android:mimeType="application/vnd.apple.pkpass" />
<data android:mimeType="application/vnd-com.apple.pkpass" />
<data android:mimeType="application/vnd.espass-espass" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
<data android:mimeType="image/*" />
<data android:mimeType="application/pdf" />
<data android:mimeType="application/vnd.apple.pkpass" />
<data android:mimeType="application/vnd-com.apple.pkpass" />
<data android:mimeType="application/vnd.espass-espass" />
</intent-filter>
</activity>
<activity
@@ -63,13 +79,12 @@
<activity
android:name=".LoyaltyCardViewActivity"
android:exported="true"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateHidden" />
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".LoyaltyCardEditActivity"
android:exported="true"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateHidden">
android:windowSoftInputMode="adjustResize">
<intent-filter
android:autoVerify="true"
android:label="@string/app_name">
@@ -107,8 +122,7 @@
<activity
android:name=".BarcodeSelectorActivity"
android:label="@string/selectBarcodeTitle"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateHidden" />
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".preferences.SettingsActivity"
android:label="@string/settings"
@@ -183,7 +197,8 @@
android:resource="@xml/file_provider_paths" />
</provider>
<service android:name=".CardsOnPowerScreenService" android:label="@string/app_name"
android:permission="android.permission.BIND_CONTROLS" android:exported="true">
android:permission="android.permission.BIND_CONTROLS" android:exported="true"
tools:targetApi="r">
<intent-filter>
<action android:name="android.service.controls.ControlsProviderService" />
</intent-filter>

View File

@@ -1,147 +0,0 @@
package protect.card_locker;
import android.os.Bundle;
import android.text.Spanned;
import android.view.MenuItem;
import android.view.View;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import protect.card_locker.databinding.AboutActivityBinding;
public class AboutActivity extends CatimaAppCompatActivity {
private static final String TAG = "Catima";
private AboutActivityBinding binding;
private AboutContent content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = AboutActivityBinding.inflate(getLayoutInflater());
content = new AboutContent(this);
setTitle(content.getPageTitle());
setContentView(binding.getRoot());
setSupportActionBar(binding.toolbar);
enableToolbarBackButton();
TextView copyright = binding.creditsSub;
copyright.setText(content.getCopyrightShort());
TextView versionHistory = binding.versionHistorySub;
versionHistory.setText(content.getVersionHistory());
binding.versionHistory.setTag("https://catima.app/changelog/");
binding.translate.setTag("https://hosted.weblate.org/engage/catima/");
binding.license.setTag("https://github.com/CatimaLoyalty/Android/blob/main/LICENSE");
binding.repo.setTag("https://github.com/CatimaLoyalty/Android/");
binding.privacy.setTag("https://catima.app/privacy-policy/");
binding.reportError.setTag("https://github.com/CatimaLoyalty/Android/issues");
binding.rate.setTag("https://play.google.com/store/apps/details?id=me.hackerchick.catima");
binding.donate.setTag("https://catima.app/donate");
boolean installedFromGooglePlay = Utils.installedFromGooglePlay(this);
// Hide Google Play rate button if not on Google Play
binding.rate.setVisibility(installedFromGooglePlay ? View.VISIBLE : View.GONE);
// Hide donate button on Google Play (Google Play doesn't allow donation links)
binding.donate.setVisibility(installedFromGooglePlay ? View.GONE : View.VISIBLE);
bindClickListeners();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onDestroy() {
super.onDestroy();
content.destroy();
clearClickListeners();
binding = null;
}
private void bindClickListeners() {
binding.versionHistory.setOnClickListener(this::showHistory);
binding.translate.setOnClickListener(this::openExternalBrowser);
binding.license.setOnClickListener(this::showLicense);
binding.repo.setOnClickListener(this::openExternalBrowser);
binding.privacy.setOnClickListener(this::showPrivacy);
binding.reportError.setOnClickListener(this::openExternalBrowser);
binding.rate.setOnClickListener(this::openExternalBrowser);
binding.donate.setOnClickListener(this::openExternalBrowser);
binding.credits.setOnClickListener(view -> showCredits());
}
private void clearClickListeners() {
binding.versionHistory.setOnClickListener(null);
binding.translate.setOnClickListener(null);
binding.license.setOnClickListener(null);
binding.repo.setOnClickListener(null);
binding.privacy.setOnClickListener(null);
binding.reportError.setOnClickListener(null);
binding.rate.setOnClickListener(null);
binding.donate.setOnClickListener(null);
binding.credits.setOnClickListener(null);
}
private void showCredits() {
showHTML(R.string.credits, content.getContributorInfo(), null);
}
private void showHistory(View view) {
showHTML(R.string.version_history, content.getHistoryInfo(), view);
}
private void showLicense(View view) {
showHTML(R.string.license, content.getLicenseInfo(), view);
}
private void showPrivacy(View view) {
showHTML(R.string.privacy_policy, content.getPrivacyInfo(), view);
}
private void showHTML(@StringRes int title, final Spanned text, @Nullable View view) {
int dialogContentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
TextView textView = new TextView(this);
textView.setText(text);
Utils.makeTextViewLinksClickable(textView, text);
ScrollView scrollView = new ScrollView(this);
scrollView.addView(textView);
scrollView.setPadding(dialogContentPadding, dialogContentPadding / 2, dialogContentPadding, 0);
// Create dialog
MaterialAlertDialogBuilder materialAlertDialogBuilder = new MaterialAlertDialogBuilder(this);
materialAlertDialogBuilder
.setTitle(title)
.setView(scrollView)
.setPositiveButton(R.string.ok, null);
// Add View online button if an URL is linked to this view
if (view != null && view.getTag() != null) {
materialAlertDialogBuilder.setNeutralButton(R.string.view_online, (dialog, which) -> openExternalBrowser(view));
}
// Show dialog
materialAlertDialogBuilder.show();
}
private void openExternalBrowser(View view) {
Object tag = view.getTag();
if (tag instanceof String && ((String) tag).startsWith("https://")) {
(new OpenWebLinkHandler()).openBrowser(this, (String) tag);
}
}
}

View File

@@ -0,0 +1,149 @@
package protect.card_locker
import android.os.Bundle
import android.text.Spanned
import android.view.MenuItem
import android.view.View
import android.widget.ScrollView
import android.widget.TextView
import androidx.annotation.StringRes
import androidx.core.view.isVisible
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import protect.card_locker.databinding.AboutActivityBinding
class AboutActivity : CatimaAppCompatActivity() {
private companion object {
private const val TAG = "Catima"
}
private lateinit var binding: AboutActivityBinding
private lateinit var content: AboutContent
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = AboutActivityBinding.inflate(layoutInflater)
content = AboutContent(this)
title = content.pageTitle
setContentView(binding.root)
setSupportActionBar(binding.toolbar)
enableToolbarBackButton()
binding.apply {
creditsSub.text = content.copyrightShort
versionHistorySub.text = content.versionHistory
versionHistory.tag = "https://catima.app/changelog/"
translate.tag = "https://hosted.weblate.org/engage/catima/"
license.tag = "https://github.com/CatimaLoyalty/Android/blob/main/LICENSE"
repo.tag = "https://github.com/CatimaLoyalty/Android/"
privacy.tag = "https://catima.app/privacy-policy/"
reportError.tag = "https://github.com/CatimaLoyalty/Android/issues"
rate.tag = "https://play.google.com/store/apps/details?id=me.hackerchick.catima"
donate.tag = "https://catima.app/donate"
// Hide Google Play rate button if not on Google Play
rate.isVisible = BuildConfig.showRateOnGooglePlay
// Hide donate button on Google Play (Google Play doesn't allow donation links)
donate.isVisible = BuildConfig.showDonate
}
bindClickListeners()
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
android.R.id.home -> {
finish()
true
}
else -> super.onOptionsItemSelected(item)
}
}
override fun onDestroy() {
super.onDestroy()
content.destroy()
clearClickListeners()
}
private fun bindClickListeners() {
binding.apply {
versionHistory.setOnClickListener { showHistory(it) }
translate.setOnClickListener { openExternalBrowser(it) }
license.setOnClickListener { showLicense(it) }
repo.setOnClickListener { openExternalBrowser(it) }
privacy.setOnClickListener { showPrivacy(it) }
reportError.setOnClickListener { openExternalBrowser(it) }
rate.setOnClickListener { openExternalBrowser(it) }
donate.setOnClickListener { openExternalBrowser(it) }
credits.setOnClickListener { showCredits() }
}
}
private fun clearClickListeners() {
binding.apply {
versionHistory.setOnClickListener(null)
translate.setOnClickListener(null)
license.setOnClickListener(null)
repo.setOnClickListener(null)
privacy.setOnClickListener(null)
reportError.setOnClickListener(null)
rate.setOnClickListener(null)
donate.setOnClickListener(null)
credits.setOnClickListener(null)
}
}
private fun showCredits() {
showHTML(R.string.credits, content.contributorInfo, null)
}
private fun showHistory(view: View) {
showHTML(R.string.version_history, content.historyInfo, view)
}
private fun showLicense(view: View) {
showHTML(R.string.license, content.licenseInfo, view)
}
private fun showPrivacy(view: View) {
showHTML(R.string.privacy_policy, content.privacyInfo, view)
}
private fun showHTML(@StringRes title: Int, text: Spanned, view: View?) {
val dialogContentPadding = resources.getDimensionPixelSize(R.dimen.alert_dialog_content_padding)
val textView = TextView(this).apply {
setText(text)
Utils.makeTextViewLinksClickable(this, text)
}
val scrollView = ScrollView(this).apply {
addView(textView)
setPadding(dialogContentPadding, dialogContentPadding / 2, dialogContentPadding, 0)
}
MaterialAlertDialogBuilder(this).apply {
setTitle(title)
setView(scrollView)
setPositiveButton(R.string.ok, null)
// Add View online button if an URL is linked to this view
view?.tag?.let {
setNeutralButton(R.string.view_online) { _, _ -> openExternalBrowser(view) }
}
show()
}
}
private fun openExternalBrowser(view: View) {
val tag = view.tag
if (tag is String && tag.startsWith("https://")) {
OpenWebLinkHandler().openBrowser(this, tag)
}
}
}

View File

@@ -45,6 +45,7 @@ public class BarcodeSelectorActivity extends CatimaAppCompatActivity implements
binding = BarcodeSelectorActivityBinding.inflate(getLayoutInflater());
setTitle(R.string.selectBarcodeTitle);
setContentView(binding.getRoot());
Utils.applyWindowInsets(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
enableToolbarBackButton();
@@ -71,7 +72,7 @@ public class BarcodeSelectorActivity extends CatimaAppCompatActivity implements
});
final Bundle b = getIntent().getExtras();
final String initialCardId = b != null ? b.getString("initialCardId") : null;
final String initialCardId = b != null ? b.getString(LoyaltyCard.BUNDLE_LOYALTY_CARD_CARD_ID) : null;
if (initialCardId != null) {
cardId.setText(initialCardId);

View File

@@ -1,26 +0,0 @@
package protect.card_locker;
public class BarcodeValues {
private final String mFormat;
private final String mContent;
private String mNote;
public BarcodeValues(String format, String content) {
mFormat = format;
mContent = content;
}
public void setNote(String note) {
mNote = note;
}
public String format() {
return mFormat;
}
public String content() {
return mContent;
}
public String note() { return mNote; }
}

View File

@@ -1,6 +0,0 @@
package protect.card_locker;
public interface BarcodeValuesListDisambiguatorCallback {
void onUserChoseBarcode(BarcodeValues barcodeValues);
void onUserDismissedSelector();
}

View File

@@ -12,15 +12,15 @@ import androidx.appcompat.widget.Toolbar;
import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import protect.card_locker.databinding.SimpleToolbarListActivityBinding;
import protect.card_locker.databinding.CardShortcutConfigureActivityBinding;
import protect.card_locker.preferences.Settings;
/**
* The configuration screen for creating a shortcut.
*/
public class CardShortcutConfigure extends CatimaAppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener {
private SimpleToolbarListActivityBinding binding;
private CardShortcutConfigureActivityBinding binding;
static final String TAG = "Catima";
private SQLiteDatabase mDatabase;
private LoyaltyCardCursorAdapter mAdapter;
@@ -28,7 +28,7 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
binding = SimpleToolbarListActivityBinding.inflate(getLayoutInflater());
binding = CardShortcutConfigureActivityBinding.inflate(getLayoutInflater());
mDatabase = new DBHelper(this).getReadableDatabase();
// Set the result to CANCELED. This will cause nothing to happen if the
@@ -36,6 +36,7 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo
setResult(RESULT_CANCELED);
setContentView(binding.getRoot());
Utils.applyWindowInsets(binding.getRoot());
Toolbar toolbar = binding.toolbar;
toolbar.setTitle(R.string.shortcutSelectCard);
setSupportActionBar(toolbar);
@@ -47,21 +48,26 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo
finish();
}
final RecyclerView cardList = binding.list;
GridLayoutManager layoutManager = (GridLayoutManager) cardList.getLayoutManager();
if (layoutManager != null) {
layoutManager.setSpanCount(getResources().getInteger(R.integer.main_view_card_columns));
}
Cursor cardCursor = DBHelper.getLoyaltyCardCursor(mDatabase, DBHelper.LoyaltyCardArchiveFilter.All);
mAdapter = new LoyaltyCardCursorAdapter(this, cardCursor, this, null);
cardList.setAdapter(mAdapter);
binding.list.setAdapter(mAdapter);
}
@Override
protected void onResume() {
super.onResume();
var layoutManager = (GridLayoutManager) binding.list.getLayoutManager();
if (layoutManager != null) {
var settings = new Settings(this);
layoutManager.setSpanCount(settings.getPreferredColumnCount());
}
}
private void onClickAction(int position) {
Cursor selected = DBHelper.getLoyaltyCardCursor(mDatabase, DBHelper.LoyaltyCardArchiveFilter.All);
selected.moveToPosition(position);
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(selected);
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(CardShortcutConfigure.this, selected);
Log.d(TAG, "Creating shortcut for card " + loyaltyCard.store + "," + loyaltyCard.id);

View File

@@ -42,10 +42,10 @@ public class CardsOnPowerScreenService extends ControlsProviderService {
Cursor loyaltyCardCursor = DBHelper.getLoyaltyCardCursor(mDatabase, DBHelper.LoyaltyCardArchiveFilter.Unarchived);
return subscriber -> {
while (loyaltyCardCursor.moveToNext()) {
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(loyaltyCardCursor);
LoyaltyCard card = LoyaltyCard.fromCursor(this, loyaltyCardCursor);
Intent openIntent = new Intent(this, LoyaltyCardViewActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("id", card.id);
.putExtra(LoyaltyCardViewActivity.BUNDLE_ID, card.id);
PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), card.id, openIntent, PendingIntent.FLAG_IMMUTABLE);
subscriber.onNext(
new Control.StatelessBuilder(PREFIX + card.id, pendingIntent)
@@ -69,11 +69,11 @@ public class CardsOnPowerScreenService extends ControlsProviderService {
for (String controlId : controlIds) {
Control control;
Integer cardId = this.controlIdToCardId(controlId);
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, cardId);
LoyaltyCard card = DBHelper.getLoyaltyCard(this, mDatabase, cardId);
if (card != null) {
Intent openIntent = new Intent(this, LoyaltyCardViewActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("id", card.id);
.putExtra(LoyaltyCardViewActivity.BUNDLE_ID, card.id);
PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), card.id, openIntent, PendingIntent.FLAG_IMMUTABLE);
control = new Control.StatefulBuilder(controlId, pendingIntent)
.setTitle(card.store)
@@ -99,7 +99,7 @@ public class CardsOnPowerScreenService extends ControlsProviderService {
}
private Bitmap getIcon(Context context, LoyaltyCard loyaltyCard) {
Bitmap cardIcon = Utils.retrieveCardImage(context, loyaltyCard.id, ImageLocationType.icon);
Bitmap cardIcon = loyaltyCard.getImageThumbnail(context);
if (cardIcon != null) {
return cardIcon;
@@ -129,7 +129,7 @@ public class CardsOnPowerScreenService extends ControlsProviderService {
consumer.accept(ControlAction.RESPONSE_OK);
Intent openIntent = new Intent(this, LoyaltyCardViewActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("id", controlIdToCardId(controlId));
.putExtra(LoyaltyCardViewActivity.BUNDLE_ID, controlIdToCardId(controlId));
startActivity(openIntent);
closePowerScreenOnAndroid11();

View File

@@ -7,6 +7,7 @@ import android.os.Bundle;
import android.view.View;
import android.view.Window;
import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
@@ -24,6 +25,7 @@ public class CatimaAppCompatActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
EdgeToEdge.enable(this);
super.onCreate(savedInstanceState);
Utils.patchColors(this);
}

View File

@@ -1,5 +1,7 @@
package protect.card_locker;
import androidx.annotation.NonNull;
import com.google.zxing.BarcodeFormat;
import java.util.Arrays;
@@ -45,15 +47,15 @@ public class CatimaBarcode {
mBarcodeFormat = barcodeFormat;
}
public static CatimaBarcode fromBarcode(BarcodeFormat barcodeFormat) {
public static CatimaBarcode fromBarcode(@NonNull BarcodeFormat barcodeFormat) {
return new CatimaBarcode(barcodeFormat);
}
public static CatimaBarcode fromName(String name) {
public static CatimaBarcode fromName(@NonNull String name) {
return new CatimaBarcode(BarcodeFormat.valueOf(name));
}
public static CatimaBarcode fromPrettyName(String prettyName) {
public static CatimaBarcode fromPrettyName(@NonNull String prettyName) {
try {
return new CatimaBarcode(barcodeFormats.get(barcodePrettyNames.indexOf(prettyName)));
} catch (IndexOutOfBoundsException e) {

View File

@@ -70,6 +70,7 @@ public class DBHelper extends SQLiteOpenHelper {
public enum LoyaltyCardOrder {
Alpha,
LastUsed,
ValidFrom,
Expiry
}
@@ -332,10 +333,10 @@ public class DBHelper extends SQLiteOpenHelper {
Set<String> files = new HashSet<>();
Cursor cardCursor = getLoyaltyCardCursor(database);
while (cardCursor.moveToNext()) {
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor);
LoyaltyCard card = LoyaltyCard.fromCursor(context, cardCursor);
for (ImageLocationType imageLocationType : ImageLocationType.values()) {
String name = Utils.getCardImageFileName(card.id, imageLocationType);
if (Utils.retrieveCardImageAsFile(context, name).exists()) {
if (card.getImageForImageLocationType(context, imageLocationType) != null) {
files.add(name);
}
}
@@ -535,14 +536,14 @@ public class DBHelper extends SQLiteOpenHelper {
return (rowsUpdated == 1);
}
public static LoyaltyCard getLoyaltyCard(SQLiteDatabase database, final int id) {
public static LoyaltyCard getLoyaltyCard(Context context, SQLiteDatabase database, final int id) {
Cursor data = database.query(LoyaltyCardDbIds.TABLE, null, whereAttrs(LoyaltyCardDbIds.ID), withArgs(id), null, null, null);
LoyaltyCard card = null;
if (data.getCount() == 1) {
data.moveToFirst();
card = LoyaltyCard.toLoyaltyCard(data);
card = LoyaltyCard.fromCursor(context, data);
}
data.close();
@@ -916,6 +917,10 @@ public class DBHelper extends SQLiteOpenHelper {
return LoyaltyCardDbIds.LAST_USED;
}
if (order == LoyaltyCardOrder.ValidFrom) {
return LoyaltyCardDbIds.VALID_FROM;
}
if (order == LoyaltyCardOrder.Expiry) {
return LoyaltyCardDbIds.EXPIRY;
}

View File

@@ -9,6 +9,7 @@ import android.text.InputType;
import android.util.Log;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
@@ -59,6 +60,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity {
binding = ImportExportActivityBinding.inflate(getLayoutInflater());
setTitle(R.string.importExport);
setContentView(binding.getRoot());
Utils.applyWindowInsets(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
enableToolbarBackButton();
@@ -163,6 +165,10 @@ public class ImportExportActivity extends CatimaAppCompatActivity {
// Check that there is an app that data can be imported from
Button importApplication = binding.importOptionApplicationButton;
importApplication.setOnClickListener(v -> chooseImportType(true, null));
// FIXME: The importer/exporter is currently quite broken
// To prevent the screen from turning off during import/export and some devices killing Catima as it's no longer foregrounded, force the screen to stay on here
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
private void openFileForImport(Uri uri, char[] password) {

View File

@@ -6,6 +6,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.widget.Toast;
import java.io.IOException;
import java.io.InputStream;
@@ -90,16 +91,16 @@ public class ImportExportTask implements CompatCallable<ImportExportResult> {
progress = new ProgressDialog(activity);
progress.setTitle(doImport ? R.string.importing : R.string.exporting);
progress.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
ImportExportTask.this.stop();
}
});
progress.setOnCancelListener(dialog -> cancel());
progress.setOnDismissListener(dialog -> cancel());
progress.show();
}
private void cancel() {
ImportExportTask.this.stop();
}
protected ImportExportResult doInBackground(Void... nothing) {
final SQLiteDatabase database = new DBHelper(activity).getWritableDatabase();
ImportExportResult result;

View File

@@ -125,7 +125,29 @@ public class ImportURIHelper {
headerColor = Integer.parseInt(unparsedHeaderColor);
}
return new LoyaltyCard(-1, store, note, validFrom, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, 0, Utils.getUnixTime(), 100, 0);
return new LoyaltyCard(
-1,
store,
note,
validFrom,
expiry,
balance,
balanceType,
cardId,
barcodeId,
barcodeType,
headerColor,
0,
Utils.getUnixTime(),
100,
0,
null,
null,
null,
null,
null,
null
);
} catch (NumberFormatException | UnsupportedEncodingException | ArrayIndexOutOfBoundsException ex) {
throw new InvalidObjectException("Not a valid import URI");
}

View File

@@ -1,8 +1,9 @@
package protect.card_locker;
import android.content.Context;
import android.database.Cursor;
import android.os.Parcel;
import android.os.Parcelable;
import android.graphics.Bitmap;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -10,141 +11,551 @@ import androidx.annotation.Nullable;
import java.math.BigDecimal;
import java.util.Currency;
import java.util.Date;
import java.util.List;
import java.util.Objects;
public class LoyaltyCard implements Parcelable {
public final int id;
public final String store;
public final String note;
public class LoyaltyCard {
public int id;
public String store;
public String note;
@Nullable
public final Date validFrom;
public Date validFrom;
@Nullable
public final Date expiry;
public final BigDecimal balance;
public Date expiry;
public BigDecimal balance;
@Nullable
public final Currency balanceType;
public final String cardId;
public Currency balanceType;
public String cardId;
@Nullable
public final String barcodeId;
public String barcodeId;
@Nullable
public final CatimaBarcode barcodeType;
public CatimaBarcode barcodeType;
@Nullable
public final Integer headerColor;
public final int starStatus;
public final int archiveStatus;
public final long lastUsed;
public Integer headerColor;
public int starStatus;
public long lastUsed;
public int zoomLevel;
public int archiveStatus;
@Nullable
private Bitmap imageThumbnail;
@Nullable
private String imageThumbnailPath;
@Nullable
private Bitmap imageFront;
@Nullable
private String imageFrontPath;
@Nullable
private Bitmap imageBack;
@Nullable
private String imageBackPath;
public static final String BUNDLE_LOYALTY_CARD_ID = "loyaltyCardId";
public static final String BUNDLE_LOYALTY_CARD_STORE = "loyaltyCardStore";
public static final String BUNDLE_LOYALTY_CARD_NOTE = "loyaltyCardNote";
public static final String BUNDLE_LOYALTY_CARD_VALID_FROM = "loyaltyCardValidFrom";
public static final String BUNDLE_LOYALTY_CARD_EXPIRY = "loyaltyCardExpiry";
public static final String BUNDLE_LOYALTY_CARD_BALANCE = "loyaltyCardBalance";
public static final String BUNDLE_LOYALTY_CARD_BALANCE_TYPE = "loyaltyCardBalanceType";
public static final String BUNDLE_LOYALTY_CARD_CARD_ID = "loyaltyCardCardId";
public static final String BUNDLE_LOYALTY_CARD_BARCODE_ID = "loyaltyCardBarcodeId";
public static final String BUNDLE_LOYALTY_CARD_BARCODE_TYPE = "loyaltyCardBarcodeType";
public static final String BUNDLE_LOYALTY_CARD_HEADER_COLOR = "loyaltyCardHeaderColor";
public static final String BUNDLE_LOYALTY_CARD_STAR_STATUS = "loyaltyCardStarStatus";
public static final String BUNDLE_LOYALTY_CARD_LAST_USED = "loyaltyCardLastUsed";
public static final String BUNDLE_LOYALTY_CARD_ZOOM_LEVEL = "loyaltyCardZoomLevel";
public static final String BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS = "loyaltyCardArchiveStatus";
public static final String BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL = "loyaltyCardImageThumbnail";
public static final String BUNDLE_LOYALTY_CARD_IMAGE_FRONT = "loyaltyCardImageFront";
public static final String BUNDLE_LOYALTY_CARD_IMAGE_BACK = "loyaltyCardImageBack";
private static final String TEMP_IMAGE_THUMBNAIL_FILE_NAME = "loyaltyCardTempImageThumbnailFileName";
private static final String TEMP_IMAGE_FRONT_FILE_NAME = "loyaltyCardTempImageFrontFileName";
private static final String TEMP_IMAGE_BACK_FILE_NAME = "loyaltyCardTempImageBackFileName";
/**
* Create a loyalty card object with default values
*/
public LoyaltyCard() {
setId(-1);
setStore("");
setNote("");
setValidFrom(null);
setExpiry(null);
setBalance(new BigDecimal("0"));
setBalanceType(null);
setCardId("");
setBarcodeId(null);
setBarcodeType(null);
setHeaderColor(null);
setStarStatus(0);
setLastUsed(Utils.getUnixTime());
setZoomLevel(100);
setArchiveStatus(0);
setImageThumbnail(null, null);
setImageFront(null, null);
setImageBack(null, null);
}
/**
* Create a new loyalty card
*
* @param id
* @param store
* @param note
* @param validFrom
* @param expiry
* @param balance
* @param balanceType
* @param cardId
* @param barcodeId
* @param barcodeType
* @param headerColor
* @param starStatus
* @param lastUsed
* @param zoomLevel
* @param archiveStatus
*/
public LoyaltyCard(final int id, final String store, final String note, @Nullable final Date validFrom,
@Nullable final Date expiry, final BigDecimal balance, @Nullable final Currency balanceType,
final String cardId, @Nullable final String barcodeId, @Nullable final CatimaBarcode barcodeType,
@Nullable final Integer headerColor, final int starStatus,
final long lastUsed, final int zoomLevel, final int archiveStatus) {
final long lastUsed, final int zoomLevel, final int archiveStatus,
@Nullable Bitmap imageThumbnail, @Nullable String imageThumbnailPath,
@Nullable Bitmap imageFront, @Nullable String imageFrontPath,
@Nullable Bitmap imageBack, @Nullable String imageBackPath) {
setId(id);
setStore(store);
setNote(note);
setValidFrom(validFrom);
setExpiry(expiry);
setBalance(balance);
setBalanceType(balanceType);
setCardId(cardId);
setBarcodeId(barcodeId);
setBarcodeType(barcodeType);
setHeaderColor(headerColor);
setStarStatus(starStatus);
setLastUsed(lastUsed);
setZoomLevel(zoomLevel);
setArchiveStatus(archiveStatus);
setImageThumbnail(imageThumbnail, imageThumbnailPath);
setImageFront(imageFront, imageFrontPath);
setImageBack(imageBack, imageBackPath);
}
@Nullable
public Bitmap getImageThumbnail(Context context) {
if (imageThumbnailPath != null) {
if (imageThumbnailPath.equals(TEMP_IMAGE_THUMBNAIL_FILE_NAME)) {
imageThumbnail = Utils.loadTempImage(context, imageThumbnailPath);
} else {
imageThumbnail = Utils.retrieveCardImage(context, imageThumbnailPath);
}
imageThumbnailPath = null;
}
if (imageThumbnail == null) {
return null;
}
return imageThumbnail.copy(imageThumbnail.getConfig(), imageThumbnail.isMutable());
}
@Nullable
public Bitmap getImageFront(Context context) {
if (imageFrontPath != null) {
if (imageFrontPath.equals(TEMP_IMAGE_FRONT_FILE_NAME)) {
imageFront = Utils.loadTempImage(context, imageFrontPath);
} else {
imageFront = Utils.retrieveCardImage(context, imageFrontPath);
}
imageFrontPath = null;
}
if (imageFront == null) {
return null;
}
return imageFront.copy(imageFront.getConfig(), imageFront.isMutable());
}
@Nullable
public Bitmap getImageBack(Context context) {
if (imageBackPath != null) {
if (imageBackPath.equals(TEMP_IMAGE_BACK_FILE_NAME)) {
imageBack = Utils.loadTempImage(context, imageBackPath);
} else {
imageBack = Utils.retrieveCardImage(context, imageBackPath);
}
imageBackPath = null;
}
if (imageBack == null) {
return null;
}
return imageBack.copy(imageBack.getConfig(), imageBack.isMutable());
}
public void setId(int id) {
this.id = id;
}
public void setStore(@NonNull String store) {
this.store = store;
}
public void setNote(@NonNull String note) {
this.note = note;
}
public void setValidFrom(@Nullable Date validFrom) {
this.validFrom = validFrom;
}
public void setExpiry(@Nullable Date expiry) {
this.expiry = expiry;
}
public void setBalance(@NonNull BigDecimal balance) {
this.balance = balance;
}
public void setBalanceType(@Nullable Currency balanceType) {
this.balanceType = balanceType;
}
public void setCardId(@NonNull String cardId) {
this.cardId = cardId;
}
public void setBarcodeId(@Nullable String barcodeId) {
this.barcodeId = barcodeId;
}
public void setBarcodeType(@Nullable CatimaBarcode barcodeType) {
this.barcodeType = barcodeType;
}
public void setHeaderColor(@Nullable Integer headerColor) {
this.headerColor = headerColor;
}
public void setStarStatus(int starStatus) {
if (starStatus != 0 && starStatus != 1) {
throw new IllegalArgumentException("starStatus must be 0 or 1");
}
this.starStatus = starStatus;
}
public void setLastUsed(long lastUsed) {
this.lastUsed = lastUsed;
}
public void setZoomLevel(int zoomLevel) {
if (zoomLevel < 0 || zoomLevel > 100) {
throw new IllegalArgumentException("zoomLevel must be in range 0-100");
}
this.zoomLevel = zoomLevel;
}
public void setArchiveStatus(int archiveStatus) {
if (archiveStatus != 0 && archiveStatus != 1) {
throw new IllegalArgumentException("archiveStatus must be 0 or 1");
}
this.archiveStatus = archiveStatus;
}
protected LoyaltyCard(Parcel in) {
id = in.readInt();
store = in.readString();
note = in.readString();
long tmpValidFrom = in.readLong();
validFrom = tmpValidFrom != -1 ? new Date(tmpValidFrom) : null;
long tmpExpiry = in.readLong();
expiry = tmpExpiry != -1 ? new Date(tmpExpiry) : null;
balance = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
balanceType = (Currency) in.readValue(Currency.class.getClassLoader());
cardId = in.readString();
barcodeId = in.readString();
String tmpBarcodeType = in.readString();
barcodeType = !tmpBarcodeType.isEmpty() ? CatimaBarcode.fromName(tmpBarcodeType) : null;
int tmpHeaderColor = in.readInt();
headerColor = tmpHeaderColor != -1 ? tmpHeaderColor : null;
starStatus = in.readInt();
lastUsed = in.readLong();
zoomLevel = in.readInt();
archiveStatus = in.readInt();
public void setImageThumbnail(@Nullable Bitmap imageThumbnail, @Nullable String imageThumbnailPath) {
if (imageThumbnail != null && imageThumbnailPath != null) {
throw new IllegalArgumentException("Cannot set both thumbnail and path");
}
this.imageThumbnailPath = imageThumbnailPath;
this.imageThumbnail = imageThumbnail != null ? imageThumbnail.copy(imageThumbnail.getConfig(), imageThumbnail.isMutable()) : null;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(id);
parcel.writeString(store);
parcel.writeString(note);
parcel.writeLong(validFrom != null ? validFrom.getTime() : -1);
parcel.writeLong(expiry != null ? expiry.getTime() : -1);
parcel.writeValue(balance);
parcel.writeValue(balanceType);
parcel.writeString(cardId);
parcel.writeString(barcodeId);
parcel.writeString(barcodeType != null ? barcodeType.name() : "");
parcel.writeInt(headerColor != null ? headerColor : -1);
parcel.writeInt(starStatus);
parcel.writeLong(lastUsed);
parcel.writeInt(zoomLevel);
parcel.writeInt(archiveStatus);
public void setImageFront(@Nullable Bitmap imageFront, @Nullable String imageFrontPath) {
if (imageFront != null && imageFrontPath != null) {
throw new IllegalArgumentException("Cannot set both thumbnail and path");
}
this.imageFrontPath = imageFrontPath;
this.imageFront = imageFront != null ? imageFront.copy(imageFront.getConfig(), imageFront.isMutable()) : null;
}
public static LoyaltyCard toLoyaltyCard(Cursor cursor) {
public void setImageBack(@Nullable Bitmap imageBack, @Nullable String imageBackPath) {
if (imageBack != null && imageBackPath != null) {
throw new IllegalArgumentException("Cannot set both thumbnail and path");
}
this.imageBackPath = imageBackPath;
this.imageBack = imageBack != null ? imageBack.copy(imageBack.getConfig(), imageBack.isMutable()) : null;
}
@Nullable
public Bitmap getImageForImageLocationType(Context context, ImageLocationType imageLocationType) {
if (imageLocationType == ImageLocationType.icon) {
return getImageThumbnail(context);
} else if (imageLocationType == ImageLocationType.front) {
return getImageFront(context);
} else if (imageLocationType == ImageLocationType.back) {
return getImageBack(context);
}
throw new IllegalArgumentException("Unknown image location type");
}
public void updateFromBundle(@NonNull Bundle bundle, boolean requireFull) {
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_ID)) {
setId(bundle.getInt(BUNDLE_LOYALTY_CARD_ID));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_ID);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_STORE)) {
setStore(Objects.requireNonNull(bundle.getString(BUNDLE_LOYALTY_CARD_STORE)));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_STORE);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_NOTE)) {
setNote(Objects.requireNonNull(bundle.getString(BUNDLE_LOYALTY_CARD_NOTE)));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_NOTE);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_VALID_FROM)) {
long tmpValidFrom = bundle.getLong(BUNDLE_LOYALTY_CARD_VALID_FROM);
setValidFrom(tmpValidFrom > 0 ? new Date(tmpValidFrom) : null);
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_VALID_FROM);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_EXPIRY)) {
long tmpExpiry = bundle.getLong(BUNDLE_LOYALTY_CARD_EXPIRY);
setExpiry(tmpExpiry > 0 ? new Date(tmpExpiry) : null);
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_EXPIRY);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_BALANCE)) {
setBalance(new BigDecimal(bundle.getString(BUNDLE_LOYALTY_CARD_BALANCE)));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_BALANCE);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_BALANCE_TYPE)) {
String tmpBalanceType = bundle.getString(BUNDLE_LOYALTY_CARD_BALANCE_TYPE);
setBalanceType(tmpBalanceType != null ? Currency.getInstance(tmpBalanceType) : null);
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_BALANCE_TYPE);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_CARD_ID)) {
setCardId(Objects.requireNonNull(bundle.getString(BUNDLE_LOYALTY_CARD_CARD_ID)));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_CARD_ID);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_BARCODE_ID)) {
setBarcodeId(bundle.getString(BUNDLE_LOYALTY_CARD_BARCODE_ID));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_BARCODE_ID);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_BARCODE_TYPE)) {
String tmpBarcodeType = bundle.getString(BUNDLE_LOYALTY_CARD_BARCODE_TYPE);
setBarcodeType(tmpBarcodeType != null ? CatimaBarcode.fromName(tmpBarcodeType) : null);
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_BARCODE_TYPE);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_HEADER_COLOR)) {
int tmpHeaderColor = bundle.getInt(BUNDLE_LOYALTY_CARD_HEADER_COLOR);
setHeaderColor(tmpHeaderColor != -1 ? tmpHeaderColor : null);
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_HEADER_COLOR);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_STAR_STATUS)) {
setStarStatus(bundle.getInt(BUNDLE_LOYALTY_CARD_STAR_STATUS));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_STAR_STATUS);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_LAST_USED)) {
setLastUsed(bundle.getLong(BUNDLE_LOYALTY_CARD_LAST_USED));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_LAST_USED);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_ZOOM_LEVEL)) {
setZoomLevel(bundle.getInt(BUNDLE_LOYALTY_CARD_ZOOM_LEVEL));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_ZOOM_LEVEL);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS)) {
setArchiveStatus(bundle.getInt(BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL)) {
setImageThumbnail(null, bundle.getString(BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_IMAGE_FRONT)) {
setImageFront(null, bundle.getString(BUNDLE_LOYALTY_CARD_IMAGE_FRONT));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_IMAGE_FRONT);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_IMAGE_BACK)) {
setImageBack(null, bundle.getString(BUNDLE_LOYALTY_CARD_IMAGE_BACK));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_IMAGE_BACK);
}
}
public Bundle toBundle(Context context, List<String> exportLimit) {
boolean exportIsLimited = !exportLimit.isEmpty();
Bundle bundle = new Bundle();
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_ID)) {
bundle.putInt(BUNDLE_LOYALTY_CARD_ID, id);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_STORE)) {
bundle.putString(BUNDLE_LOYALTY_CARD_STORE, store);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_NOTE)) {
bundle.putString(BUNDLE_LOYALTY_CARD_NOTE, note);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_VALID_FROM)) {
bundle.putLong(BUNDLE_LOYALTY_CARD_VALID_FROM, validFrom != null ? validFrom.getTime() : -1);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_EXPIRY)) {
bundle.putLong(BUNDLE_LOYALTY_CARD_EXPIRY, expiry != null ? expiry.getTime() : -1);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_BALANCE)) {
bundle.putString(BUNDLE_LOYALTY_CARD_BALANCE, balance.toString());
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_BALANCE_TYPE)) {
bundle.putString(BUNDLE_LOYALTY_CARD_BALANCE_TYPE, balanceType != null ? balanceType.toString() : null);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_CARD_ID)) {
bundle.putString(BUNDLE_LOYALTY_CARD_CARD_ID, cardId);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_BARCODE_ID)) {
bundle.putString(BUNDLE_LOYALTY_CARD_BARCODE_ID, barcodeId);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_BARCODE_TYPE)) {
bundle.putString(BUNDLE_LOYALTY_CARD_BARCODE_TYPE, barcodeType != null ? barcodeType.name() : null);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_HEADER_COLOR)) {
bundle.putInt(BUNDLE_LOYALTY_CARD_HEADER_COLOR, headerColor != null ? headerColor : -1);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_STAR_STATUS)) {
bundle.putInt(BUNDLE_LOYALTY_CARD_STAR_STATUS, starStatus);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_LAST_USED)) {
bundle.putLong(BUNDLE_LOYALTY_CARD_LAST_USED, lastUsed);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_ZOOM_LEVEL)) {
bundle.putInt(BUNDLE_LOYALTY_CARD_ZOOM_LEVEL, zoomLevel);
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS)) {
bundle.putInt(BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS, archiveStatus);
}
// There is an (undocumented) size limit to bundles of around 2MB(?), when going over it you will experience a random crash
// So, instead of storing the bitmaps directly, we write the bitmap to a temp file and store the path
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL)) {
Bitmap thumbnail = getImageThumbnail(context);
if (thumbnail != null) {
Utils.saveTempImage(context, thumbnail, TEMP_IMAGE_THUMBNAIL_FILE_NAME, Bitmap.CompressFormat.PNG);
bundle.putString(BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL, TEMP_IMAGE_THUMBNAIL_FILE_NAME);
} else {
bundle.putString(BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL, null);
}
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_IMAGE_FRONT)) {
Bitmap front = getImageFront(context);
if (front != null) {
Utils.saveTempImage(context, front, TEMP_IMAGE_FRONT_FILE_NAME, Bitmap.CompressFormat.PNG);
bundle.putString(BUNDLE_LOYALTY_CARD_IMAGE_FRONT, TEMP_IMAGE_FRONT_FILE_NAME);
} else {
bundle.putString(BUNDLE_LOYALTY_CARD_IMAGE_FRONT, null);
}
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_IMAGE_BACK)) {
Bitmap back = getImageBack(context);
if (back != null) {
Utils.saveTempImage(context, back, TEMP_IMAGE_BACK_FILE_NAME, Bitmap.CompressFormat.PNG);
bundle.putString(BUNDLE_LOYALTY_CARD_IMAGE_BACK, TEMP_IMAGE_BACK_FILE_NAME);
} else {
bundle.putString(BUNDLE_LOYALTY_CARD_IMAGE_BACK, null);
}
}
return bundle;
}
public static LoyaltyCard fromCursor(Context context, Cursor cursor) {
// id
int id = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ID));
// store
String store = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STORE));
// note
String note = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.NOTE));
// validFrom
long validFromLong = cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.VALID_FROM));
Date validFrom = validFromLong > 0 ? new Date(validFromLong) : null;
// expiry
long expiryLong = cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.EXPIRY));
Date expiry = expiryLong > 0 ? new Date(expiryLong) : null;
// balance
BigDecimal balance = new BigDecimal(cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BALANCE)));
String cardId = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.CARD_ID));
String barcodeId = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_ID));
int starred = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STAR_STATUS));
long lastUsed = cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.LAST_USED));
int zoomLevel = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ZOOM_LEVEL));
int archived = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ARCHIVE_STATUS));
int barcodeTypeColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE);
// balanceType
int balanceTypeColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BALANCE_TYPE);
Currency balanceType = !cursor.isNull(balanceTypeColumn) ? Currency.getInstance(cursor.getString(balanceTypeColumn)) : null;
// cardId
String cardId = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.CARD_ID));
// barcodeId
int barcodeIdColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_ID);
String barcodeId = !cursor.isNull(barcodeIdColumn) ? cursor.getString(barcodeIdColumn) : null;
// barcodeType
int barcodeTypeColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE);
CatimaBarcode barcodeType = !cursor.isNull(barcodeTypeColumn) ? CatimaBarcode.fromName(cursor.getString(barcodeTypeColumn)) : null;
// headerColor
int headerColorColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.HEADER_COLOR);
Integer headerColor = !cursor.isNull(headerColorColumn) ? cursor.getInt(headerColorColumn) : null;
// starStatus
int starStatus = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STAR_STATUS));
// lastUsed
long lastUsed = cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.LAST_USED));
// zoomLevel
int zoomLevel = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ZOOM_LEVEL));
// archiveStatus
int archiveStatus = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ARCHIVE_STATUS));
CatimaBarcode barcodeType = null;
Currency balanceType = null;
Date validFrom = null;
Date expiry = null;
Integer headerColor = null;
if (cursor.isNull(barcodeTypeColumn) == false) {
barcodeType = CatimaBarcode.fromName(cursor.getString(barcodeTypeColumn));
}
if (cursor.isNull(balanceTypeColumn) == false) {
balanceType = Currency.getInstance(cursor.getString(balanceTypeColumn));
}
if (validFromLong > 0) {
validFrom = new Date(validFromLong);
}
if (expiryLong > 0) {
expiry = new Date(expiryLong);
}
if (cursor.isNull(headerColorColumn) == false) {
headerColor = cursor.getInt(headerColorColumn);
}
return new LoyaltyCard(id, store, note, validFrom, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, starred, lastUsed, zoomLevel, archived);
return new LoyaltyCard(
id,
store,
note,
validFrom,
expiry,
balance,
balanceType,
cardId,
barcodeId,
barcodeType,
headerColor,
starStatus,
lastUsed,
zoomLevel,
archiveStatus,
null,
Utils.getCardImageFileName(id, ImageLocationType.icon),
null,
Utils.getCardImageFileName(id, ImageLocationType.front),
null,
Utils.getCardImageFileName(id, ImageLocationType.back)
);
}
public static boolean isDuplicate(final LoyaltyCard a, final LoyaltyCard b) {
public static boolean isDuplicate(Context context, final LoyaltyCard a, final LoyaltyCard b) {
// Note: Bitmap comparing is slow, be careful when calling this method
// Skip lastUsed & zoomLevel
return a.id == b.id && // non-nullable int
a.store.equals(b.store) && // non-nullable String
@@ -159,12 +570,23 @@ public class LoyaltyCard implements Parcelable {
b.barcodeType == null ? null : b.barcodeType.format()) && // nullable CatimaBarcode with no overridden .equals(), so we need to check .format()
Utils.equals(a.headerColor, b.headerColor) && // nullable Integer
a.starStatus == b.starStatus && // non-nullable int
a.archiveStatus == b.archiveStatus; // non-nullable int
a.archiveStatus == b.archiveStatus && // non-nullable int
nullableBitmapsEqual(a.getImageThumbnail(context), b.getImageThumbnail(context)) && // nullable Bitmap
nullableBitmapsEqual(a.getImageFront(context), b.getImageFront(context)) && // nullable Bitmap
nullableBitmapsEqual(a.getImageBack(context), b.getImageBack(context)); // nullable Bitmap
}
@Override
public int describeContents() {
return 0;
public static boolean nullableBitmapsEqual(@Nullable Bitmap a, @Nullable Bitmap b) {
if (a == null && b == null) {
return true;
}
if (a != null && b != null) {
return a.sameAs(b);
}
// One is null and the other isn't, so it's not equal
return false;
}
@NonNull
@@ -173,7 +595,8 @@ public class LoyaltyCard implements Parcelable {
return String.format(
"LoyaltyCard{%n id=%s,%n store=%s,%n note=%s,%n validFrom=%s,%n expiry=%s,%n"
+ " balance=%s,%n balanceType=%s,%n cardId=%s,%n barcodeId=%s,%n barcodeType=%s,%n"
+ " headerColor=%s,%n starStatus=%s,%n lastUsed=%s,%n zoomLevel=%s,%n archiveStatus=%s%n}",
+ " headerColor=%s,%n starStatus=%s,%n lastUsed=%s,%n zoomLevel=%s,%n archiveStatus=%s%n"
+ " imageThumbnail=%s,%n imageThumbnailPath=%s,%n imageFront=%s,%n imageFrontPath=%s,%n imageBack=%s,%n imageBackPath=%s,%n}",
this.id,
this.store,
this.note,
@@ -188,19 +611,13 @@ public class LoyaltyCard implements Parcelable {
this.starStatus,
this.lastUsed,
this.zoomLevel,
this.archiveStatus
this.archiveStatus,
this.imageThumbnail,
this.imageThumbnailPath,
this.imageFront,
this.imageFrontPath,
this.imageBack,
this.imageBackPath
);
}
public static final Creator<LoyaltyCard> CREATOR = new Creator<LoyaltyCard>() {
@Override
public LoyaltyCard createFromParcel(Parcel in) {
return new LoyaltyCard(in);
}
@Override
public LoyaltyCard[] newArray(int size) {
return new LoyaltyCard[size];
}
};
}

View File

@@ -30,6 +30,7 @@ import java.text.DateFormat;
import java.util.ArrayList;
import protect.card_locker.databinding.LoyaltyCardLayoutBinding;
import protect.card_locker.preferences.Settings;
public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCursorAdapter.LoyaltyCardListItemViewHolder> {
private int mCurrentSelectedIndex = -1;
@@ -79,7 +80,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
public LoyaltyCard getCard(int position) {
mCursor.moveToPosition(position);
return LoyaltyCard.toLoyaltyCard(mCursor);
return LoyaltyCard.fromCursor(mContext, mCursor);
}
public void onBindViewHolder(LoyaltyCardListItemViewHolder inputHolder, Cursor inputCursor) {
@@ -87,8 +88,8 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
boolean showDivider = false;
inputHolder.mDivider.setVisibility(View.GONE);
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(inputCursor);
Bitmap icon = Utils.retrieveCardImage(mContext, loyaltyCard.id, ImageLocationType.icon);
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(mContext, inputCursor);
Bitmap icon = loyaltyCard.getImageThumbnail(mContext);
if (mLoyaltyCardListDisplayOptions.showingNameBelowThumbnail() && icon != null) {
showDivider = true;
@@ -111,21 +112,21 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
}
if (mLoyaltyCardListDisplayOptions.showingValidity() && loyaltyCard.validFrom != null) {
inputHolder.setExtraField(inputHolder.mValidFromField, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.validFrom), Utils.isNotYetValid(loyaltyCard.validFrom) ? Color.RED : null, showDivider);
inputHolder.setExtraField(inputHolder.mValidFromField, DateFormat.getDateInstance(DateFormat.MEDIUM).format(loyaltyCard.validFrom), Utils.isNotYetValid(loyaltyCard.validFrom) ? Color.RED : null, showDivider);
} else {
inputHolder.setExtraField(inputHolder.mValidFromField, null, null, false);
}
if (mLoyaltyCardListDisplayOptions.showingValidity() && loyaltyCard.expiry != null) {
inputHolder.setExtraField(inputHolder.mExpiryField, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.expiry), Utils.hasExpired(loyaltyCard.expiry) ? Color.RED : null, showDivider);
inputHolder.setExtraField(inputHolder.mExpiryField, DateFormat.getDateInstance(DateFormat.MEDIUM).format(loyaltyCard.expiry), Utils.hasExpired(loyaltyCard.expiry) ? Color.RED : null, showDivider);
} else {
inputHolder.setExtraField(inputHolder.mExpiryField, null, null, false);
}
inputHolder.mCardIcon.setContentDescription(loyaltyCard.store);
inputHolder.mIconBackgroundColor = Utils.setIconOrTextWithBackground(mContext, loyaltyCard, icon, inputHolder.mCardIcon, inputHolder.mCardText);
Utils.setIconOrTextWithBackground(mContext, loyaltyCard, icon, inputHolder.mCardIcon, inputHolder.mCardText, new Settings(mContext).getPreferredColumnCount());
inputHolder.toggleCardStateIcon(loyaltyCard.starStatus != 0, loyaltyCard.archiveStatus != 0, itemSelected(inputCursor.getPosition()));
inputHolder.toggleCardStateIcon(loyaltyCard.starStatus != 0, loyaltyCard.archiveStatus != 0);
inputHolder.itemView.setActivated(mSelectedItems.get(inputCursor.getPosition(), false));
applyIconAnimation(inputHolder, inputCursor.getPosition());
@@ -192,7 +193,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
int i;
for (i = 0; i < mSelectedItems.size(); i++) {
mCursor.moveToPosition(mSelectedItems.keyAt(i));
result.add(LoyaltyCard.toLoyaltyCard(mCursor));
result.add(LoyaltyCard.fromCursor(mContext, mCursor));
}
return result;
@@ -211,13 +212,11 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
public class LoyaltyCardListItemViewHolder extends RecyclerView.ViewHolder {
public TextView mCardText, mStoreField, mNoteField, mBalanceField, mValidFromField, mExpiryField;
public ImageView mCardIcon, mStarBackground, mStarBorder, mTickIcon, mArchivedBackground;
public ImageView mCardIcon, mTickIcon;
public MaterialCardView mRow;
public ConstraintLayout mStar, mArchived;
public View mDivider;
private int mIconBackgroundColor;
protected LoyaltyCardListItemViewHolder(LoyaltyCardLayoutBinding loyaltyCardLayoutBinding, CardAdapterListener inputListener) {
super(loyaltyCardLayoutBinding.getRoot());
View inputView = loyaltyCardLayoutBinding.getRoot();
@@ -231,10 +230,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
mCardIcon = loyaltyCardLayoutBinding.thumbnail;
mCardText = loyaltyCardLayoutBinding.thumbnailText;
mStar = loyaltyCardLayoutBinding.star;
mStarBackground = loyaltyCardLayoutBinding.starBackground;
mStarBorder = loyaltyCardLayoutBinding.starBorder;
mArchived = loyaltyCardLayoutBinding.archivedIcon;
mArchivedBackground = loyaltyCardLayoutBinding.archiveBackground;
mTickIcon = loyaltyCardLayoutBinding.selectedThumbnail;
inputView.setOnLongClickListener(view -> {
inputListener.onRowClicked(getAdapterPosition());
@@ -296,31 +292,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
mNoteField.requestLayout();
}
public void toggleCardStateIcon(boolean enableStar, boolean enableArchive, boolean colorByTheme) {
/* the below code does not work in android 5! hence the change of drawable instead
boolean needDarkForeground = Utils.needsDarkForeground(mIconBackgroundColor);
Drawable borderDrawable = mStarBorder.getDrawable().mutate();
Drawable backgroundDrawable = mStarBackground.getDrawable().mutate();
DrawableCompat.setTint(borderDrawable, needsDarkForeground ? Color.BLACK : Color.WHITE);
DrawableCompat.setTint(backgroundDrawable, needsDarkForeground ? Color.BLACK : Color.WHITE);
mStarBorder.setImageDrawable(borderDrawable);
mStarBackground.setImageDrawable(backgroundDrawable);
*/
boolean dark = Utils.needsDarkForeground(mIconBackgroundColor);
if (colorByTheme) {
dark = !mDarkModeEnabled;
}
if (dark) {
mStarBorder.setImageResource(R.drawable.ic_unstarred_white);
mStarBackground.setImageResource(R.drawable.ic_starred_black);
mArchivedBackground.setImageResource(R.drawable.ic_baseline_archive_24_black);
} else {
mStarBorder.setImageResource(R.drawable.ic_unstarred_black);
mStarBackground.setImageResource(R.drawable.ic_starred_white);
mArchivedBackground.setImageResource(R.drawable.ic_baseline_archive_24);
}
public void toggleCardStateIcon(boolean enableStar, boolean enableArchive) {
if (enableStar) {
mStar.setVisibility(View.VISIBLE);
} else{
@@ -332,17 +304,6 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
} else{
mArchived.setVisibility(View.GONE);
}
mStarBorder.invalidate();
mStarBackground.invalidate();
mArchivedBackground.invalidate();
}
}
public int dpToPx(int dp, Context mContext) {
Resources r = mContext.getResources();
int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics());
return px;
}
}

View File

File diff suppressed because it is too large Load Diff

View File

@@ -19,6 +19,7 @@ import android.text.method.DigitsKeyListener;
import android.text.style.ForegroundColorSpan;
import android.text.util.Linkify;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -97,9 +98,35 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
static final String STATE_IMAGEINDEX = "imageIndex";
static final String STATE_FULLSCREEN = "isFullscreen";
static final String BUNDLE_ID = "id";
static final String BUNDLE_CARDLIST = "cardList";
static final String BUNDLE_TRANSITION_RIGHT = "transition_right";
final private TaskHandler mTasks = new TaskHandler();
Runnable barcodeImageGenerationFinishedCallback;
private long initTime = System.currentTimeMillis();
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (settings.useVolumeKeysForNavigation()) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
// Navigate to the previous card
if (initTime < (System.currentTimeMillis() - 1000)) {
prevNextCard(false);
}
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
// Navigate to the next card
if (initTime < (System.currentTimeMillis() - 1000)) {
prevNextCard(true);
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
public void onMainImageTap() {
// If we're in fullscreen, leave fullscreen
if (isFullscreen) {
@@ -181,8 +208,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
private void extractIntentFields(Intent intent) {
final Bundle b = intent.getExtras();
loyaltyCardId = b != null ? b.getInt("id") : 0;
cardList = b != null ? b.getIntegerArrayList("cardList") : null;
loyaltyCardId = b != null ? b.getInt(BUNDLE_ID) : 0;
cardList = b != null ? b.getIntegerArrayList(BUNDLE_CARDLIST) : null;
Log.d(TAG, "View activity: id=" + loyaltyCardId);
}
@@ -208,7 +235,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
return;
}
int transitionRight = incomingIntentExtras.getInt("transition_right", -1);
int transitionRight = incomingIntentExtras.getInt(BUNDLE_TRANSITION_RIGHT, -1);
if (transitionRight == 1) {
// right side transition
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
@@ -221,6 +248,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
super.onCreate(savedInstanceState);
binding = LoyaltyCardViewLayoutBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Utils.applyWindowInsets(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
@@ -302,7 +330,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
binding.bottomAppBarUpdateBalanceButton.setOnClickListener(view -> showBalanceUpdateDialog());
binding.iconContainer.setOnClickListener(view -> {
if (Utils.retrieveCardImage(this, loyaltyCard.id, ImageLocationType.icon) != null) {
if (loyaltyCard.getImageThumbnail(this) != null) {
openImageInGallery(ImageType.ICON);
} else {
Toast.makeText(LoyaltyCardViewActivity.this, R.string.icon_header_click_text, Toast.LENGTH_LONG).show();
@@ -572,8 +600,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
// Restart activity with new card id and index
Intent intent = getIntent();
Bundle b = intent.getExtras();
b.putInt("id", loyaltyCardId);
b.putInt("transition_right", transitionRight ? 1 : 0);
b.putInt(BUNDLE_ID, loyaltyCardId);
b.putInt(BUNDLE_TRANSITION_RIGHT, transitionRight ? 1 : 0);
intent.putExtras(b);
intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
@@ -633,7 +661,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
window.setAttributes(attributes);
}
loyaltyCard = DBHelper.getLoyaltyCard(database, loyaltyCardId);
loyaltyCard = DBHelper.getLoyaltyCard(this, database, loyaltyCardId);
if (loyaltyCard == null) {
Log.w(TAG, "Could not lookup loyalty card " + loyaltyCardId);
Toast.makeText(this, R.string.noCardExistsError, Toast.LENGTH_LONG).show();
@@ -692,8 +720,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
editButtonIcon.setTint(Utils.needsDarkForeground(complementaryColor) ? Color.BLACK : Color.WHITE);
binding.fabEdit.setImageDrawable(editButtonIcon);
Bitmap icon = Utils.retrieveCardImage(this, loyaltyCard.id, ImageLocationType.icon);
Utils.setIconOrTextWithBackground(this, loyaltyCard, icon, binding.iconImage, binding.iconText);
Bitmap icon = loyaltyCard.getImageThumbnail(this);
Utils.setIconOrTextWithBackground(this, loyaltyCard, icon, binding.iconImage, binding.iconText, 1);
// If the background is very bright, we should use dark icons
backgroundNeedsDarkIcons = Utils.needsDarkForeground(backgroundHeaderColor);
@@ -721,12 +749,12 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
imageTypes.add(ImageType.BARCODE);
}
frontImageBitmap = Utils.retrieveCardImage(this, loyaltyCard.id, ImageLocationType.front);
frontImageBitmap = loyaltyCard.getImageFront(this);
if (frontImageBitmap != null) {
imageTypes.add(ImageType.IMAGE_FRONT);
}
backImageBitmap = Utils.retrieveCardImage(this, loyaltyCard.id, ImageLocationType.back);
backImageBitmap = loyaltyCard.getImageBack(this);
if (backImageBitmap != null) {
imageTypes.add(ImageType.IMAGE_BACK);
}

View File

@@ -7,6 +7,8 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.database.CursorIndexOutOfBoundsException;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -21,16 +23,19 @@ import android.widget.Toast;
import androidx.activity.OnBackPressedCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.view.ActionMode;
import androidx.appcompat.widget.SearchView;
import androidx.core.splashscreen.SplashScreen;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -41,6 +46,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import protect.card_locker.databinding.ContentMainBinding;
import protect.card_locker.databinding.MainActivityBinding;
import protect.card_locker.databinding.SortingOptionBinding;
import protect.card_locker.preferences.Settings;
import protect.card_locker.preferences.SettingsActivity;
public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener {
@@ -50,6 +56,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
public static final String RESTART_ACTIVITY_INTENT = "restart_activity_intent";
private static final int MEDIUM_SCALE_FACTOR_DIP = 460;
static final String STATE_SEARCH_QUERY = "SEARCH_QUERY";
private SQLiteDatabase mDatabase;
private LoyaltyCardCursorAdapter mAdapter;
@@ -57,6 +64,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
private SearchView mSearchView;
private int mLoyaltyCardCount = 0;
protected String mFilter = "";
private String currentQuery = "";
private String finalQuery = "";
protected Object mGroup = null;
protected DBHelper.LoyaltyCardOrder mOrder = DBHelper.LoyaltyCardOrder.Alpha;
protected DBHelper.LoyaltyCardOrderDirection mOrderDirection = DBHelper.LoyaltyCardOrderDirection.Ascending;
@@ -66,9 +75,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
private View mNoMatchingCardsText;
private View mNoGroupCardsText;
private TabLayout groupsTabLayout;
private Runnable mUpdateLoyaltyCardListRunnable;
private ActivityResultLauncher<Intent> mBarcodeScannerLauncher;
private ActivityResultLauncher<Intent> mSettingsLauncher;
@@ -196,11 +203,33 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
SplashScreen.installSplashScreen(this);
super.onCreate(inputSavedInstanceState);
// Delete old cache files
// These could be temporary images for the cropper, temporary images in LoyaltyCard toBundle/writeParcel/ etc.
new Thread(() -> {
long twentyFourHoursAgo = System.currentTimeMillis() - (1000 * 60 * 60 * 24);
File[] tempFiles = getCacheDir().listFiles();
if (tempFiles == null) {
Log.e(TAG, "getCacheDir().listFiles() somehow returned null, this should never happen... Skipping cache cleanup...");
return;
}
for (File file : tempFiles) {
if (file.lastModified() < twentyFourHoursAgo) {
if (!file.delete()) {
Log.w(TAG, "Failed to delete cache file " + file.getPath());
}
};
}
}).start();
// We should extract the share intent after we called the super.onCreate as it may need to spawn a dialog window and the app needs to be initialized to not crash
extractIntentFields(getIntent());
binding = MainActivityBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Utils.applyWindowInsets(binding.getRoot());
setSupportActionBar(binding.toolbar);
groupsTabLayout = binding.groups;
contentMainBinding = ContentMainBinding.bind(binding.include.getRoot());
@@ -247,52 +276,15 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
mCardList.setAdapter(mAdapter);
registerForContextMenu(mCardList);
mGroup = null;
updateLoyaltyCardList(true);
/*
* This was added for Huawei, but Huawei is just too much of a fucking pain.
* Just leaving this commented out if needed for the future idk
* https://twitter.com/SylvieLorxu/status/1379437902741012483
*
// Show privacy policy on first run
SharedPreferences privacyPolicyShownPref = getApplicationContext().getSharedPreferences(
getString(R.string.sharedpreference_privacy_policy_shown),
Context.MODE_PRIVATE);
if (privacyPolicyShownPref.getInt(getString(R.string.sharedpreference_privacy_policy_shown), 0) == 0) {
SharedPreferences.Editor privacyPolicyShownPrefEditor = privacyPolicyShownPref.edit();
privacyPolicyShownPrefEditor.putInt(getString(R.string.sharedpreference_privacy_policy_shown), 1);
privacyPolicyShownPrefEditor.apply();
new AlertDialog.Builder(this)
.setTitle(R.string.privacy_policy)
.setMessage(R.string.privacy_policy_popup_text)
.setPositiveButton(R.string.accept, null)
.setNegativeButton(R.string.privacy_policy, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
openPrivacyPolicy();
}
})
.setIcon(android.R.drawable.ic_dialog_info)
.show();
}
*/
mBarcodeScannerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
// Exit early if the user cancelled the scan (pressed back/home)
if (result.getResultCode() != RESULT_OK) {
return;
}
Intent intent = result.getData();
List<BarcodeValues> barcodeValuesList = Utils.parseSetBarcodeActivityResult(Utils.BARCODE_SCAN, result.getResultCode(), intent, this);
Bundle inputBundle = intent.getExtras();
String group = inputBundle != null ? inputBundle.getString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP) : null;
processBarcodeValuesList(barcodeValuesList, group, false);
Intent editIntent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
editIntent.putExtras(result.getData().getExtras());
startActivity(editIntent);
});
mSettingsLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
@@ -328,7 +320,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
if (mSearchView != null && !mSearchView.isIconified()) {
mFilter = mSearchView.getQuery().toString();
}
// Start of active tab logic
updateTabGroups(groupsTabLayout);
@@ -386,6 +377,12 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
mBarcodeScannerLauncher.launch(intent);
});
addButton.bringToFront();
var layoutManager = (GridLayoutManager) mCardList.getLayoutManager();
if (layoutManager != null) {
var settings = new Settings(this);
layoutManager.setSpanCount(settings.getPreferredColumnCount());
}
}
private void displayCardSetupOptions(Menu menu, boolean shouldShow) {
@@ -447,23 +444,21 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
}
}
private void processBarcodeValuesList(List<BarcodeValues> barcodeValuesList, String group, boolean closeAppOnNoBarcode) {
if (barcodeValuesList.isEmpty()) {
throw new IllegalArgumentException("barcodesValues may not be empty");
private void processParseResultList(List<ParseResult> parseResultList, String group, boolean closeAppOnNoBarcode) {
if (parseResultList.isEmpty()) {
throw new IllegalArgumentException("parseResultList may not be empty");
}
Utils.makeUserChooseBarcodeFromList(MainActivity.this, barcodeValuesList, new BarcodeValuesListDisambiguatorCallback() {
Utils.makeUserChooseParseResultFromList(MainActivity.this, parseResultList, new ParseResultListDisambiguatorCallback() {
@Override
public void onUserChoseBarcode(BarcodeValues barcodeValues) {
Intent newIntent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
Bundle newBundle = new Bundle();
newBundle.putString(LoyaltyCardEditActivity.BUNDLE_BARCODETYPE, barcodeValues.format());
newBundle.putString(LoyaltyCardEditActivity.BUNDLE_CARDID, barcodeValues.content());
public void onUserChoseParseResult(ParseResult parseResult) {
Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
Bundle bundle = parseResult.toLoyaltyCardBundle(MainActivity.this);
if (group != null) {
newBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, group);
bundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, group);
}
newIntent.putExtras(newBundle);
startActivity(newIntent);
intent.putExtras(bundle);
startActivity(intent);
}
@Override
@@ -479,28 +474,53 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
String receivedAction = intent.getAction();
String receivedType = intent.getType();
// Check if an image or file was shared to us
if (Intent.ACTION_SEND.equals(receivedAction)) {
List<BarcodeValues> barcodeValuesList;
if (receivedAction == null || receivedType == null) {
return;
}
if (receivedType.equals("text/plain")) {
barcodeValuesList = Collections.singletonList(new BarcodeValues(null, intent.getStringExtra(Intent.EXTRA_TEXT)));
} else if (receivedType.startsWith("image/")) {
barcodeValuesList = Utils.retrieveBarcodesFromImage(this, intent.getParcelableExtra(Intent.EXTRA_STREAM));
List<ParseResult> parseResultList;
// Check for shared text
if (receivedAction.equals(Intent.ACTION_SEND) && receivedType.equals("text/plain")) {
LoyaltyCard loyaltyCard = new LoyaltyCard();
loyaltyCard.setCardId(intent.getStringExtra(Intent.EXTRA_TEXT));
parseResultList = Collections.singletonList(new ParseResult(ParseResultType.BARCODE_ONLY, loyaltyCard));
} else {
// Parse whatever file was sent, regardless of opening or sharing
Uri data;
if (receivedAction.equals(Intent.ACTION_VIEW)) {
data = intent.getData();
} else if (receivedAction.equals(Intent.ACTION_SEND)) {
data = intent.getParcelableExtra(Intent.EXTRA_STREAM);
} else {
Log.e(TAG, "Wrong action type to parse intent");
return;
}
if (receivedType.startsWith("image/")) {
parseResultList = Utils.retrieveBarcodesFromImage(this, data);
} else if (receivedType.equals("application/pdf")) {
barcodeValuesList = Utils.retrieveBarcodesFromPdf(this, intent.getParcelableExtra(Intent.EXTRA_STREAM));
parseResultList = Utils.retrieveBarcodesFromPdf(this, data);
} else if (Arrays.asList("application/vnd.apple.pkpass", "application/vnd-com.apple.pkpass").contains(receivedType)) {
parseResultList = Utils.retrieveBarcodesFromPkPass(this, data);
} else if (receivedType.equals("application/vnd.espass-espass")) {
// FIXME: espass is not pkpass
// However, several users stated in https://github.com/CatimaLoyalty/Android/issues/2197 that the formats are extremely similar to the point they could rename an .espass file to .pkpass and have it imported
// So it makes sense to "unofficially" treat it as a PKPASS for now, even though not completely correct
parseResultList = Utils.retrieveBarcodesFromPkPass(this, data);
} else {
Log.e(TAG, "Wrong mime-type");
return;
}
if (barcodeValuesList.isEmpty()) {
finish();
return;
}
processBarcodeValuesList(barcodeValuesList, null, true);
}
// Give up if we should parse but there is nothing to parse
if (parseResultList == null || parseResultList.isEmpty()) {
finish();
return;
}
processParseResultList(parseResultList, null, true);
}
private void extractIntentFields(Intent intent) {
@@ -534,6 +554,24 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
}
@Override
// Saving currentQuery to finalQuery for user, this will be used to restore search history, happens when user clicks a card from list
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
finalQuery = currentQuery;
// Putting the query also into outState for later use in onRestoreInstanceState when rotating screen
if (mSearchView != null) {
outState.putString(STATE_SEARCH_QUERY, finalQuery);
}
}
@Override
// Restoring instance state when rotation of screen happens with the goal to restore search query for user
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
finalQuery = savedInstanceState.getString(STATE_SEARCH_QUERY, "");
}
@Override
public boolean onCreateOptionsMenu(Menu inputMenu) {
getMenuInflater().inflate(R.menu.main_menu, inputMenu);
@@ -542,15 +580,42 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
if (searchManager != null) {
mSearchView = (SearchView) inputMenu.findItem(R.id.action_search).getActionView();
MenuItem searchMenuItem = inputMenu.findItem(R.id.action_search);
mSearchView = (SearchView) searchMenuItem.getActionView();
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setSubmitButtonEnabled(false);
mSearchView.setOnCloseListener(() -> {
invalidateOptionsMenu();
return false;
});
/*
* On Android 13 and later, pressing Back while the search view is open hides the keyboard
* and collapses the search view at the same time.
* This brings back the old behavior on Android 12 and lower: pressing Back once
* hides the keyboard, press again while keyboard is hidden to collapse the search view.
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
searchMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(@NonNull MenuItem item) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(@NonNull MenuItem item) {
if (mSearchView.hasFocus()) {
mSearchView.clearFocus();
return false;
}
currentQuery = "";
mFilter = "";
updateLoyaltyCardList(false);
return true;
}
});
}
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
@@ -560,7 +625,21 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
@Override
public boolean onQueryTextChange(String newText) {
mFilter = newText;
// New logic to ensure search history after coming back from picked card - user will see the last search query
if (newText.isEmpty()) {
if(!finalQuery.isEmpty()){
// Setting the query text for user after coming back from picked card from finalQuery
mSearchView.setQuery(finalQuery, false);
}
else if(!currentQuery.isEmpty()){
// Else if is needed in case user deletes search - expected behaviour is to show all cards
currentQuery = "";
mSearchView.setQuery(currentQuery, false);
}
} else {
// Setting search query each time user changes the text in search to temporary variable to be used later in finalQuery String which will be used to restore search history
currentQuery = newText;
}
TabLayout.Tab currentTab = groupsTabLayout.getTabAt(groupsTabLayout.getSelectedTabPosition());
mGroup = currentTab != null ? currentTab.getTag() : null;
@@ -569,6 +648,14 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
return true;
}
});
// Check if we came from a picked card back to search, in that case we want to show the search view with previous search query
if(!finalQuery.isEmpty()){
// Expand the search view to show the query
searchMenuItem.expandActionView();
// Setting the query text to empty String due to behaviour of onQueryTextChange after coming back from picked card - onQueryTextChange is called automatically without users interaction
finalQuery = "";
mSearchView.setQuery(currentQuery, false);
}
}
return super.onCreateOptionsMenu(inputMenu);
@@ -785,14 +872,14 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
Intent intent = new Intent(this, LoyaltyCardViewActivity.class);
intent.setAction("");
final Bundle b = new Bundle();
b.putInt("id", loyaltyCard.id);
b.putInt(LoyaltyCardViewActivity.BUNDLE_ID, loyaltyCard.id);
ArrayList<Integer> cardList = new ArrayList<>();
for (int i = 0; i < mAdapter.getItemCount(); i++) {
cardList.add(mAdapter.getCard(i).id);
}
b.putIntegerArrayList("cardList", cardList);
b.putIntegerArrayList(LoyaltyCardViewActivity.BUNDLE_CARDLIST, cardList);
intent.putExtras(b);
startActivity(intent);

View File

@@ -48,6 +48,7 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana
super.onCreate(inputSavedInstanceState);
binding = ActivityManageGroupBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Utils.applyWindowInsets(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);

View File

@@ -33,7 +33,7 @@ public class ManageGroupCursorAdapter extends LoyaltyCardCursorAdapter {
@Override
public void onBindViewHolder(LoyaltyCardListItemViewHolder inputHolder, Cursor inputCursor) {
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(inputCursor);
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(mContext, inputCursor);
Boolean overlayValue = mInGroupOverlay.get(loyaltyCard.id);
if ((overlayValue != null ? overlayValue : isLoyaltyCardInGroup(loyaltyCard.id))) {
mAnimationItemsIndex.put(inputCursor.getPosition(), true);

View File

@@ -42,6 +42,7 @@ public class ManageGroupsActivity extends CatimaAppCompatActivity implements Gro
binding = ManageGroupsActivityBinding.inflate(getLayoutInflater());
setTitle(R.string.groups);
setContentView(binding.getRoot());
Utils.applyWindowInsets(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
enableToolbarBackButton();

View File

@@ -0,0 +1,31 @@
package protect.card_locker
import android.content.Context
import android.os.Bundle
class ParseResult(
val parseResultType: ParseResultType,
val loyaltyCard: LoyaltyCard) {
var note: String? = null
fun toLoyaltyCardBundle(context: Context): Bundle {
when (parseResultType) {
ParseResultType.FULL -> return loyaltyCard.toBundle(context, listOf())
ParseResultType.BARCODE_ONLY -> {
val defaultLoyaltyCard = LoyaltyCard()
defaultLoyaltyCard.setBarcodeId(null)
defaultLoyaltyCard.setBarcodeType(loyaltyCard.barcodeType)
defaultLoyaltyCard.setCardId(loyaltyCard.cardId)
return defaultLoyaltyCard.toBundle(
context,
listOf(
LoyaltyCard.BUNDLE_LOYALTY_CARD_BARCODE_ID,
LoyaltyCard.BUNDLE_LOYALTY_CARD_BARCODE_TYPE,
LoyaltyCard.BUNDLE_LOYALTY_CARD_CARD_ID
)
)
}
}
}
}

View File

@@ -0,0 +1,6 @@
package protect.card_locker;
public interface ParseResultListDisambiguatorCallback {
void onUserChoseParseResult(ParseResult parseResult);
void onUserDismissedSelector();
}

View File

@@ -0,0 +1,6 @@
package protect.card_locker
enum class ParseResultType {
FULL,
BARCODE_ONLY
}

View File

@@ -0,0 +1,429 @@
package protect.card_locker
import android.content.Context
import android.graphics.Bitmap
import android.graphics.Color
import android.net.Uri
import android.util.ArrayMap
import android.util.Log
import com.google.zxing.BarcodeFormat
import net.lingala.zip4j.io.inputstream.ZipInputStream
import net.lingala.zip4j.model.LocalFileHeader
import org.json.JSONException
import org.json.JSONObject
import java.io.FileNotFoundException
import java.io.IOException
import java.math.BigDecimal
import java.text.DateFormat
import java.text.ParseException
import java.time.ZonedDateTime
import java.time.format.DateTimeParseException
import java.util.Currency
import java.util.Date
class PkpassParser(context: Context, uri: Uri?) {
private var mContext = context
private var translations: ArrayMap<String, Map<String, String>> = ArrayMap()
private var passContent: JSONObject? = null
private var store: String? = null
private var note: String? = null
private var validFrom: Date? = null
private var expiry: Date? = null
private val balance: BigDecimal = BigDecimal(0)
private val balanceType: Currency? = null
private var cardId: String? = null
private var barcodeId: String? = null
private var barcodeType: CatimaBarcode? = null
private var headerColor: Int? = null
private val starStatus = 0
private val lastUsed: Long = 0
private val zoomLevel = DBHelper.DEFAULT_ZOOM_LEVEL
private var archiveStatus = 0
var image: Bitmap? = null
private set
private var logoSize = 0
init {
if (passContent != null) {
throw IllegalStateException("Pkpass instance already initialized!")
}
mContext = context
Log.i(TAG, "Received Pkpass file")
if (uri == null) {
Log.e(TAG, "Uri did not contain any data")
throw IOException(context.getString(R.string.errorReadingFile))
}
try {
mContext.contentResolver.openInputStream(uri).use { inputStream ->
ZipInputStream(inputStream).use { zipInputStream ->
var localFileHeader: LocalFileHeader
while ((zipInputStream.nextEntry.also { localFileHeader = it }) != null) {
// Ignore directories
if (localFileHeader.isDirectory) continue
// We assume there are three options, as per spec:
// language.lproj/pass.strings
// file.extension
// More directories are ignored
val filenameParts = localFileHeader.fileName.split('/')
if (filenameParts.size > 2) {
continue
} else if (filenameParts.size == 2) {
// Doesn't seem like a language directory, ignore
if (!filenameParts[0].endsWith(".lproj")) continue
val locale = filenameParts[0].removeSuffix(".lproj")
translations[locale] = parseLanguageStrings(ZipUtils.read(zipInputStream))
}
// Not a language, parse as normal files
when (localFileHeader.fileName) {
"logo.png" -> loadImageIfBiggerSize(1, zipInputStream)
"logo@2x.png" -> loadImageIfBiggerSize(2, zipInputStream)
"logo@3x.png" -> loadImageIfBiggerSize(3, zipInputStream)
"pass.json" -> passContent = ZipUtils.readJSON(zipInputStream) // Parse this last, so we're sure we have all language info
}
}
checkNotNull(passContent) { "File lacks pass.json" }
}
}
} catch (e: FileNotFoundException) {
throw IOException(mContext.getString(R.string.errorReadingFile))
} catch (e: Exception) {
throw e
}
}
fun listLocales(): List<String> {
return translations.keys.toList()
}
fun toLoyaltyCard(locale: String?): LoyaltyCard {
parsePassJSON(checkNotNull(passContent) { "Pkpass instance not yet initialized!" }, locale)
return LoyaltyCard(
-1,
store,
note,
validFrom,
expiry,
balance,
balanceType,
cardId,
barcodeId,
barcodeType,
headerColor,
starStatus,
lastUsed,
zoomLevel,
archiveStatus,
image,
null,
null,
null,
null,
null
)
}
private fun getTranslation(string: String, locale: String?): String {
if (locale == null) {
return string
}
val localeStrings = translations[locale]
return localeStrings?.get(string) ?: string
}
private fun loadImageIfBiggerSize(fileLogoSize: Int, zipInputStream: ZipInputStream) {
if (logoSize < fileLogoSize) {
image = ZipUtils.readImage(zipInputStream)
logoSize = fileLogoSize
}
}
private fun parseColor(color: String): Int? {
// First, try formats supported by Android natively
try {
return Color.parseColor(color)
} catch (ignored: IllegalArgumentException) {}
// If that didn't work, try parsing it as a rbg(0,0,255) value
val red: Int;
val green: Int;
val blue: Int;
// Parse rgb(0,0,0) string
val rgbInfo = Regex("""^rgb\(\s*(?<red>\d+)\s*,\s*(?<green>\d+)\s*,\s*(?<blue>\d+)\s*\)$""").find(color)
if (rgbInfo == null) {
return null
}
// Convert to integers
try {
red = rgbInfo.groups[1]!!.value.toInt()
green = rgbInfo.groups[2]!!.value.toInt()
blue = rgbInfo.groups[3]!!.value.toInt()
} catch (e: NumberFormatException) {
return null
}
// Ensure everything is in a valid range as Color.rgb does not do range checks
if (red < 0 || red > 255) return null
if (green < 0 || green > 255) return null
if (blue < 0 || blue > 255) return null
return Color.rgb(red, green, blue)
}
private fun parseDateTime(dateTime: String): Date {
return Date.from(ZonedDateTime.parse(dateTime).toInstant())
}
private fun parseLanguageStrings(data: String): Map<String, String> {
val output = ArrayMap<String, String>()
// Translations look like this:
// "key_name" = "Translated value";
//
// However, "Translated value" may be multiple lines and may contain " (however, it'll be escaped)
var translationLine = StringBuilder()
for (line in data.lines()) {
translationLine.append(line)
// Make sure we don't have a false ending (this is the escaped double quote: \";)
if (!line.endsWith("\\\";") and line.endsWith("\";")) {
// We reached a translation ending, time to parse it
// 1. Split into key and value
// 2. Remove cruft of each
// 3. Clean up escape sequences
val keyValue = translationLine.toString().split("=", ignoreCase = false, limit = 2)
val key = keyValue[0].trim().removePrefix("\"").removeSuffix("\"")
val value = keyValue[1].trim().removePrefix("\"").removeSuffix("\";").replace("\\", "")
output[key] = value
translationLine = StringBuilder()
} else {
translationLine.append("\n")
}
}
return output
}
private fun parsePassJSON(jsonObject: JSONObject, locale: String?) {
if (jsonObject.getInt("formatVersion") != 1) {
throw IllegalArgumentException(mContext.getString(R.string.unsupportedFile))
}
// Prefer logoText for store, it's generally shorter
try {
store = jsonObject.getString("logoText")
} catch (ignored: JSONException) {}
if (store.isNullOrEmpty()) {
store = jsonObject.getString("organizationName")
}
val noteText = StringBuilder()
noteText.append(getTranslation(jsonObject.getString("description"), locale))
try {
validFrom = parseDateTime(jsonObject.getString("relevantDate"))
} catch (ignored: JSONException) {}
try {
expiry = parseDateTime(jsonObject.getString("expirationDate"))
} catch (ignored: JSONException) {}
try {
headerColor = parseColor(jsonObject.getString("backgroundColor"))
} catch (ignored: JSONException) {}
var pkPassHasBarcodes = false
var validBarcodeFound = false
// Create a list of possible barcodes
val barcodes = ArrayList<JSONObject>()
// Append the non-deprecated entries
try {
val foundInBarcodesField = jsonObject.getJSONArray("barcodes")
for (i in 0 until foundInBarcodesField.length()) {
barcodes.add(foundInBarcodesField.getJSONObject(i))
}
} catch (ignored: JSONException) {}
// Append the deprecated entry if it exists
try {
barcodes.add(jsonObject.getJSONObject("barcode"))
} catch (ignored: JSONException) {}
for (barcode in barcodes) {
pkPassHasBarcodes = true
try {
parsePassJSONBarcodeField(barcode)
validBarcodeFound = true
break
} catch (ignored: IllegalArgumentException) {}
}
if (pkPassHasBarcodes && !validBarcodeFound) {
throw FormatException(mContext.getString(R.string.errorReadingFile))
}
// An used card being "archived" probably is the most sensible way to map "voided"
archiveStatus = try {
if (jsonObject.getBoolean("voided")) 1 else 0
} catch (ignored: JSONException) {
0
}
// Append type-specific info to the pass
// Find the relevant pass type and parse it
for (passType in listOf("boardingPass", "coupon", "eventTicket", "generic")) {
try {
var extraText = parsePassJSONPassFields(
jsonObject.getJSONObject(passType),
locale
)
noteText.append("\n\n")
noteText.append(extraText)
break
} catch (ignored: JSONException) {}
}
note = noteText.toString()
}
/* Return success or failure */
private fun parsePassJSONBarcodeField(barcodeInfo: JSONObject) {
val format = barcodeInfo.getString("format")
// We only need to check these 4 formats as no other options are valid in the PkPass spec
barcodeType = when(format) {
"PKBarcodeFormatQR" -> CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE)
"PKBarcodeFormatPDF417" -> CatimaBarcode.fromBarcode(BarcodeFormat.PDF_417)
"PKBarcodeFormatAztec" -> CatimaBarcode.fromBarcode(BarcodeFormat.AZTEC)
"PKBarcodeFormatCode128" -> CatimaBarcode.fromBarcode(BarcodeFormat.CODE_128)
else -> throw IllegalArgumentException("No valid barcode type")
}
// FIXME: We probably need to do something with the messageEncoding field
try {
cardId = barcodeInfo.getString("altText")
barcodeId = barcodeInfo.getString("message")
} catch (ignored: JSONException) {
cardId = barcodeInfo.getString("message")
barcodeId = null
}
// Don't set barcodeId if it's the same as cardId
if (cardId == barcodeId) {
barcodeId = null
}
}
private fun parsePassJSONPassFields(fieldsParent: JSONObject, locale: String?): String {
// These fields contain a lot of info on where we're supposed to display them, but Catima doesn't really have anything for that
// So for now, throw them all into the description field in a logical order
val noteContents: MutableList<String> = ArrayList()
// Collect all the groups of fields that exist
for (fieldType in listOf("headerFields", "primaryFields", "secondaryFields", "auxiliaryFields", "backFields")) {
val content = StringBuilder()
try {
val fieldArray = fieldsParent.getJSONArray(fieldType)
for (i in 0 until fieldArray.length()) {
val entry = fieldArray.getJSONObject(i)
content.append(parsePassJSONPassField(entry, locale))
// If this is not the last part, add spacing on the end
if (i < (fieldArray.length() - 1)) {
content.append("\n")
}
}
} catch (ignore: JSONException) {
} catch (ignore: ParseException) {
}
if (content.isNotEmpty()) {
noteContents.add(content.toString())
}
}
// Merge all field groups together, one paragraph for field group
val output = StringBuilder()
for (i in 0 until noteContents.size) {
output.append(noteContents[i])
// If this is not the last part, add newlines to separate
if (i < (noteContents.size - 1)) {
output.append("\n\n")
}
}
return output.toString()
}
private fun parsePassJSONPassField(field: JSONObject, locale: String?): String {
// Value may be a localizable string, a date or a number. So let's try to parse it as a date first
var value = getTranslation(field.getString("value"), locale)
try {
value = DateFormat.getDateTimeInstance().format(parseDateTime(value))
} catch (ignored: DateTimeParseException) {
// It's fine if it's not a date
}
// FIXME: Use the Android thing for formatted strings here
if (field.has("currencyCode")) {
val valueCurrency = Currency.getInstance(field.getString("currencyCode"))
value = Utils.formatBalance(
mContext,
Utils.parseBalance(value, valueCurrency),
valueCurrency
)
} else if (field.has("numberStyle")) {
if (field.getString("numberStyle") == "PKNumberStylePercent") {
// FIXME: Android formatting string
value = "${value}%"
}
}
val label = getTranslation(field.getString("label"), locale)
if (label.isNotEmpty()) {
return "$label: $value"
}
return value
}
companion object {
private const val TAG = "Catima"
}
}

View File

@@ -24,6 +24,8 @@ import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
@@ -42,6 +44,8 @@ import com.journeyapps.barcodescanner.BarcodeResult;
import com.journeyapps.barcodescanner.CaptureManager;
import com.journeyapps.barcodescanner.DecoratedBarcodeView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import protect.card_locker.databinding.CustomBarcodeScannerBinding;
@@ -63,6 +67,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
private static final int PERMISSION_SCAN_ADD_FROM_IMAGE = 100;
private static final int PERMISSION_SCAN_ADD_FROM_PDF = 101;
private static final int PERMISSION_SCAN_ADD_FROM_PKPASS = 102;
private CaptureManager capture;
private DecoratedBarcodeView barcodeScannerView;
@@ -75,6 +80,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
// can't use the pre-made contract because that launches the file manager for image type instead of gallery
private ActivityResultLauncher<Intent> photoPickerLauncher;
private ActivityResultLauncher<Intent> pdfPickerLauncher;
private ActivityResultLauncher<Intent> pkpassPickerLauncher;
static final String STATE_SCANNER_ACTIVE = "scannerActive";
private boolean mScannerActive = true;
@@ -82,7 +88,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
private void extractIntentFields(Intent intent) {
final Bundle b = intent.getExtras();
cardId = b != null ? b.getString(LoyaltyCardEditActivity.BUNDLE_CARDID) : null;
cardId = b != null ? b.getString(LoyaltyCard.BUNDLE_LOYALTY_CARD_CARD_ID) : null;
addGroup = b != null ? b.getString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP) : null;
Log.d(TAG, "Scan activity: id=" + cardId);
}
@@ -94,6 +100,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
customBarcodeScannerBinding = CustomBarcodeScannerBinding.bind(binding.zxingBarcodeScanner);
setTitle(R.string.scanCardBarcode);
setContentView(binding.getRoot());
Utils.applyWindowInsets(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
enableToolbarBackButton();
@@ -103,18 +110,46 @@ public class ScanActivity extends CatimaAppCompatActivity {
manualAddLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> handleActivityResult(Utils.SELECT_BARCODE_REQUEST, result.getResultCode(), result.getData()));
photoPickerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> handleActivityResult(Utils.BARCODE_IMPORT_FROM_IMAGE_FILE, result.getResultCode(), result.getData()));
pdfPickerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> handleActivityResult(Utils.BARCODE_IMPORT_FROM_PDF_FILE, result.getResultCode(), result.getData()));
pkpassPickerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> handleActivityResult(Utils.BARCODE_IMPORT_FROM_PKPASS_FILE, result.getResultCode(), result.getData()));
customBarcodeScannerBinding.fabOtherOptions.setOnClickListener(view -> {
setScannerActive(false);
ArrayList<HashMap<String, Object>> list = new ArrayList<>();
String[] texts = new String[]{
getString(R.string.addWithoutBarcode),
getString(R.string.addManually),
getString(R.string.addFromImage),
getString(R.string.addFromPdfFile),
getString(R.string.addFromPkpass)
};
Object[] icons = new Object[]{
R.drawable.baseline_block_24,
R.drawable.ic_edit,
R.drawable.baseline_image_24,
R.drawable.baseline_picture_as_pdf_24,
R.drawable.local_activity_24px
};
String[] columns = new String[]{"text", "icon"};
for (int i = 0; i < texts.length; i++) {
HashMap<String, Object> map = new HashMap<>();
map.put(columns[0], texts[i]);
map.put(columns[1], icons[i]);
list.add(map);
}
ListAdapter adapter = new SimpleAdapter(
ScanActivity.this,
list,
R.layout.alertdialog_row_with_icon,
columns,
new int[]{R.id.textView, R.id.imageView}
);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(ScanActivity.this);
builder.setTitle(getString(R.string.add_a_card_in_a_different_way));
builder.setItems(
new CharSequence[]{
getString(R.string.addWithoutBarcode),
getString(R.string.addManually),
getString(R.string.addFromImage),
getString(R.string.addFromPdfFile)
},
builder.setAdapter(
adapter,
(dialogInterface, i) -> {
switch (i) {
case 0:
@@ -127,7 +162,10 @@ public class ScanActivity extends CatimaAppCompatActivity {
addFromImage();
break;
case 3:
addFromPdfFile();
addFromPdf();
break;
case 4:
addFromPkPass();
break;
default:
throw new IllegalArgumentException("Unknown 'Add a card in a different way' dialog option");
@@ -152,16 +190,11 @@ public class ScanActivity extends CatimaAppCompatActivity {
barcodeScannerView.decodeSingle(new BarcodeCallback() {
@Override
public void barcodeResult(BarcodeResult result) {
Intent scanResult = new Intent();
Bundle scanResultBundle = new Bundle();
scanResultBundle.putString(BARCODE_CONTENTS, result.getText());
scanResultBundle.putString(BARCODE_FORMAT, result.getBarcodeFormat().name());
if (addGroup != null) {
scanResultBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, addGroup);
}
scanResult.putExtras(scanResultBundle);
ScanActivity.this.setResult(RESULT_OK, scanResult);
finish();
LoyaltyCard loyaltyCard = new LoyaltyCard();
loyaltyCard.setCardId(result.getText());
loyaltyCard.setBarcodeType(CatimaBarcode.fromBarcode(result.getBarcodeFormat()));
returnResult(new ParseResult(ParseResultType.BARCODE_ONLY, loyaltyCard));
}
@Override
@@ -265,33 +298,31 @@ public class ScanActivity extends CatimaAppCompatActivity {
mScannerActive = isActive;
}
private void returnResult(String barcodeContents, String barcodeFormat) {
Intent manualResult = new Intent();
Bundle manualResultBundle = new Bundle();
manualResultBundle.putString(BARCODE_CONTENTS, barcodeContents);
manualResultBundle.putString(BARCODE_FORMAT, barcodeFormat);
private void returnResult(ParseResult parseResult) {
Intent result = new Intent();
Bundle bundle = parseResult.toLoyaltyCardBundle(ScanActivity.this);
if (addGroup != null) {
manualResultBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, addGroup);
bundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, addGroup);
}
manualResult.putExtras(manualResultBundle);
ScanActivity.this.setResult(RESULT_OK, manualResult);
result.putExtras(bundle);
ScanActivity.this.setResult(RESULT_OK, result);
finish();
}
private void handleActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
List<BarcodeValues> barcodeValuesList = Utils.parseSetBarcodeActivityResult(requestCode, resultCode, intent, this);
List<ParseResult> parseResultList = Utils.parseSetBarcodeActivityResult(requestCode, resultCode, intent, this);
if (barcodeValuesList.isEmpty()) {
if (parseResultList.isEmpty()) {
setScannerActive(true);
return;
}
Utils.makeUserChooseBarcodeFromList(this, barcodeValuesList, new BarcodeValuesListDisambiguatorCallback() {
Utils.makeUserChooseParseResultFromList(this, parseResultList, new ParseResultListDisambiguatorCallback() {
@Override
public void onUserChoseBarcode(BarcodeValues barcodeValues) {
returnResult(barcodeValues.content(), barcodeValues.format());
public void onUserChoseParseResult(ParseResult parseResult) {
returnResult(parseResult);
}
@Override
@@ -338,7 +369,9 @@ public class ScanActivity extends CatimaAppCompatActivity {
// Buttons
builder.setPositiveButton(getString(R.string.ok), (dialog, which) -> {
returnResult(input.getText().toString(), "");
LoyaltyCard loyaltyCard = new LoyaltyCard();
loyaltyCard.setCardId(input.getText().toString());
returnResult(new ParseResult(ParseResultType.BARCODE_ONLY, loyaltyCard));
});
builder.setNegativeButton(getString(R.string.cancel), (dialog, which) -> dialog.cancel());
AlertDialog dialog = builder.create();
@@ -373,7 +406,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
Intent i = new Intent(getApplicationContext(), BarcodeSelectorActivity.class);
if (cardId != null) {
final Bundle b = new Bundle();
b.putString("initialCardId", cardId);
b.putString(LoyaltyCard.BUNDLE_LOYALTY_CARD_CARD_ID, cardId);
i.putExtras(b);
}
manualAddLauncher.launch(i);
@@ -387,10 +420,14 @@ public class ScanActivity extends CatimaAppCompatActivity {
PermissionUtils.requestStorageReadPermission(this, PERMISSION_SCAN_ADD_FROM_IMAGE);
}
public void addFromPdfFile() {
public void addFromPdf() {
PermissionUtils.requestStorageReadPermission(this, PERMISSION_SCAN_ADD_FROM_PDF);
}
public void addFromPkPass() {
PermissionUtils.requestStorageReadPermission(this, PERMISSION_SCAN_ADD_FROM_PKPASS);
}
private void addFromImageOrFileAfterPermission(String mimeType, ActivityResultLauncher<Intent> launcher, int chooserText, int errorMessage) {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType(mimeType);
@@ -480,12 +517,14 @@ public class ScanActivity extends CatimaAppCompatActivity {
} else {
showCameraPermissionMissingText();
}
} else if (requestCode == PERMISSION_SCAN_ADD_FROM_IMAGE || requestCode == PERMISSION_SCAN_ADD_FROM_PDF) {
} else if (requestCode == PERMISSION_SCAN_ADD_FROM_IMAGE || requestCode == PERMISSION_SCAN_ADD_FROM_PDF || requestCode == PERMISSION_SCAN_ADD_FROM_PKPASS) {
if (granted) {
if (requestCode == PERMISSION_SCAN_ADD_FROM_IMAGE) {
addFromImageOrFileAfterPermission("image/*", photoPickerLauncher, R.string.addFromImage, R.string.failedLaunchingPhotoPicker);
} else {
} else if (requestCode == PERMISSION_SCAN_ADD_FROM_PDF) {
addFromImageOrFileAfterPermission("application/pdf", pdfPickerLauncher, R.string.addFromPdfFile, R.string.failedLaunchingFileManager);
} else {
addFromImageOrFileAfterPermission("application/*", pkpassPickerLauncher, R.string.addFromPkpass, R.string.failedLaunchingFileManager);
}
} else {
setScannerActive(true);

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_OVERLAY = Color.argb(127, 0, 0, 0);
/**
* Add a card to the app shortcuts, and maintain a list of the most
@@ -87,7 +86,7 @@ class ShortcutHelper {
for (int index = 0; index < list.size(); index++) {
ShortcutInfoCompat prevShortcut = list.get(index);
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(database, Integer.parseInt(prevShortcut.getId()));
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(context, database, Integer.parseInt(prevShortcut.getId()));
// skip outdated cards that no longer exist
if (loyaltyCard != null) {
@@ -120,7 +119,7 @@ class ShortcutHelper {
Bitmap createAdaptiveBitmap(@NotNull Bitmap in, int paddingColor) {
Bitmap ret = Bitmap.createBitmap(ADAPTIVE_BITMAP_SIZE, ADAPTIVE_BITMAP_SIZE, Bitmap.Config.ARGB_8888);
Canvas output = new Canvas(ret);
output.drawColor(ColorUtils.compositeColors(PADDING_COLOR_OVERLAY, paddingColor));
output.drawColor(paddingColor);
Bitmap resized = Utils.resizeBitmap(in, ADAPTIVE_BITMAP_IMAGE_SIZE);
output.drawBitmap(resized, (ADAPTIVE_BITMAP_SIZE - resized.getWidth()) / 2f, (ADAPTIVE_BITMAP_SIZE - resized.getHeight()) / 2f, null);
return ret;
@@ -133,15 +132,14 @@ class ShortcutHelper {
// one replace it.
intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_SINGLE_TOP);
final Bundle bundle = new Bundle();
bundle.putInt("id", loyaltyCard.id);
bundle.putBoolean("view", true);
bundle.putInt(LoyaltyCardViewActivity.BUNDLE_ID, loyaltyCard.id);
intent.putExtras(bundle);
Bitmap iconBitmap = Utils.retrieveCardImage(context, loyaltyCard.id, ImageLocationType.icon);
Bitmap iconBitmap = loyaltyCard.getImageThumbnail(context);
if (iconBitmap == null) {
iconBitmap = Utils.generateIcon(context, loyaltyCard, true).getLetterTile();
} else {
iconBitmap = createAdaptiveBitmap(iconBitmap, Utils.getHeaderColor(context, loyaltyCard));
iconBitmap = createAdaptiveBitmap(iconBitmap, Utils.needsDarkForeground(Utils.getHeaderColor(context, loyaltyCard)) ? Color.BLACK : Color.WHITE);
}
IconCompat icon = IconCompat.createWithAdaptiveBitmap(iconBitmap);

View File

@@ -24,6 +24,13 @@ import com.yalantis.ucrop.UCropActivity;
public class UCropWrapper extends UCropActivity {
public static final String UCROP_TOOLBAR_TYPEFACE_STYLE = "ucop_toolbar_typeface_style";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Utils.applyWindowInsets(findViewById(android.R.id.content));
}
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);

View File

@@ -9,6 +9,7 @@ import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ImageDecoder;
import android.graphics.Matrix;
@@ -26,6 +27,7 @@ import android.util.Log;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ImageView;
import android.widget.TextView;
@@ -37,8 +39,12 @@ import androidx.annotation.RawRes;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.graphics.ColorUtils;
import androidx.core.graphics.Insets;
import androidx.core.os.LocaleListCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.core.view.WindowInsetsControllerCompat;
import androidx.core.widget.TextViewCompat;
import androidx.exifinterface.media.ExifInterface;
import androidx.palette.graphics.Palette;
@@ -77,6 +83,7 @@ import java.util.Collections;
import java.util.Currency;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -94,12 +101,13 @@ public class Utils {
public static final int BARCODE_SCAN = 3;
public static final int BARCODE_IMPORT_FROM_IMAGE_FILE = 4;
public static final int BARCODE_IMPORT_FROM_PDF_FILE = 5;
public static final int CARD_IMAGE_FROM_CAMERA_FRONT = 6;
public static final int CARD_IMAGE_FROM_CAMERA_BACK = 7;
public static final int CARD_IMAGE_FROM_CAMERA_ICON = 8;
public static final int CARD_IMAGE_FROM_FILE_FRONT = 9;
public static final int CARD_IMAGE_FROM_FILE_BACK = 10;
public static final int CARD_IMAGE_FROM_FILE_ICON = 11;
public static final int BARCODE_IMPORT_FROM_PKPASS_FILE = 6;
public static final int CARD_IMAGE_FROM_CAMERA_FRONT = 7;
public static final int CARD_IMAGE_FROM_CAMERA_BACK = 8;
public static final int CARD_IMAGE_FROM_CAMERA_ICON = 9;
public static final int CARD_IMAGE_FROM_FILE_FRONT = 10;
public static final int CARD_IMAGE_FROM_FILE_BACK = 11;
public static final int CARD_IMAGE_FROM_FILE_ICON = 12;
public static final String CARD_IMAGE_FILENAME_REGEX = "^(card_)(\\d+)(_(?:front|back|icon)\\.png)$";
@@ -142,7 +150,7 @@ public class Utils {
return ColorUtils.calculateLuminance(backgroundColor) > LUMINANCE_MIDPOINT;
}
static public List<BarcodeValues> retrieveBarcodesFromImage(Context context, Uri uri) {
static public List<ParseResult> retrieveBarcodesFromImage(Context context, Uri uri) {
Log.i(TAG, "Received image file with possible barcode");
if (uri == null) {
@@ -161,7 +169,7 @@ public class Utils {
return new ArrayList<>();
}
List<BarcodeValues> barcodesFromBitmap = getBarcodesFromBitmap(bitmap);
List<ParseResult> barcodesFromBitmap = getBarcodesFromBitmap(bitmap);
if (barcodesFromBitmap.isEmpty()) {
Log.i(TAG, "No barcode found in image file");
@@ -171,7 +179,52 @@ public class Utils {
return barcodesFromBitmap;
}
static public List<BarcodeValues> retrieveBarcodesFromPdf(Context context, Uri uri) {
static public List<ParseResult> retrieveBarcodesFromPkPass(Context context, Uri uri) {
Log.i(TAG, "Received Pkpass file with possible barcode");
if (uri == null) {
Log.e(TAG, "Pkpass did not contain any data");
Toast.makeText(context, R.string.errorReadingFile, Toast.LENGTH_LONG).show();
return new ArrayList<>();
}
PkpassParser pkpassParser;
try {
pkpassParser = new PkpassParser(context, uri);
} catch (Exception e) {
Log.e(TAG, "Error reading pkpass file", e);
Toast.makeText(context, R.string.errorReadingFile, Toast.LENGTH_LONG).show();
return new ArrayList<>();
}
List<String> locales = pkpassParser.listLocales();
if (locales.isEmpty()) {
try {
return Collections.singletonList(new ParseResult(ParseResultType.FULL, pkpassParser.toLoyaltyCard(null)));
} catch (Exception e) {
Log.e(TAG, "Error calling toLoyaltyCard on pkpass file", e);
Toast.makeText(context, R.string.errorReadingFile, Toast.LENGTH_LONG).show();
return new ArrayList<>();
}
}
List<ParseResult> parseResultList = new ArrayList<>();
for (String locale : locales) {
ParseResult parseResult;
try {
parseResult = new ParseResult(ParseResultType.FULL, pkpassParser.toLoyaltyCard(locale));
} catch (Exception e) {
Log.e(TAG, "Error calling toLoyaltyCard on pkpass file", e);
Toast.makeText(context, R.string.errorReadingFile, Toast.LENGTH_LONG).show();
return new ArrayList<>();
}
parseResult.setNote(locale);
parseResultList.add(parseResult);
}
return parseResultList;
}
static public List<ParseResult> retrieveBarcodesFromPdf(Context context, Uri uri) {
Log.i(TAG, "Received PDF file with possible barcode");
if (uri == null) {
Log.e(TAG, "Uri did not contain any data");
@@ -181,7 +234,7 @@ public class Utils {
ParcelFileDescriptor parcelFileDescriptor = null;
PdfRenderer renderer = null;
List<BarcodeValues> barcodesFromPdfPages = new ArrayList<>();
List<ParseResult> barcodesFromPdfPages = new ArrayList<>();
try {
parcelFileDescriptor = context.getContentResolver().openFileDescriptor(uri, "r");
@@ -193,13 +246,20 @@ public class Utils {
for (int i = 0; i < renderer.getPageCount(); i++) {
PdfRenderer.Page page = renderer.openPage(i);
renderedPage = Bitmap.createBitmap(page.getWidth(), page.getHeight(), Bitmap.Config.ARGB_8888);
// Ensure the page has a background
// Fixes some transparent PDF files not being read well
Canvas canvas = new Canvas(renderedPage);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(renderedPage, 0, 0, null);
page.render(renderedPage, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
page.close();
List<BarcodeValues> barcodesFromPage = getBarcodesFromBitmap(renderedPage);
for (BarcodeValues barcodeValues : barcodesFromPage) {
barcodeValues.setNote(String.format(context.getString(R.string.pageWithNumber), i+1));
barcodesFromPdfPages.add(barcodeValues);
List<ParseResult> barcodesFromPage = getBarcodesFromBitmap(renderedPage);
for (ParseResult parseResult : barcodesFromPage) {
parseResult.setNote(String.format(context.getString(R.string.pageWithNumber), i+1));
barcodesFromPdfPages.add(parseResult);
}
}
}
@@ -228,17 +288,17 @@ public class Utils {
}
/**
* Returns the Barcode format and content based on the result of an activity.
* It shows toasts to notify the end-user as needed itself and will return an empty
* BarcodeValues object if the activity was cancelled or nothing could be found.
* Returns the ParseResult based on the result of an activity.
* It shows toasts to notify the end-user as needed itself and will return an empty list if the
* activity was cancelled or nothing could be found.
*
* @param requestCode
* @param resultCode
* @param intent
* @param context
* @return BarcodeValues
* @return List<ParseResult>
*/
static public List<BarcodeValues> parseSetBarcodeActivityResult(int requestCode, int resultCode, Intent intent, Context context) {
static public List<ParseResult> parseSetBarcodeActivityResult(int requestCode, int resultCode, Intent intent, Context context) {
String contents;
String format;
@@ -254,6 +314,10 @@ public class Utils {
return retrieveBarcodesFromPdf(context, intent.getData());
}
if (requestCode == Utils.BARCODE_IMPORT_FROM_PKPASS_FILE) {
return retrieveBarcodesFromPkPass(context, intent.getData());
}
if (requestCode == Utils.BARCODE_SCAN || requestCode == Utils.SELECT_BARCODE_REQUEST) {
if (requestCode == Utils.BARCODE_SCAN) {
Log.i(TAG, "Received barcode information from camera");
@@ -267,7 +331,15 @@ public class Utils {
Log.i(TAG, "Read barcode id: " + contents);
Log.i(TAG, "Read format: " + format);
return Collections.singletonList(new BarcodeValues(format, contents));
LoyaltyCard loyaltyCard = new LoyaltyCard();
if (format != null) {
loyaltyCard.setBarcodeType(CatimaBarcode.fromName(format));
}
if (contents != null) {
loyaltyCard.setCardId(contents);
}
return Collections.singletonList(new ParseResult(ParseResultType.BARCODE_ONLY, loyaltyCard));
}
throw new UnsupportedOperationException("Unknown request code for parseSetBarcodeActivityResult");
@@ -287,7 +359,7 @@ public class Utils {
return MediaStore.Images.Media.getBitmap(context.getContentResolver(), data);
}
static public List<BarcodeValues> getBarcodesFromBitmap(Bitmap bitmap) {
static public List<ParseResult> getBarcodesFromBitmap(Bitmap bitmap) {
// This function is vulnerable to OOM, so we try again with a smaller bitmap is we get OOM
for (int i = 0; i < 10; i++) {
try {
@@ -302,7 +374,7 @@ public class Utils {
return new ArrayList<>();
}
static private List<BarcodeValues> getBarcodesFromBitmapReal(Bitmap bitmap) {
static private List<ParseResult> getBarcodesFromBitmapReal(Bitmap bitmap) {
// In order to decode it, the Bitmap must first be converted into a pixel array...
int[] intArray = new int[bitmap.getWidth() * bitmap.getHeight()];
bitmap.getPixels(intArray, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
@@ -311,7 +383,7 @@ public class Utils {
LuminanceSource source = new RGBLuminanceSource(bitmap.getWidth(), bitmap.getHeight(), intArray);
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source));
List<BarcodeValues> barcodeValuesList = new ArrayList<>();
List<ParseResult> parseResultList = new ArrayList<>();
try {
MultiFormatReader multiFormatReader = new MultiFormatReader();
MultipleBarcodeReader multipleBarcodeReader = new GenericMultipleBarcodeReader(multiFormatReader);
@@ -322,39 +394,44 @@ public class Utils {
Log.i(TAG, "Read barcode id: " + barcodeResult.getText());
Log.i(TAG, "Read format: " + barcodeResult.getBarcodeFormat().name());
barcodeValuesList.add(new BarcodeValues(barcodeResult.getBarcodeFormat().name(), barcodeResult.getText()));
LoyaltyCard loyaltyCard = new LoyaltyCard();
loyaltyCard.setCardId(barcodeResult.getText());
loyaltyCard.setBarcodeType(CatimaBarcode.fromBarcode(barcodeResult.getBarcodeFormat()));
parseResultList.add(new ParseResult(ParseResultType.BARCODE_ONLY, loyaltyCard));
}
return barcodeValuesList;
return parseResultList;
} catch (NotFoundException e) {
return barcodeValuesList;
return parseResultList;
}
}
static public void makeUserChooseBarcodeFromList(Context context, List<BarcodeValues> barcodeValuesList, BarcodeValuesListDisambiguatorCallback callback) {
static public void makeUserChooseParseResultFromList(Context context, List<ParseResult> parseResultList, ParseResultListDisambiguatorCallback callback) {
// If there is only one choice, consider it chosen
if (barcodeValuesList.size() == 1) {
callback.onUserChoseBarcode(barcodeValuesList.get(0));
if (parseResultList.size() == 1) {
callback.onUserChoseParseResult(parseResultList.get(0));
return;
}
// Ask user to choose a barcode
// TODO: This should contain an image of the barcode in question to help users understand the choice they're making
CharSequence[] barcodeDescriptions = new CharSequence[barcodeValuesList.size()];
for (int i = 0; i < barcodeValuesList.size(); i++) {
BarcodeValues barcodeValues = barcodeValuesList.get(i);
CatimaBarcode catimaBarcode = CatimaBarcode.fromName(barcodeValues.format());
CharSequence[] barcodeDescriptions = new CharSequence[parseResultList.size()];
for (int i = 0; i < parseResultList.size(); i++) {
ParseResult parseResult = parseResultList.get(i);
CatimaBarcode catimaBarcode = parseResult.getLoyaltyCard().barcodeType;
String barcodeContent = barcodeValues.content();
String barcodeContent = parseResult.getLoyaltyCard().cardId;
// Shorten overly long barcodes
if (barcodeContent.length() > 22) {
barcodeContent = barcodeContent.substring(0, 20) + "";
}
if (barcodeValues.note() != null) {
barcodeDescriptions[i] = String.format("%s: %s (%s)", barcodeValues.note(), catimaBarcode.prettyName(), barcodeContent);
String parseResultNote = parseResult.getNote();
if (parseResultNote != null) {
barcodeDescriptions[i] = String.format("%s: %s (%s)", parseResultNote, catimaBarcode != null ? catimaBarcode.prettyName() : context.getString(R.string.noBarcode), barcodeContent);
} else {
barcodeDescriptions[i] = String.format("%s (%s)", catimaBarcode.prettyName(), barcodeContent);
barcodeDescriptions[i] = String.format("%s (%s)", catimaBarcode != null ? catimaBarcode.prettyName() : context.getString(R.string.noBarcode), barcodeContent);
}
}
@@ -362,7 +439,7 @@ public class Utils {
builder.setTitle(context.getString(R.string.multipleBarcodesFoundPleaseChooseOne));
builder.setItems(
barcodeDescriptions,
(dialogInterface, i) -> callback.onUserChoseBarcode(barcodeValuesList.get(i))
(dialogInterface, i) -> callback.onUserChoseParseResult(parseResultList.get(i))
);
builder.setOnCancelListener(dialogInterface -> callback.onUserDismissedSelector());
builder.show();
@@ -782,7 +859,7 @@ public class Utils {
}
}
public static Bitmap loadImage(String path) {
public static @Nullable Bitmap loadImage(String path) {
try {
return BitmapFactory.decodeStream(new FileInputStream(path));
} catch (IOException e) {
@@ -791,7 +868,7 @@ public class Utils {
}
}
public static Bitmap loadTempImage(Context context, String name) {
public static @Nullable Bitmap loadTempImage(Context context, String name) {
return loadImage(context.getCacheDir() + "/" + name);
}
@@ -868,7 +945,7 @@ public class Utils {
return typedValue.data;
}
public static int getHeaderColorFromImage(Bitmap image, int fallback) {
public static int getHeaderColorFromImage(@Nullable Bitmap image, int fallback) {
if (image == null) {
return fallback;
}
@@ -933,14 +1010,37 @@ public class Utils {
* @param textWhenNoImage TextView to write the loyalty card name into if icon is null
* @return background colour
*/
public static int setIconOrTextWithBackground(Context context, LoyaltyCard loyaltyCard, Bitmap icon, ImageView backgroundOrIcon, TextView textWhenNoImage) {
public static int setIconOrTextWithBackground(Context context, LoyaltyCard loyaltyCard, Bitmap icon, ImageView backgroundOrIcon, TextView textWhenNoImage, int columnCount) {
int headerColor = getHeaderColor(context, loyaltyCard);
backgroundOrIcon.setImageBitmap(icon);
backgroundOrIcon.setBackgroundColor(headerColor);
if (icon != null) {
// Use header colour to decide if this image will need a white or black background
backgroundOrIcon.setBackgroundColor(needsDarkForeground(headerColor) ? Color.BLACK : Color.WHITE);
textWhenNoImage.setVisibility(View.GONE);
} else {
// Use header colour as background colour
backgroundOrIcon.setBackgroundColor(headerColor);
// Manually calculate how many lines will be needed
// This is necessary because Android's auto sizing will split over lines way before reaching the minimum font size and store names split over multiple lines are harder to scan with a quick glance so we should try to prevent it
// Because we have to write the text before we can actually know the exact laid out size (trying to delay this causes bugs where the autosize fails) we have to take some... weird shortcuts
// At this point textWhenNoImage.getWidth() still returns 0, so we cheat by calculating the whole width of the screen and then dividing it by the amount of columns
int columnWidth = Resources.getSystem().getDisplayMetrics().widthPixels / columnCount;
// Calculate how wide a character is and calculate how many characters fit in a line
// text size is generally based on height, so setting 1:1 as width may be fishy
int characterWidth = TextViewCompat.getAutoSizeMinTextSize(textWhenNoImage);
int maxWidthPerLine = columnWidth - textWhenNoImage.getPaddingStart() - textWhenNoImage.getPaddingEnd();
// Set number of lines based on what could fit at most
int fullTextWidth = loyaltyCard.store.length() * characterWidth;
int maxLines = (fullTextWidth / maxWidthPerLine) + 1;
textWhenNoImage.setMaxLines(maxLines);
// Actually set the text and colour
textWhenNoImage.setVisibility(View.VISIBLE);
textWhenNoImage.setText(loyaltyCard.store);
textWhenNoImage.setTextColor(Utils.needsDarkForeground(headerColor) ? Color.BLACK : Color.WHITE);
@@ -949,21 +1049,6 @@ public class Utils {
return headerColor;
}
public static boolean installedFromGooglePlay(Context context) {
try {
String packageName = context.getPackageName();
String installer;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
installer = context.getPackageManager().getInstallSourceInfo(packageName).getInstallingPackageName();
} else {
installer = context.getPackageManager().getInstallerPackageName(packageName);
}
return installer.equals("com.android.vending");
} catch (Throwable ignored) {
return false;
}
}
public static int getHeaderColor(Context context, LoyaltyCard loyaltyCard) {
return loyaltyCard.headerColor != null ? loyaltyCard.headerColor : LetterBitmap.getDefaultColor(context, loyaltyCard.store);
}
@@ -1025,4 +1110,20 @@ public class Utils {
return false;
}
}
public static void applyWindowInsets(View root) {
/* This function basically fakes the activity being edge-to-edge. Useful for those activities that are really hard to get to behave well */
ViewCompat.setOnApplyWindowInsetsListener(root, (view, windowInsets) -> {
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars());
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
layoutParams.leftMargin = insets.left;
layoutParams.bottomMargin = insets.bottom;
layoutParams.rightMargin = insets.right;
layoutParams.topMargin = insets.top;
view.setLayoutParams(layoutParams);
return WindowInsetsCompat.CONSUMED;
});
}
}

View File

@@ -23,7 +23,7 @@ public class ZipUtils {
return new JSONObject(read(zipInputStream));
}
private static String read(ZipInputStream zipInputStream) throws IOException {
public static String read(ZipInputStream zipInputStream) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
Reader reader = new BufferedReader(new InputStreamReader(zipInputStream, StandardCharsets.UTF_8));
int c;

View File

@@ -49,7 +49,7 @@ public class CatimaExporter implements Exporter {
// Generate CSV
ByteArrayOutputStream catimaOutputStream = new ByteArrayOutputStream();
OutputStreamWriter catimaOutputStreamWriter = new OutputStreamWriter(catimaOutputStream, StandardCharsets.UTF_8);
writeCSV(database, catimaOutputStreamWriter);
writeCSV(context, database, catimaOutputStreamWriter);
// Add CSV to zip file
ZipParameters csvZipParameters = createZipParameters("catima.csv", password);
@@ -64,12 +64,12 @@ public class CatimaExporter implements Exporter {
Cursor cardCursor = DBHelper.getLoyaltyCardCursor(database);
while (cardCursor.moveToNext()) {
// For each card
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor);
LoyaltyCard card = LoyaltyCard.fromCursor(context, cardCursor);
// For each image
for (ImageLocationType imageLocationType : ImageLocationType.values()) {
// If it exists, add to the .zip file
Bitmap image = Utils.retrieveCardImage(context, card.id, imageLocationType);
Bitmap image = card.getImageForImageLocationType(context, imageLocationType);
if (image != null) {
ZipParameters imageZipParameters = createZipParameters(Utils.getCardImageFileName(card.id, imageLocationType), password);
zipOutputStream.putNextEntry(imageZipParameters);
@@ -95,7 +95,7 @@ public class CatimaExporter implements Exporter {
return zipParameters;
}
private void writeCSV(SQLiteDatabase database, OutputStreamWriter output) throws IOException, InterruptedException {
private void writeCSV(Context context, SQLiteDatabase database, OutputStreamWriter output) throws IOException, InterruptedException {
CSVPrinter printer = new CSVPrinter(output, CSVFormat.RFC4180);
// Print the version
@@ -142,7 +142,7 @@ public class CatimaExporter implements Exporter {
Cursor cardCursor = DBHelper.getLoyaltyCardCursor(database);
while (cardCursor.moveToNext()) {
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor);
LoyaltyCard card = LoyaltyCard.fromCursor(context, cardCursor);
printer.printRecord(card.id,
card.store,
@@ -176,7 +176,7 @@ public class CatimaExporter implements Exporter {
Cursor cardCursor2 = DBHelper.getLoyaltyCardCursor(database);
while (cardCursor2.moveToNext()) {
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor2);
LoyaltyCard card = LoyaltyCard.fromCursor(context, cardCursor2);
for (Group group : DBHelper.getLoyaltyCardGroups(database, card.id)) {
printer.printRecord(card.id, group._id);

View File

@@ -124,7 +124,7 @@ public class CatimaImporter implements Importer {
Set<String> existingImages = DBHelper.imageFiles(context, database);
for (LoyaltyCard card : data.cards) {
LoyaltyCard existing = DBHelper.getLoyaltyCard(database, card.id);
LoyaltyCard existing = DBHelper.getLoyaltyCard(context, database, card.id);
if (existing == null) {
DBHelper.insertLoyaltyCard(database, card.id, card.store, card.note, card.validFrom, card.expiry, card.balance, card.balanceType,
card.cardId, card.barcodeId, card.barcodeType, card.headerColor, card.starStatus, card.lastUsed, card.archiveStatus);
@@ -152,7 +152,7 @@ public class CatimaImporter implements Importer {
}
public boolean isDuplicate(Context context, final LoyaltyCard existing, final LoyaltyCard card, final Set<String> existingImages, final Map<String, String> imageChecksums) throws IOException {
if (!LoyaltyCard.isDuplicate(existing, card)) {
if (!LoyaltyCard.isDuplicate(context, existing, card)) {
return false;
}
for (ImageLocationType imageLocationType : ImageLocationType.values()) {
@@ -490,7 +490,29 @@ public class CatimaImporter implements Importer {
// We catch this exception so we can still import old backups
}
return new LoyaltyCard(id, store, note, validFrom, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, starStatus, lastUsed, DBHelper.DEFAULT_ZOOM_LEVEL, archiveStatus);
return new LoyaltyCard(
id,
store,
note,
validFrom,
expiry,
balance,
balanceType,
cardId,
barcodeId,
barcodeType,
headerColor,
starStatus,
lastUsed,
DBHelper.DEFAULT_ZOOM_LEVEL,
archiveStatus,
null,
null,
null,
null,
null,
null
);
}
/**

View File

@@ -149,7 +149,29 @@ public class FidmeImporter implements Importer {
// TODO: Front and back image
// use -1 for the ID, it will be ignored when inserting the card into the DB
return new LoyaltyCard(-1, store, note, null, null, BigDecimal.valueOf(0), null, cardId, null, barcodeType, headerColor, starStatus, Utils.getUnixTime(), DBHelper.DEFAULT_ZOOM_LEVEL, archiveStatus);
return new LoyaltyCard(
-1,
store,
note,
null,
null,
BigDecimal.valueOf(0),
null,
cardId,
null,
barcodeType,
headerColor,
starStatus,
Utils.getUnixTime(),
DBHelper.DEFAULT_ZOOM_LEVEL,
archiveStatus,
null,
null,
null,
null,
null,
null
);
}
public void saveAndDeduplicate(SQLiteDatabase database, final ImportedData data) {

View File

@@ -9,8 +9,9 @@ import androidx.annotation.NonNull;
import com.google.zxing.BarcodeFormat;
import net.lingala.zip4j.ZipFile;
import net.lingala.zip4j.io.inputstream.ZipInputStream;
import net.lingala.zip4j.model.LocalFileHeader;
import net.lingala.zip4j.model.FileHeader;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
@@ -20,9 +21,7 @@ import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
@@ -130,11 +129,9 @@ public class StocardImporter implements Importer {
throw new FormatException("Issue parsing CSV data", e);
}
InputStream input = new FileInputStream(inputFile);
ZipInputStream zipInputStream = new ZipInputStream(input, password);
zipData = importZIP(zipInputStream, zipData);
zipInputStream.close();
input.close();
ZipFile zipFile = new ZipFile(inputFile, password);
zipData = importZIP(zipFile, zipData);
zipFile.close();
if (zipData.cards.keySet().size() == 0) {
throw new FormatException("Couldn't find any loyalty cards in this Stocard export.");
@@ -144,7 +141,7 @@ public class StocardImporter implements Importer {
saveAndDeduplicate(context, database, importedData);
}
public ZIPData importZIP(ZipInputStream zipInputStream, final ZIPData zipData) throws IOException, FormatException, JSONException {
public ZIPData importZIP(ZipFile zipFile, final ZIPData zipData) throws IOException, FormatException, JSONException {
Map<String, StocardRecord> cards = zipData.cards;
Map<String, StocardProvider> providers = zipData.providers;
@@ -152,9 +149,8 @@ public class StocardImporter implements Importer {
String[] cardBaseName = null;
String customProviderId = "";
String cardName = "";
LocalFileHeader localFileHeader;
while ((localFileHeader = zipInputStream.getNextEntry()) != null) {
String fileName = localFileHeader.getFileName();
for (FileHeader fileHeader : zipFile.getFileHeaders()) {
String fileName = fileHeader.getFileName();
String[] nameParts = fileName.split("/");
if (nameParts.length < 2) {
@@ -162,6 +158,7 @@ public class StocardImporter implements Importer {
}
String userId = nameParts[1];
ZipInputStream zipInputStream = zipFile.getInputStream(fileHeader);
if (customProvidersBaseName == null) {
// FIXME: can we use the points-account/statement/content.json balance info somehow?
@@ -302,6 +299,8 @@ public class StocardImporter implements Importer {
} else if (!fileName.endsWith("/")) {
Log.d(TAG, "Unknown or unused file " + fileName + ", skipping...");
}
zipInputStream.close();
}
return new ZIPData(cards, providers);
@@ -355,7 +354,29 @@ public class StocardImporter implements Importer {
long lastUsed = record.lastUsed != null ? record.lastUsed : Utils.getUnixTime();
LoyaltyCard card = new LoyaltyCard(tempID, store, note, null, null, BigDecimal.valueOf(0), null, record.cardId, null, barcodeType, headerColor, 0, lastUsed, DBHelper.DEFAULT_ZOOM_LEVEL, 0);
LoyaltyCard card = new LoyaltyCard(
tempID,
store,
note,
null,
null,
BigDecimal.valueOf(0),
null,
record.cardId,
null,
barcodeType,
headerColor,
0,
lastUsed,
DBHelper.DEFAULT_ZOOM_LEVEL,
0,
null,
null,
null,
null,
null,
null
);
importedData.cards.add(card);
Map<ImageLocationType, Bitmap> images = new HashMap<>();

View File

@@ -151,7 +151,29 @@ public class VoucherVaultImporter implements Importer {
}
// use -1 for the ID, it will be ignored when inserting the card into the DB
importedData.cards.add(new LoyaltyCard(-1, store, "", null, expiry, balance, balanceType, cardId, null, barcodeType, headerColor, 0, Utils.getUnixTime(), DBHelper.DEFAULT_ZOOM_LEVEL, 0));
importedData.cards.add(new LoyaltyCard(
-1,
store,
"",
null,
expiry,
balance,
balanceType,
cardId,
null,
barcodeType,
headerColor,
0,
Utils.getUnixTime(),
DBHelper.DEFAULT_ZOOM_LEVEL,
0,
null,
null,
null,
null,
null,
null
));
}
return importedData;

View File

@@ -1,9 +1,13 @@
package protect.card_locker.preferences;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import androidx.annotation.IntegerRes;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.preference.PreferenceManager;
@@ -14,8 +18,9 @@ import protect.card_locker.R;
import protect.card_locker.Utils;
public class Settings {
private static final String TAG = "Catima";
private final Context mContext;
private SharedPreferences mSettings;
private final SharedPreferences mSettings;
public Settings(Context context) {
mContext = context.getApplicationContext();
@@ -42,10 +47,11 @@ public class Settings {
return mSettings.getBoolean(getResString(keyId), defaultValue);
}
@Nullable
public Locale getLocale() {
String value = getString(R.string.settings_key_locale, "");
if (value.length() == 0) {
if (value.isEmpty()) {
return null;
}
@@ -91,4 +97,23 @@ public class Settings {
public String getColor() {
return getString(R.string.setting_key_theme_color, mContext.getResources().getString(R.string.settings_key_system_theme));
}
public int getPreferredColumnCount() {
var defaultSymbol = mContext.getResources().getString(R.string.settings_key_automatic_column_count);
var defaultColumnCount = mContext.getResources().getInteger(R.integer.main_view_card_columns);
var orientation = mContext.getResources().getConfiguration().orientation;
var columnCountPrefKey = orientation == ORIENTATION_PORTRAIT ? R.string.setting_key_column_count_portrait : R.string.setting_key_column_count_landscape;
var columnCountSetting = getString(columnCountPrefKey, defaultSymbol);
try {
// the pref may be unset or explicitly set to default
return columnCountSetting.equals(defaultSymbol) ? defaultColumnCount : Integer.parseInt(columnCountSetting);
} catch (NumberFormatException nfe) {
Log.e(TAG, "Failed to parseInt the column count pref", nfe);
return defaultColumnCount;
}
}
public boolean useVolumeKeysForNavigation() {
return getBoolean(R.string.settings_key_use_volume_keys_navigation, false);
}
}

View File

@@ -42,6 +42,7 @@ public class SettingsActivity extends CatimaAppCompatActivity {
binding = SettingsActivityBinding.inflate(getLayoutInflater());
setTitle(R.string.settings);
setContentView(binding.getRoot());
Utils.applyWindowInsets(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
enableToolbarBackButton();

View File

@@ -0,0 +1,27 @@
package protect.card_locker.viewmodels
import android.net.Uri
import androidx.lifecycle.ViewModel
import protect.card_locker.LoyaltyCard
import protect.card_locker.LoyaltyCardField
import protect.card_locker.async.TaskHandler
class LoyaltyCardEditActivityViewModel : ViewModel() {
var initialized: Boolean = false
var hasChanged: Boolean = false
var taskHandler: TaskHandler = TaskHandler();
var addGroup: String? = null
var openSetIconMenu: Boolean = false
var loyaltyCardId: Int = 0
var updateLoyaltyCard: Boolean = false
var duplicateFromLoyaltyCardId: Boolean = false
var importLoyaltyCardUri: Uri? = null
var tabIndex: Int = 0
var requestedImageType: Int = 0
var tempLoyaltyCardField: LoyaltyCardField? = null
var loyaltyCard: LoyaltyCard = LoyaltyCard()
}

View File

@@ -0,0 +1,5 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="?attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM4,12c0,-4.42 3.58,-8 8,-8 1.85,0 3.55,0.63 4.9,1.69L5.69,16.9C4.63,15.55 4,13.85 4,12zM12,20c-1.85,0 -3.55,-0.63 -4.9,-1.69L18.31,7.1C19.37,8.45 20,10.15 20,12c0,4.42 -3.58,8 -8,8z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="?attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<path android:fillColor="@android:color/white" android:pathData="M21,19V5c0,-1.1 -0.9,-2 -2,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2zM8.5,13.5l2.5,3.01L14.5,12l4.5,6H5l3.5,-4.5z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="?attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<path android:fillColor="@android:color/white" android:pathData="M20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM11.5,9.5c0,0.83 -0.67,1.5 -1.5,1.5L9,11v2L7.5,13L7.5,7L10,7c0.83,0 1.5,0.67 1.5,1.5v1zM16.5,11.5c0,0.83 -0.67,1.5 -1.5,1.5h-2.5L12.5,7L15,7c0.83,0 1.5,0.67 1.5,1.5v3zM20.5,8.5L19,8.5v1h1.5L20.5,11L19,11v2h-1.5L17.5,7h3v1.5zM9,9.5h1v-1L9,8.5v1zM4,6L2,6v14c0,1.1 0.9,2 2,2h14v-2L4,20L4,6zM14,11.5h1v-3h-1v3z"/>
</vector>

View File

@@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="@android:color/black">
<path
android:fillColor="@android:color/black"
android:pathData="M20.54,5.23l-1.39,-1.68C18.88,3.21 18.47,3 18,3H6c-0.47,0 -0.88,0.21 -1.16,0.55L3.46,5.23C3.17,5.57 3,6.02 3,6.5V19c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V6.5c0,-0.48 -0.17,-0.93 -0.46,-1.27zM12,17.5L6.5,12H10v-2h4v2h3.5L12,17.5zM5.12,5l0.81,-1h12l0.94,1H5.12z"/>
</vector>

View File

@@ -1,5 +0,0 @@
<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.41,18.59L8.83,20 12,16.83 15.17,20l1.41,-1.41L12,14l-4.59,4.59zM16.59,5.41L15.17,4 12,7.17 8.83,4 7.41,5.41 12,10l4.59,-4.59z"/>
</vector>

View File

@@ -1,5 +0,0 @@
<vector android:height="24dp" android:tint="#000000"
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,17.27L18.18,21l-1.64,-7.03L22,9.24l-7.19,-0.61L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21z"/>
</vector>

View File

@@ -1,5 +0,0 @@
<vector android:height="24dp" android:tint="#FFFFFF"
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,17.27L18.18,21l-1.64,-7.03L22,9.24l-7.19,-0.61L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21z"/>
</vector>

View File

@@ -1,5 +0,0 @@
<vector android:height="24dp" android:tint="#000000"
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="M22,9.24l-7.19,-0.62L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21 12,17.27 18.18,21l-1.63,-7.03L22,9.24zM12,15.4l-3.76,2.27 1,-4.28 -3.32,-2.88 4.38,-0.38L12,6.1l1.71,4.04 4.38,0.38 -3.32,2.88 1,4.28L12,15.4z"/>
</vector>

View File

@@ -1,5 +0,0 @@
<vector android:height="24dp" android:tint="#FFFFFF"
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="M22,9.24l-7.19,-0.62L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21 12,17.27 18.18,21l-1.63,-7.03L22,9.24zM12,15.4l-3.76,2.27 1,-4.28 -3.32,-2.88 4.38,-0.38L12,6.1l1.71,4.04 4.38,0.38 -3.32,2.88 1,4.28L12,15.4z"/>
</vector>

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M368,640L480,556L590,640L548,504L660,416L524,416L480,280L436,416L300,416L410,504L368,640ZM160,800Q127,800 103.5,776.5Q80,753 80,720L80,585Q80,574 87,566Q94,558 105,556Q129,548 144.5,527Q160,506 160,480Q160,454 144.5,433Q129,412 105,404Q94,402 87,394Q80,386 80,375L80,240Q80,207 103.5,183.5Q127,160 160,160L800,160Q833,160 856.5,183.5Q880,207 880,240L880,375Q880,386 873,394Q866,402 855,404Q831,412 815.5,433Q800,454 800,480Q800,506 815.5,527Q831,548 855,556Q866,558 873,566Q880,574 880,585L880,720Q880,753 856.5,776.5Q833,800 800,800L160,800ZM160,720L800,720Q800,720 800,720Q800,720 800,720L800,618Q763,596 741.5,559.5Q720,523 720,480Q720,437 741.5,400.5Q763,364 800,342L800,240Q800,240 800,240Q800,240 800,240L160,240Q160,240 160,240Q160,240 160,240L160,342Q197,364 218.5,400.5Q240,437 240,480Q240,523 218.5,559.5Q197,596 160,618L160,720Q160,720 160,720Q160,720 160,720ZM480,480Q480,480 480,480Q480,480 480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480Q480,480 480,480Q480,480 480,480L480,480Q480,480 480,480Q480,480 480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480Q480,480 480,480Q480,480 480,480Z"/>
</vector>

View File

@@ -2,9 +2,10 @@
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="@android:color/white">
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M20.54,5.23l-1.39,-1.68C18.88,3.21 18.47,3 18,3H6c-0.47,0 -0.88,0.21 -1.16,0.55L3.46,5.23C3.17,5.57 3,6.02 3,6.5V19c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V6.5c0,-0.48 -0.17,-0.93 -0.46,-1.27zM12,17.5L6.5,12H10v-2h4v2h3.5L12,17.5zM5.12,5l0.81,-1h12l0.94,1H5.12z"/>
android:fillColor="#D3D3D3"
android:pathData="M20.54,5.23l-1.39,-1.68C18.88,3.21 18.47,3 18,3H6c-0.47,0 -0.88,0.21 -1.16,0.55L3.46,5.23C3.17,5.57 3,6.02 3,6.5V19c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V6.5c0,-0.48 -0.17,-0.93 -0.46,-1.27zM12,17.5L6.5,12H10v-2h4v2h3.5L12,17.5zM5.12,5l0.81,-1h12l0.94,1H5.12z"
android:strokeWidth="0.25"
android:strokeColor="#777777"/>
</vector>

View File

@@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#D3D3D3"
android:pathData="M12,17.27L18.18,21l-1.64,-7.03L22,9.24l-7.19,-0.61L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21z"
android:strokeWidth="0.25"
android:strokeColor="#777777"/>
</vector>

View File

@@ -46,7 +46,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/version_history"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
@@ -56,7 +57,8 @@
android:id="@+id/version_history_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/version_history_main" />
@@ -87,7 +89,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/credits"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
@@ -97,7 +100,8 @@
android:id="@+id/credits_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/credits_main" />
@@ -128,7 +132,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/help_translate_this_app"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
@@ -138,7 +143,8 @@
android:id="@+id/translate_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/translate_platform"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
@@ -170,7 +176,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/license"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
@@ -180,7 +187,8 @@
android:id="@+id/license_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/app_license"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
@@ -212,7 +220,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/source_repository"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
@@ -222,7 +231,8 @@
android:id="@+id/repo_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/on_github"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
@@ -254,7 +264,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/privacy_policy"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
@@ -264,7 +275,8 @@
android:id="@+id/privacy_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/and_data_usage"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
@@ -296,7 +308,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/donate"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
@@ -329,7 +342,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/rate_this_app"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
@@ -339,7 +353,8 @@
android:id="@+id/rate_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/on_google_play"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
@@ -371,7 +386,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:padding="2dp"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:text="@string/report_error"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
@@ -383,9 +399,10 @@
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/report_error_main"
app:layout_constraintStart_toStartOf="parent"
android:paddingStart="2dp"
android:paddingEnd="30dp"
android:textSize="16sp"
android:text="@string/on_github"
android:padding="2dp"/>
android:text="@string/on_github" />
<TextView
android:importantForAccessibility="no"

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:layout_marginStart="24dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/textView"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -27,7 +27,7 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/list"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="1"
app:spanCount="@integer/main_view_card_columns"
android:layout_height="match_parent"
android:layout_width="match_parent" />
</RelativeLayout>

View File

@@ -6,7 +6,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="protect.card_locker.MainActivity"
tools:context="protect.card_locker.ManageGroupActivity"
tools:showIn="@layout/main_activity">
<TextView

View File

@@ -6,4 +6,5 @@
android:paddingRight="8dp"
style="@style/Widget.MaterialComponents.Chip.Filter"
app:checkedIconVisible="true"
android:textAppearance="?android:attr/textAppearance" />
android:textAppearance="?android:attr/textAppearance"
app:checkedIconTint="?attr/colorOnBackground"/>

View File

@@ -41,13 +41,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textStyle="bold"
app:autoSizeMinTextSize="6sp"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="12sp"
app:autoSizeMaxTextSize="100sp"
app:autoSizeStepGranularity="2sp"
android:gravity="center"
android:maxLines="1"
android:layout_margin="20dp" />
android:padding="10dp" />
<ImageView
android:importantForAccessibility="no"
@@ -75,29 +72,15 @@
android:layout_width="@dimen/cardThumbnailSize"
android:layout_height="@dimen/cardThumbnailSize"
android:layout_gravity="end"
android:alpha="0.5"
android:alpha="0.8"
android:contentDescription="@string/starred"
android:elevation="4dp"
android:rotationX="2"
android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_starred_white"
tools:ignore="ImageContrastCheck" />
<ImageView
android:importantForAccessibility="no"
android:id="@+id/star_border"
android:layout_width="@dimen/cardThumbnailSize"
android:layout_height="@dimen/cardThumbnailSize"
android:layout_gravity="end"
android:alpha="0.5"
android:contentDescription="@string/starImage"
android:elevation="4dp"
android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_unstarred_black"
tools:ignore="ImageContrastCheck" />
app:srcCompat="@drawable/loyalty_card_icon_starred"
tools:ignore="ImageContrastCheck"/>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -113,18 +96,18 @@
<ImageView
android:id="@+id/archive_background"
android:layout_width="41dp"
android:layout_height="44dp"
android:layout_width="@dimen/cardThumbnailSize"
android:layout_height="@dimen/cardThumbnailSize"
android:layout_gravity="end"
android:alpha="0.5"
android:alpha="0.8"
android:contentDescription="@string/archived"
android:elevation="4dp"
android:rotationX="2"
android:visibility="visible"
app:srcCompat="@drawable/ic_baseline_archive_24"
tools:ignore="ImageContrastCheck,MissingConstraints"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="-1dp" />
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/loyalty_card_icon_archived"
tools:ignore="ImageContrastCheck" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -154,6 +137,8 @@
android:layout_marginEnd="8dp"
android:layout_marginBottom="4dp"
android:textAppearance="?attr/textAppearanceBody2"
android:maxLines="5"
android:ellipsize="end"
android:visibility="gone"
tools:visibility="visible"
app:layout_constraintTop_toBottomOf="@+id/store"

View File

@@ -6,56 +6,76 @@ Allan Nordhøy
Heimen Stoffels
Oğuz Ersen
FC (Fay) Stegerman
Katharine Chui
StoyanDimitrov
Katharine Chui
SlavekB
mondstern
IllusiveMan196
大王叫我来巡山
Altonss
Michael Moroni
GM
Eric
B o d o
GM
laralem
Petr Novák
Joel A
Priit Jõerüüt
Taco
pfaffenrodt
Aayush Gupta
HudobniVolk
大王叫我来巡山
Nyatsuki
Scrambled777
Максим Горпиніч
ikanakova
HudobniVolk
Giovanni Donisi
Edgars Andersons
Jiri Grönroos
Nyatsuki
Silvério Santos
Balázs Meskó
Milo Ivir
Samantaz Fox
arno-github
Cliff Heraldo
Sergio Paredes
Ankit Tiwari
Milo Ivir
Milan Šalka
josé m
Arno-github
Jose Delvani
mdvhimself
Balázs Meskó
Milan Šalka
Kachelkaiser
Skrripy
huuhaa
Projjal Moitra
Quentin PAGÈS
ikanakova
ngocanhtve
waffshappen
Marnick L'Eau
Maksim2005UA
ngocanhtve
Quentin PAGÈS
Projjal Moitra
Robin
JungHee Lee
தமிழ் நேரம்
Ziad OUALHADJ
Vasilis
Robin Liu
Renko
Denis Shilin
Alexander Ivanov
Viet Nguyen Hoang
Miha Frangež
Silvério Santos
Virginie
Michael Gangolf
rudy3
Kim Seohyun
Govind S Nair
Freddo espresso
arshbeerSingh
MisterCosta96
しいたけ
Alexander Ivanov
Miha Frangež
Viet Nguyen Hoang
stavpup
ehrt74
Virginie
Tim Trek
MisterCosta96
arshbeerSingh
Augustin LAVILLE
Freddo espresso
Govind S Nair
Kim Seohyun
rudy3
Ricky Tigg
Michael Gangolf
Peter Dave Hello

View File

@@ -13,6 +13,7 @@ _id,name,barcodeFormat
015cf86e-c4b6-42b5-abed-5821492b2669,Campbells,ITF
016c8380-d433-4eb1-b7a0-df6fd9254ec6,Friendlies Pharmacy,CODE_128
0189b6a0-3f02-418f-872e-d5e354619a45,Mencke Gartencenter,EAN_8
01b239f4-d1db-4311-a33b-bc8bb9c71c19,McEwan,CODE_128
01ce8326-50e8-4787-9999-e509dfed15cb,Вигода Вопак,CODE_128
01eafcc6-ee41-447f-bbce-7a93ffb90b6c,Mario Mikke,EAN_13
01f88e2d-3eb4-4242-a32b-1a847a28e140,Crodux,CODE_128
@@ -31,6 +32,7 @@ _id,name,barcodeFormat
037f2420-273c-4ffe-9dd3-af22868b1b59,Al Pentolone,EAN_13
038516b8-3cdd-4f96-9582-97caf9dc3a47,Dier Specialist,CODE_39
039784f4-4fef-497e-8f03-f026655394ef,террапевтика,EAN_13
039932ff-caec-4d40-aa9a-0ed185b5cf5f,FNV,CODE_128
03b89b04-69cd-43cf-88eb-35760f092488,Мегаполис,CODE_128
03d62f02-8266-493b-b4fd-95d5c853b87b,мта,EAN_13
03fd0d65-b3dd-427b-9f7c-3554fe3dc99b,Happy Sport,EAN_13
@@ -60,6 +62,7 @@ _id,name,barcodeFormat
0777b427-2af5-4531-81c3-f7421dde9d63,Евразия Автозапчасти,EAN_13
078a5228-818d-4a86-8726-c71dd27a3fdc,EU COVID-19 Certificado de Vacunacion,QR_CODE
078fdcef-2e8a-4179-befe-5959cd588a7e,Клякса,EAN_13
07a90343-0b80-4cb4-8571-b6a2419cff6e,Maracatú,CODE_128
07f645dc-3127-4050-94ac-41f42cacdb74,Cats & Dogs,EAN_8
081924f1-3eff-480a-a8a9-ec08eb4b75e7,Rossetti Market,EAN_13
0821c8d1-4556-4178-af1b-fe4d1977127d,Feedo,CODE_128
@@ -84,11 +87,14 @@ _id,name,barcodeFormat
09e1c670-eac2-4077-8a66-b990c3ba1ed8,Gamble & Brown Cafe,CODE_39
09e38952-3559-4432-821a-84fdee4923f8,Стройка,EAN_13
0a047088-f9f9-47c5-a982-b307122f09fa,IGA Rewards,EAN_13
0a058735-ecfd-4278-ae7a-9f6917193a3d,JBs Power Centre,CODE_128
0a124613-4513-4a4f-b89a-6c4b645e395b,BoniChoix,CODE_128
0a6c06b6-056d-4bf2-ae78-915a8c52d464,волгорост,EAN_13
0a7c000b-39eb-4464-bc41-03d0e1f4a20f,Life Pharmacy ,CODE_128
0ae08429-e2a2-4fe0-840a-e940ce9fd3e5,Zebra,EAN_13
0b2502b7-f8d7-426e-b518-4482ee6115eb,Лоза,EAN_13
0b4c67fb-bf76-46e8-9a3b-cb0acfe47e71,Giocheria,CODE_39
0b539afa-e6b5-42a0-8f03-50d5de9f4af0,MediaMarkt Club Karte,QR_CODE
0b600df8-f694-49d5-b5ee-56d0b47ab1bc,reima,EAN_13
0b82965b-29df-4c9e-ae5f-70a5d10f1d32,Fanølinjen,CODE_128
0bb951c2-c644-4a0b-92c0-754d739a55be,ZALY,EAN_13
@@ -128,8 +134,9 @@ _id,name,barcodeFormat
0f650862-0a1c-4596-b2f9-30fc8d3bf8d3,Lila Bäcker,QR_CODE
0f69ba3f-6084-49a5-b959-24277008de45,CJ Express,CODE_128
0f936e1f-b3ac-4a34-aad7-a18bd76150f2,FOTOLAB,CODE_128
0fafa67a-b4d2-4365-9f68-c167d43c7070,I TOURS,CODE_128
0fce03a0-6b7b-427c-a483-26a1169e73b0,EDMINS,EAN_13
1,Accor Le Club,QR_CODE
1,Accor Live Limitless,QR_CODE
10,Aeroplan,CODE_128
100,Esprit,ITF
1000,Chemmart Pharmacy,CODE_128
@@ -465,6 +472,7 @@ _id,name,barcodeFormat
13,Amavita,EAN_13
130,GNC,UPC_A
1300,IZOD,CODE_128
13004ca8-9095-40c2-aa98-1fcf6410efc7,Max Shop,CODE_128
1301,La Quinta Inns,CODE_128
1302,Pet Supplies Plus,UPC_A
1303,Piazza Italia,EAN_13
@@ -501,8 +509,8 @@ _id,name,barcodeFormat
1331,Bizzbee,QR_CODE
1332,Blue Box,CODE_39
1333,Brice,EAN_13
1334,Bricoman,GS1_128
1335,Brico Marché,GS1_128
1334,Tecnomat,GS1_128
1335,Bricomarché,GS1_128
1336,Camaieu,CODE_128
1337,Casino Supermarchés,EAN_13
1338,Castorama,CODE_128
@@ -680,7 +688,7 @@ _id,name,barcodeFormat
148f7495-e6f2-40b1-80cd-99b3632cb976,Slam,ITF
149,Höffner,ITF
1490,Basko,EAN_13
1491,Unes,EAN_13
1491,Unes,CODE_128
1492,Grande Cinema 3,EAN_13
1493,Eurobrico,EAN_13
1494,Isola dei Tesori,EAN_13
@@ -966,7 +974,7 @@ _id,name,barcodeFormat
172,Jost,ITF
1720,Wheelup,CODE_39
1721,BIG4,CODE_128
1722,Besson Chaussures,EAN_13
1722,Besson Chaussures,CODE_128
1723,Cactus,EAN_13
1724,Idea Bellezza,CODE_39
1725,Uyum,CODE_128
@@ -983,7 +991,7 @@ _id,name,barcodeFormat
1733,Mondial Tissus,EAN_13
1734,Furet du nord,EAN_13
1735,Maxxess,EAN_13
1736,Devianne,EAN_13
1736,Des Marques et Vous,EAN_13
1737,Colruyt,ITF
1738,Paul,EAN_13
1739,JouéClub,EAN_13
@@ -1044,7 +1052,7 @@ _id,name,barcodeFormat
179,Kastner & Öhler,EAN_13
1790,MY SIZE,CODE_39
1791,PetO,CODE_128
1792,AVEVE,EAN_13
1792,Aveve,EAN_13
1793,BIO-Planet,ITF
1794,Brico,EAN_13
1795,Club,CODE_128
@@ -1343,9 +1351,10 @@ _id,name,barcodeFormat
1e43877a-d4f1-4bff-bdb9-cd3346082a46,Scorpion Bay,EAN_13
1e9469a4-8388-4ca9-a463-95ee73a0d953,FAMO,EAN_13
1e9a127a-0451-4565-9560-eaa097d3808b,Grill'd,CODE_128
1ed46ee6-993a-4053-a016-a0d67e26b91b,Lidl SK,CODE_128
1ed46ee6-993a-4053-a016-a0d67e26b91b,Lidl,CODE_128
1f01c3b1-08f7-4365-a0f9-f1c9bcbdf58a,Fresco,CODE_128
1f15d8f3-c35c-46d6-8038-4c9f91a18909,Покров,EAN_8
1f1ec99d-c8c6-42d3-ac6a-b9658a6e0a0d,xBarvy,EAN_13
1f661d7a-d355-4590-8d33-0d61630958cc,NDG,CODE_39
1f6624c6-5acc-4983-ac17-31b9004232d7,Afvalpas Rijssen-Holten,QR_CODE
1f69337f-7604-4e7a-9031-f0ab182e7cd7,Дешёвая Аптека Вита,CODE_128
@@ -1453,7 +1462,7 @@ _id,name,barcodeFormat
2085,Billa,EAN_13
2086,Billa,EAN_13
2087,BIPA,EAN_13
2088,Penny,EAN_13
2088,PENNY,EAN_13
2089,Penny,EAN_13
209,MCard,CODE_128
2090,Shoprite,CODE_128
@@ -1492,6 +1501,7 @@ _id,name,barcodeFormat
2112,Lindex,CODE_128
2113,Twilfit,CODE_128
2114,aClass,CODE_128
21143721-38a4-466f-b04d-a3e90cb62bad,L'angolo,CODE_128
2115,Clas Ohlson,CODE_128
2116,Agrimarket,CODE_128
2117,Starkki,CODE_128
@@ -1600,7 +1610,7 @@ _id,name,barcodeFormat
2201,Avance,CODE_128
2202,berca.be,EAN_13
2203,Brantano,EAN_13
2204,Brooklyn,EAN_13
2204,Brooklyn nv,EAN_13
2205,CAMELEON,CODE_128
2206,Carmi,CODE_39
2207,E5 mode,ITF
@@ -1940,7 +1950,7 @@ _id,name,barcodeFormat
2488,Proximus,CODE_128
2489,RS Bútor,CODE_128
248957ba-dbad-414e-86e4-009fc4e5beee,Самоцветы плюс,ITF
249,Countdown,CODE_128
249,Woolworths,CODE_128
2490,SEIBU PRINCE CLUB,CODE_128
2491,サミット,EAN_13
2492,The PUB,CODE_128
@@ -2024,6 +2034,7 @@ _id,name,barcodeFormat
2557,Artex Fashion,EAN_13
2558,Askot,CODE_128
2559,BUTIK,EAN_8
255d84f7-144d-4d63-b6fd-f00a8e94641f,HUK Autowelt,QR_CODE
256,Palmers,EAN_13
2560,Dayli,EAN_13
2561,De Banier,CODE_128
@@ -2440,6 +2451,7 @@ _id,name,barcodeFormat
28a46b11-8c45-4b2a-93dd-b7325a2fe013,Dialogues,CODE_128
28b5866e-f195-4d68-b8a0-02cdb611af4f,Да Здоров! аптека,EAN_13
28c5ee9a-cf66-4add-b71c-70b66be85570,Agraria,EAN_13
28cc5dc7-61b4-4c95-a5a6-e125cc4bce9b,Aventurx,CODE_128
28d93baa-c331-4df8-a85d-65eb86199732,Solar Studio,CODE_128
28fbdd64-8715-4cdc-8c3f-df7259b1ba65,NOHO,EAN_13
29,Heathrow Rewards,CODE_128
@@ -2582,6 +2594,7 @@ _id,name,barcodeFormat
2b1eb78e-9684-4434-ba9b-41f00fc5beab,Sensation Profumerie,EAN_13
2b29bfc0-26a7-44cb-9d21-2a0bdb467320,Vertex Hotel,ITF
2b39b807-6375-404c-bfd7-7f3135654258,Планета Игрушек,EAN_13
2b6062ec-39b1-4ac4-b6d6-cf19048c9f3f,Coripet,UPC_A
2b6992d5-615a-423a-b196-ab19a418686f,Mimco,CODE_128
2b7d84ce-c573-44ea-8989-b23a13cf389b,Азбука Красоты,EAN_13
2bc9768c-56a2-4d7d-8f1c-0be9f208b71b,Profile,CODE_128
@@ -2852,6 +2865,7 @@ _id,name,barcodeFormat
3199,Navyboot,EAN_13
31d21202-2674-4c42-9a7e-a19b01d32b63,Vegetalis,EAN_13
31d3cf0c-7522-4035-9256-7a712cb1a8b3,Канцелярия,EAN_13
31db4e18-fb97-43d2-b026-c41f39d2faba,Bershka,CODE_128
31eccc6d-babd-4fee-9ae8-db9a00fc1c63,Pharmactiv,EAN_13
31f60f6d-633f-42af-b387-e5d0b4e2f45f,SPINNS,EAN_13
32,Bauking,EAN_13
@@ -3092,6 +3106,7 @@ _id,name,barcodeFormat
3399,Taxi Jetax,CODE_128
339bb076-12fd-4e56-899f-3acb79f5da53,Hafenhotel Meereszeiten,CODE_128
33a430e4-35c7-43e7-98e8-5ce5d039ee70,VPZ,CODE_128
33cb4886-5d06-473a-80b7-980ca2fb27c2,Bouwcenter Nobel,EAN_13
33d16d2d-f51e-44c3-92d8-2c3616af2d0f,Apotheke Peer Farmacia,CODE_128
33dea27e-c7a4-4e40-8621-32da990f7d82,EU COVID-19 Vaccinationsintyg - Andra vaccination Skott,QR_CODE
33e82e4f-5541-4be1-aa4c-0f2987cfd78f,Данди,EAN_13
@@ -3452,6 +3467,7 @@ _id,name,barcodeFormat
37,Bessmann,ITF
370,Virgin Atlantic,CODE_128
3700,Go Auto,CODE_128
37003c25-7bc7-4dd9-8a3a-8406005d0dcf,Scouts en Gidsen Vlaanderen,CODE_128
3701,Good Earth,CODE_128
3702,Hachem,CODE_128
3703,Le Magasin,CODE_128
@@ -3949,6 +3965,7 @@ _id,name,barcodeFormat
4083,Каляев,EAN_13
4084,Shingle Inn,CODE_128
4085,Golden Casket,CODE_128
40853977-7fdb-4815-a64e-85d2c70df347,OROCAJA,CODE_39
4086,Pet City,CODE_128
4087,chempro,EAN_13
4088,merlo,CODE_39
@@ -4313,7 +4330,7 @@ _id,name,barcodeFormat
4387,Kremer,EAN_13
4388,Gartencenter Nickl,EAN_13
4389,Panarottis,QR_CODE
439,Alitalia,CODE_128
439,Volare ITA airways.,CODE_128
4390,Simply Asia,CODE_128
4391,Ultraliquors,CODE_128
4392,Cum Books,CODE_128
@@ -4565,6 +4582,7 @@ _id,name,barcodeFormat
4599,Мокрый Нос,EAN_13
45b55fa2-835b-4ae5-a318-16a66b4ec85b,Євро Мікс,EAN_8
45cbba3f-f0d2-4837-8189-16b0ff2707f5,Барс,CODE_128
45e6b637-a991-45ce-b72d-8f4df03d9f6b,Tradition,CODE_128
45e6f6d3-e688-40f7-86e2-73e3803c86bd,KüstenCard mini/maxi,CODE_128
45fa81a4-657e-414c-89ed-ebf1c49c0926,G'DAY REWARDS,CODE_128
45faf9e5-321c-44a7-b641-7acee8126349,EU COVID-19 Vaccinatiebewijs - Eerste vaccinatieschot,QR_CODE
@@ -4772,6 +4790,7 @@ _id,name,barcodeFormat
4773,Maximiles,CODE_128
4774,La Compagnie des Petits,CODE_128
4775,Totem Family,CODE_128
477515a9-2257-4d19-af18-3dbcfeb4acd9,Omni,CODE_128
4776,La Jardinerie,CODE_128
4777,La Plateforme du Bâtiment,EAN_13
4778,Animal & Co,EAN_13
@@ -5049,6 +5068,7 @@ _id,name,barcodeFormat
4adaa99b-282d-4abe-87c8-b16d3958f4c2,Тюменский ЦУМ,CODE_39
4ae5d40d-45ea-4188-bce8-eb3337733466,Garden Floridea,CODE_128
4b197111-0d79-4ac5-aecd-5dca6643e390,Евродом,EAN_13
4b50787c-052c-48e9-8bae-b01373cef1b8,Fbo Clothing,CODE_128
4b511f9a-5c9c-4b9f-8c71-1631cb78456a,Семейная Аптека,EAN_13
4b8e7174-b85b-4b82-99ab-b1faee2dfb8f,Diper,EAN_13
4ba9de66-0015-49e1-a0d1-d24c2328eaa5,Witchery,EAN_13
@@ -5063,14 +5083,18 @@ _id,name,barcodeFormat
4ccb26a9-3a58-487f-9bdf-5cc4b042c0b3,UNCS,CODE_128
4cd0da27-9a71-4eb0-88f4-23919b598828,Pins,CODE_128
4d28254f-9ec6-4262-aa28-ee0bd7620b00,Леонардо,EAN_13
4d4102e9-115a-4695-b764-c5534e1749a8,twd,EAN_13
4d7b0d6e-2680-4c6b-bdac-8985df7aa8a3,大昌,EAN_13
4d8c62b4-b4c5-40b0-9117-6e5022cf7950,MilleMiglia,CODE_128
4dab7847-f728-4c34-80ea-a464238a3756,Волна,EAN_13
4db2f926-b58d-4821-8f85-b02d3e32fbcb,Дом посуды,EAN_13
4dd50f0e-05a1-4a32-97c2-1e5b570d0d9b,MIA,EAN_13
4dd586bf-d2ed-4357-898c-11b648bcb796,Детский парк,EAN_13
4dd5aa56-2f5c-4bb5-a281-211bb4e5463e,Joylab,CODE_128
4e090085-f5bc-4f29-abcf-bb249dd3429d, SSENSE,CODE_128
4e1001a2-a664-4d37-8b85-a71b02f9f6dc,xFarby,EAN_13
4e24761b-17a7-4b7d-b04a-16f54076d03b,Forum+,EAN_13
4e6622db-6fd3-405e-a60e-7157984da5ba,KiemKracht VZW,CODE_128
4e95cfa4-3011-41c2-ad87-0c560cbd218c,Lincolnshire Co-operative,DATA_MATRIX
4eb5bcd8-9467-44ce-b54c-fc69521431be,Мир Обоев,CODE_128
4ed66bc0-04ee-458b-aac7-6bb7bdd35e5c,Пивотека,CODE_39
@@ -5300,6 +5324,7 @@ _id,name,barcodeFormat
519,Alimerka,CODE_128
5190,Souris Mini,CODE_128
5191,Лакомка,EAN_13
51917108-3469-4067-b1da-8697d60fcfa6,Kingston Frontenac Public Library,CODE_128
5192,AlphaZoo,CODE_128
5193,БИГАМ,EAN_8
5194,Sebastiano,EAN_13
@@ -5406,6 +5431,7 @@ _id,name,barcodeFormat
55cfc40e-469f-485f-ab26-823014fd8401,Seebauer,EAN_13
55db252f-70a8-4da7-b0c2-484c8445e750,Kreativmarkt Hamburg,EAN_13
55e96a49-7157-43cc-aaa7-9867d37cb05f,Народная линия,EAN_13
55eb9a72-cd1d-49f7-aec1-1f44f6207983,Lina Giorgi snc,CODE_39
55f414b7-b1a8-46f6-97ad-7f4f0867d8a9,EU COVID-19 Rokotustodistus - Toinen rokotus laukaus,QR_CODE
56,Brax,CODE_128
560,Punt Roma,CODE_128
@@ -5492,6 +5518,7 @@ _id,name,barcodeFormat
5afc2de6-6129-43f5-9caf-be3572d65a90,Sisal,CODE_128
5b01f59e-97db-4105-9aab-94f56099fc49,real,GS1_128
5b1da0f0-143e-492d-83a9-ad22957a54c6,Metro Lifestyle,CODE_39
5b502f6e-7c38-4708-ae56-04f97638692a,Баня Стил,CODE_128
5bb5ea85-8952-474e-be53-c5ac11f7428f,Farmec,EAN_13
5bb6dc04-3000-475f-a5d4-ba9427989809,Bimbostore Toys Center,EAN_13
5bf3f149-2217-45aa-b61b-eec9aeedf5d2,Werdich,CODE_39
@@ -5509,6 +5536,7 @@ _id,name,barcodeFormat
5d3de23f-b72e-4920-9e3b-1a413979a779,CityCard,CODE_128
5d426084-854e-493e-a10d-7ce5d34d31fe,Farmacie Comunali Firenze,CODE_128
5d51a06c-3af4-4400-9776-e3458190be87,Parisnail,EAN_13
5d5d4520-ee6c-45ea-b5f1-11282a0673f4,Arriva,CODE_128
5d695da3-f47b-4da8-b5ff-ea9d0fd9486b,Belaton,CODE_128
5d866631-9858-4393-a5cf-eba96ca066cc,Kiwisun,CODE_128
5db03921-3703-40d3-ba27-f7d3ff5a40ba,Prodor Supermarché et Boucherie,EAN_13
@@ -5518,6 +5546,7 @@ _id,name,barcodeFormat
5e18e98b-ad75-426a-a4ac-a80496906906,Beauty X,EAN_13
5e27a7ae-ad95-4cce-b383-85a4eb822eaa,Supra Baby,EAN_13
5e402125-50f9-4de9-8769-ce4e0dc1d1a1,Romaest,CODE_128
5e46de16-6ebf-4d17-933f-2f782df8b3fb,Prima Company,CODE_128
5e6edac6-a458-4488-861c-f8f403f4b1e1,MABÙ,QR_CODE
5ee2ee34-5027-4535-a55f-657c1a092d5d,Lady Sharm,CODE_128
5f01e866-3ef8-46e4-a40a-555594849eb7,ЦУМ,CODE_128
@@ -5532,6 +5561,7 @@ _id,name,barcodeFormat
6,ACS,CODE_128
60,Transgourmet,EAN_13
600,Humanic,ITF
60046ae3-b41c-4a08-a012-d8e921e8aab0,Multaparts,CODE_128
600bf563-b7b2-488a-9e21-0ccc63a67b1d,LAUF!,EAN_13
601,Beauty Alliance,CODE_128
6014a435-c656-4bf7-bcd6-fa46ed28bac0,Окраина,EAN_13
@@ -5554,10 +5584,12 @@ _id,name,barcodeFormat
61,Centro,EAN_13
610,CAA,CODE_128
611,Calgary Co-op,EAN_13
6110d522-b979-46ca-a313-ded4eac7db71,Telecomshop Twente,CODE_128
612,Canada Post,CODE_128
613,Canadian Tire,CODE_128
614,Change Lingerie,CODE_39
615,SCENE,CODE_128
615a7629-0f60-4613-b41a-e1f571f5c20a,Goelia,CODE_128
615ddf35-4934-4442-b4df-54b065184476,Сигма,EAN_13
616,Denny's,CODE_128
617,DeSerres,CODE_128
@@ -5609,6 +5641,7 @@ _id,name,barcodeFormat
639,National Car Rental,CODE_39
63ace5b1-39bb-4486-87a8-692caab2c76b,куулклевер,QR_CODE
63ad5b7e-ab54-45f2-9224-2da0122a21eb,Forum TC,EAN_13
63b32bf3-2e99-4487-bc45-7b70132fe53c,Checkers,CODE_128
63bcf094-bbc1-4caa-adfb-b6e015295f43,Парфюм Лидер,EAN_13
63bee835-2e9d-4656-b7b6-4b9e9a024470,Арт-Квартал,EAN_13
63c87418-cb15-4294-a872-035a03da3a62,Belleplant,EAN_13
@@ -5644,7 +5677,7 @@ _id,name,barcodeFormat
657d61fe-7714-4aed-a3d5-6c718c6e9c2a,EU COVID-19 Vaccinationsattest - Første vaccinationsskud,QR_CODE
658,Thrifty Foods,CODE_128
659,Trade Secret,UPC_A
659c40c9-f997-44a8-b6a8-a29df616c4b2, Alfa-Tec,EAN_13
659c40c9-f997-44a8-b6a8-a29df616c4b2,Alfa-Tec,EAN_13
65e6e477-57a3-41c1-88b2-330a6d0cf8bd,Nobis,PDF_417
65e848d6-edd5-401e-9b12-952a5c6fdf47,Джерела Здоров'я,CODE_39
66,BCF,CODE_128
@@ -5652,6 +5685,7 @@ _id,name,barcodeFormat
661,WestJet Rewards,CODE_128
66104d31-9ae9-440d-b316-0d07a4319af3,Farma Fedeltà,CODE_128
662,Würzenbach Drogerie,EAN_13
662e6cc0-3ebe-47db-badf-b31b626ea70c,The Papanui Club,QR_CODE
66335d92-4622-4334-8384-4a6d5f61f239,Zinger,EAN_13
664,American Eagle,ITF
665,TJX Style+,CODE_128
@@ -5696,6 +5730,7 @@ _id,name,barcodeFormat
687,Thai - Royal Orchid Plus,PDF_417
688,SportIT,EAN_13
689,Foster Calzature,EAN_13
68ac6315-08c6-471d-b2e0-ad42d1a091c8,100 Vetrine,UPC_A
68c2495e-937d-4e71-a4ad-85f066df0339,Jardival,EAN_13
68c69327-cce9-4de8-a062-b895c062ee60,Iden,EAN_13
68d4b527-e419-4346-8078-a4ef07a04f00,Lehner Versand,CODE_128
@@ -5729,6 +5764,7 @@ _id,name,barcodeFormat
6a5ac3f8-04cb-4d14-884f-1231b72228e8,Топаз,EAN_13
6a7b1bc8-eca7-4323-9080-68af9414254f,CastoPro,CODE_128
6a85186a-bfd9-4078-a5da-db1b4e1fb526,Molders,CODE_128
6a8a8971-821c-46ce-a638-1a8585c9dedd,Booking.com,CODE_128
6aa89061-d0b5-46a2-9019-b1cb7146e485,Just Plastics,CODE_128
6aa9bd9a-b099-4997-9fa1-b0a7525c6ec7,AZ Casa,EAN_13
6ab113ff-77e9-4029-9b23-e420eda105e3,Ehrmann,CODE_39
@@ -5767,6 +5803,7 @@ _id,name,barcodeFormat
6faff0bd-9236-41f8-9c67-7b546c68085a,BVS,EAN_13
6fb31971-1cf0-468e-9f85-ebf6133ad3aa,у Палыча,CODE_128
6fb45bab-d4be-49fd-8b58-d841110eb0cb,AL 48,EAN_13
6fb4ec1e-c6b7-4597-82a3-5c8d4d69ad4f,Rachelle Béry,CODE_128
6fe38419-76d2-4b5c-983e-6dbed7822d62,GiorgioMare,CODE_128
6fea059e-d9ec-4063-8ea4-cba5ac035942,L'arca di Noè,EAN_8
6ff46a57-e3c9-457e-bfb4-aa922c4c41b4,BENZ,CODE_128
@@ -5855,6 +5892,7 @@ _id,name,barcodeFormat
740308f3-fda8-4b83-9d86-d13592ef30ab,Dress Code,EAN_13
741,O'STIN,EAN_13
74135c63-c1ab-47b8-8d99-4d9dcf602eda,VOIX INTERIORS,CODE_128
7415ddc5-3d77-410c-a6f8-ab399518a82c,Tradition,CODE_128
742,Reebok,CODE_128
742069df-a468-45d5-8cf6-cc152b4aefaf,Bacher Garten-Center,EAN_13
743,Savage,CODE_128
@@ -5902,6 +5940,7 @@ _id,name,barcodeFormat
764,Васаби,CODE_128
7648aaa6-671e-4396-9e4e-759aa66c9f4f,Bouwcenter,EAN_13
7649e44e-66e4-4af1-a913-87a40c8ae739,Office Centre,CODE_128
764a67a4-8087-41d1-b53a-d73b8380d5cf,Handy Home,CODE_128
765,Вестер,CODE_128
766,Виктория,EAN_13
767,Газпром АЗС,EAN_13
@@ -5934,6 +5973,7 @@ _id,name,barcodeFormat
780bd58f-acbb-493c-869d-63f7a93292f3,Schnitz,CODE_128
781,Кофе Хауз,CODE_128
782,Красный Куб,CODE_128
78242148-6c07-4698-9ec1-56017dc687b6,Ideacasa Mercatone,EAN_13
782b0597-f7e4-4509-ba4b-a9fc35d72b4d,Рада,EAN_13
782f7353-ec4c-49a8-9aac-1f7d28f4cab2,Remix Moda,EAN_13
783,Лукойл / Ликард,CODE_128
@@ -5988,7 +6028,7 @@ _id,name,barcodeFormat
7bd30784-434b-4d73-8dc1-5b5516723eda,Pascal Coste,EAN_13
7bd61c87-b62d-439a-92e9-cc435345cb53,Infinity Fashion,CODE_39
7c138f2e-37f9-46d4-ac65-2b20ff90a629,Nai Harn Gym,CODE_39
7c1b39b5-b938-432e-b0be-3c196320bd37,Checkers,QR_CODE
7c1b39b5-b938-432e-b0be-3c196320bd37,Checkers,CODE_128
7c5a9dd0-28b0-4be1-b53f-cac4246990b4,Марафон Обувь,CODE_128
7c60823a-e9fc-447f-811d-589bf1f95342,Пчёлка маркет,UPC_A
7c77ce3b-02ad-436b-a4aa-62a6d5d583e3,Plainview-Old Bethpage Public Library,CODABAR
@@ -6004,6 +6044,7 @@ _id,name,barcodeFormat
7ce87cdb-4c6b-437f-a693-dca518f7436a,Yo-get-it,CODE_39
7d02542c-fac0-45b5-bc90-d74240715c56,Travis Perkins,CODE_128
7d11f040-b0a2-4109-bdf1-25711d48d451,Consorzio Infarmacia,EAN_13
7d168ca5-9370-47bd-ac3e-bf1e1e26f1ec,RISPAWORLD,CODE_128
7d41888d-cd7d-42ef-bf93-9aeda5ae13f6,Kepro,EAN_13
7d4345b8-448b-4e12-a1c5-c6e031de2352,Nove25,CODE_128
7d520d1c-611e-4e81-9937-41a9828e6b08,EU COVID-19 Vaccinatiebewijs,QR_CODE
@@ -6014,6 +6055,7 @@ _id,name,barcodeFormat
7da65ee3-d140-469c-b3ee-217272ac98d4,Kippie,QR_CODE
7db0f727-13b4-48c1-8618-550155a878a2,Imperial Games,CODE_128
7db8a067-1c33-4cd9-9706-31a2592f719a,милый дом,GS1_128
7dd14421-2fe6-494f-889b-dd8920f61091,Mastro Tortello,QR_CODE
7dd1b9ca-2a5b-4f3c-8c10-8bc216ff5d2f,Sokolov Jewelry,CODE_128
7df2728d-3dc9-4724-8756-965e937674e2,Marriott Bonvoy,QR_CODE
7e3da299-047b-4981-8ff3-e5355c7289b2,GIROPHARM ,EAN_13
@@ -6040,6 +6082,7 @@ _id,name,barcodeFormat
8045996b-082d-4333-b631-54dc992ebef0,Coop,EAN_13
805,Старик Хоттабыч,CODE_128
806,Stockmann,CODE_128
8069f84c-3b04-4b0a-87fd-d89230547e8b,Happy Pets,QR_CODE
807,Сток-центр,EAN_13
8070cf0a-9721-4fe7-b010-6fdca61349fc,Epping Plaza Hotel,CODE_128
8077e001-6db6-4796-bd82-6716ea5e116e,Palace Cinemas,CODE_39
@@ -6061,6 +6104,7 @@ _id,name,barcodeFormat
813f818a-e99d-49f2-af6e-653a9bcaab09,Bazar Avenue,EAN_13
814,ФотоПлюс,CODE_128
815,ЦентрОбувь,EAN_13
8153abb1-248f-4af9-a7f8-dd83cdacdc7f,TEKBIR MARKET,CODE_128
816,ЭКОНИКА,EAN_13
8166ded7-42b6-47b8-a5dc-032954e82db7,bugatti,EAN_13
817,Эстель Адони,EAN_13
@@ -6071,7 +6115,7 @@ _id,name,barcodeFormat
81c5ea7b-aa89-47f8-a22e-297207616f0b,Taurus Sports,CODE_128
81dd0d8d-4613-400e-8cbd-b2189a88a22d,EULIVIA Apartments,CODE_128
81e7b9b8-826c-4f9e-9c61-7568a454afa5,Industriya Krasoty,EAN_13
82,Desigual,CODE_39
82,Desigual,QR_CODE
820,Air Miles,EAN_13
820b5de7-a25a-4d30-ac74-3a70fe682bfd,Мир Электроники,CODE_128
821,Ajax Amsterdam,CODE_128
@@ -6135,6 +6179,7 @@ _id,name,barcodeFormat
848,Lake Side,ITF
848939e3-7e55-40af-a46a-a0b0b434bbcf,Планета ZOO,EAN_13
849,Le Ballon,ITF
8495d3db-8532-4bef-a58f-3a77479ff134,C&A,CODE_128
84a82d8b-1d4f-4673-b1e2-b115bbe5b618,Soul Origin,CODE_128
84faf272-0010-4f93-8aa1-154caaa11ac2,Pro-Duo Nur für Profis,EAN_8
85,Diamond Club,CODE_128
@@ -6194,6 +6239,7 @@ _id,name,barcodeFormat
87737e38-8052-4fdc-a90a-3511b9157481,PETS&CO,CODE_128
878,Jula,CODE_39
879,KappAhl,CODE_128
879a9dd3-45e3-4633-9376-9183fee6ab3e,Bernardis Marketplace,CODE_128
87b3f071-9af7-4163-b512-679717b696ac,Caucciu,EAN_13
87b925d1-4d9a-47e3-9e54-deaef1981b77,Impfausweis,QR_CODE
87d141a6-cac3-4d39-9357-a6365850e57f,Coeur de frais,CODE_128
@@ -6247,13 +6293,14 @@ _id,name,barcodeFormat
8a0dca6e-de83-4e48-a42d-a3009da56653,Park 'N Fly,CODE_39
8a25357e-ebc3-4ae1-b7fc-a10ff3b1abd0,Конфил,CODE_128
8a53dffe-df27-40f0-b2ff-58e53add0b3e,La Cartissima,EAN_13
8a59226e-9895-4924-8616-345549a56aec,Munhowen Drinx,CODE_128
8a702666-368b-48a5-96fd-4e10aac5ae7f,Brooklyn Jeans,ITF
8a8095fe-f449-4242-83a1-0d3055874233,Little Sparrow,CODE_128
8a9c58f4-4db3-4aef-8cf0-d2caa0fcc4d1,EU COVID-19 Potrdilo o cepljenju,QR_CODE
8aa58d48-ad60-4b6d-aa1d-054f94b6453b,Granola,PDF_417
8ac5093b-8fc4-49d6-b271-dd845252b60c,Idea Verde Maschi,CODE_128
8ad83ece-2e55-4937-80c9-04584c598439,COM,EAN_13
8b0f2db1-ae97-4af8-8e82-c4067a4ac322,Toyota,CODE_128
8b0f2db1-ae97-4af8-8e82-c4067a4ac322,Ma Toyota Extra,CODE_128
8b398aea-e5bd-484d-bdf2-5030bacf9157,Thèoria Milano,CODE_128
8b4c413c-effc-4912-9a34-6baea2972199,Karla,CODE_39
8b653178-4f49-4f73-9091-7763e039b539,Aléa Déco,CODE_128
@@ -6304,6 +6351,7 @@ _id,name,barcodeFormat
903,W.KRUK,CODE_128
904,Galeria Wileńska,UPC_A
905,YES,EAN_13
90574104-b485-489f-9872-3d32b7e07c59,America Today,CODE_128
906,ZiKO Klub,EAN_13
9062c2a3-eeb1-4797-afb6-41a0394bb481,Městská knihovna - Česká Třebová,EAN_13
90705634-f152-487c-97eb-27e1728285ef,Миртек,EAN_13
@@ -6332,6 +6380,7 @@ _id,name,barcodeFormat
91915513-4447-47b0-93ae-d489f6ee3a97,Chrome,EAN_8
92,Düsseldorf International,EAN_13
920,Drummond Golf,CODE_39
92063e91-526a-4327-ba87-f487bfaec724,Rue du Commerce,CODE_128
920c9bd0-d85c-42c6-9301-fc1ddedd38c2,Idea Casa,CODE_128
920ce49c-9728-41f1-b9e9-9f9d06f53d92,Русские Самоцветы,EAN_13
921,NWZ,EAN_13
@@ -6368,11 +6417,13 @@ _id,name,barcodeFormat
935ef7c3-a93c-43e1-9abd-075bd05c3051,Форне,EAN_13
936,Orlen - Vitay,CODE_128
937,Wojas,EAN_13
937cef67-4a01-42fc-9f51-0a3f3210a686,Idea Città Company,GS1_128
938,Sizeer,CODE_128
939,T2 Tea,CODE_128
93a8cca4-73cd-405c-8142-359a41127416,しまむらグループ,CODE_128
93a9836f-0984-45ee-97c6-3e6675a34b11,Ludwig Beck,QR_CODE
93b76ad4-76f3-4132-8fe5-972f6ca5eb8a,Київфарм,EAN_13
93bda8ac-884e-4db0-ab72-09e12f86a3d2,Naturino Family Store,CODE_39
93c53a6b-2efb-4167-aa67-c4905f1692b1,ВелоДрайв,EAN_13
93d1d2d1-801d-4293-a1f1-cdf314ba341a,Nilufar,EAN_13
93d42408-df2a-42fd-a10c-9f9c725e8000,TuttintiMO,UPC_A
@@ -6420,6 +6471,7 @@ _id,name,barcodeFormat
962,Монро,EAN_13
963,Jeans Symphony,EAN_13
9630a33b-0869-4246-91db-80f928bd7b3a,Harfa Sport,EAN_13
96394b6b-b91f-4fbd-991c-242b7189e0b0,Shoprite,CODE_128
963a19ff-687c-434a-a960-c5e9c6d27c1c,La Cage,CODE_128
964,Спектр,EAN_13
964bee1b-84ac-42cb-ac20-b182e043a983,SIR,CODE_39
@@ -6469,6 +6521,7 @@ _id,name,barcodeFormat
989,Toys Center,EAN_13
98959593-9b79-4d3a-98bf-fd965d99825e,ташир пицца,PDF_417
98afc021-2350-4686-89de-03bc9bb686a4,Coeliac Australia,EAN_13
98c597ea-20b1-4d9e-a6ae-0ed84e0f591d,Juttu,CODE_128
98d5694e-ee5e-4f60-9a32-0ac43d66f54f,Vaprio,CODE_128
99,Ernsting's Family,ITF
990,Nando's,CODE_128
@@ -6530,6 +6583,7 @@ _id,name,barcodeFormat
9dc29233-9613-4851-8630-15b7b39222c3,Kasztelan,CODE_128
9dc3174d-0990-4d88-a4d6-3c7a6431160d,Янтарь,EAN_13
9dc63493-8062-498a-99be-db701dfc03a4,Farmacia,CODE_128
9dd46ad3-336b-4af2-9cbc-4526140558ef,Kiriel,EAN_13
9e02cf7a-da20-428d-a363-952f7a3fb25c,Kéddo,EAN_13
9e82e20d-4da0-46c0-bb94-c2ba7b9b3d74,Индустрия красоты,EAN_13
9ec73fed-0974-4b7c-98e0-27aba810e8e1,Spielwarentraum,CODE_128
@@ -6541,6 +6595,7 @@ _id,name,barcodeFormat
9fd0773f-f0ee-476c-8351-c02fb65b9360,Plus Market,EAN_13
a00761f0-abf1-4690-a95a-b18e41c527d2,Pet and Pool,CODE_128
a017f67b-3483-4587-97a0-2c5c4af6834e,SchuhMarke,CODE_128
a0284158-4eaf-4891-9768-f93e1049413a,Десятка,EAN_13
a04e9cdb-caec-4f4f-bf96-9e40fd90cb09,PharmaSave,CODE_128
a05edd71-80dd-4e23-87cf-5df65a193281,Andre Tan,EAN_13
a08ccd9d-76ce-4245-8582-24d2840ff7b9,Chanel,CODABAR
@@ -6562,6 +6617,7 @@ a238f465-ff8e-4077-b5fe-a1f250ed90d9,BJ's Wholesale,UPC_A
a2756aea-2ca4-4870-811e-100871fdb73e,Pratiko,EAN_13
a29668f6-dd2e-4281-917e-49e28ebff6a1,Koloria,CODE_128
a2b352d9-5d5d-4080-9f52-eb6a798aa6c6,Ferlenz,CODE_128
a322cee9-b5c6-4384-a365-c970f335cc5c,Erdkorn,QR_CODE
a323e0ec-2b0b-4a82-a950-11f7516f2584,OnePass,EAN_13
a36556e0-433a-4b16-b72c-4751a386d707,EU COVID-19 Impfzertifikat - Erstimpfung,QR_CODE
a3828047-ff01-4eb4-be10-6e4d635ca029,Leffers,ITF
@@ -6590,6 +6646,7 @@ a6060858-7d83-4f60-8318-b80635013f45,Detershop,EAN_13
a645973d-7e87-46ab-8c77-0380ca06ae32,Perth Zoo,CODE_39
a65e3023-fa06-47c0-bfdc-4dc79f54c825,丁丁藥局,EAN_13
a69154f5-16a8-4543-bb49-b7a68bb3d301,EU COVID-19 Potvrda o cijepljenju,QR_CODE
a69d8b79-a0e7-422b-a149-64c66b23aea4,Plus More,CODE_128
a6aa66ba-00b8-4922-b628-98cea029c9e2,Coop,EAN_13
a6ab3df9-10bc-47df-bed4-839fe1e908be,零食物語,CODE_128
a6b2c527-afbc-4e71-ae24-e5e5e270d474,Pappert,PDF_417
@@ -6599,6 +6656,7 @@ a7634961-1509-4902-9b25-714ef789e926,2HB,EAN_13
a78ee36a-3682-404f-9c83-307c1a6b421e,Moda Lina,EAN_13
a79b9a92-9821-4824-978e-1a257abfbaff,Wormland,CODE_128
a7b3e795-4746-45a4-9c80-d331fb051632,BonBon,EAN_13
a7e263c3-75fd-4ac2-98ea-0e7b3e425a74,SUPEREFECTIVO,CODE_39
a7f1c8c5-2895-4a74-98ac-9740e7c59922,Coffeelat,QR_CODE
a8090907-7e2e-4038-8831-0c72adaa0664,US FashionStore,EAN_13
a83b00dc-1bfd-41b6-9fee-3c7f5d33fef5,Baden,EAN_13
@@ -6628,6 +6686,7 @@ aaa82398-d78f-46d6-bfb5-a40843e94cc8,CLEVER WEAR,EAN_13
aabf2ea4-170c-42e4-906b-ea1253ebf580,Родные масла,EAN_13
aac03de2-6c97-4bd9-8d72-a7bba15bea6d,La capsuleria,EAN_13
aae4f87d-ee8c-4ff0-9cb2-88c478b7a0dc,Bonjour,EAN_13
aae6aab3-e5fb-47c1-b6c1-c30c3f386793,Netto,CODE_128
aaf65c10-a78e-4b18-8c79-371d5cdef871,La Provençale,CODE_39
ab0c09c4-d1cc-40a4-8b46-f101dc376655,Trade group SMIT,CODE_128
ab0c5857-5b3d-4ac3-8910-ec6b8c49a0dc,Three,EAN_13
@@ -6636,6 +6695,7 @@ ab245924-7af0-4996-84a2-f19a6b6a62fa,Hollister,CODE_128
ab37459c-4368-4684-9ffa-3ac84c69e87a,ДомДоктор,EAN_13
ab4a36d9-9a11-4575-a6cb-1bd053c6e00f,СБА,CODE_128
ab6de5de-ea68-47d6-87ad-884e63f63f48,EU COVID-19 Удостоверение за ваксинация - Първа ваксинация,QR_CODE
ab73cd57-b075-425f-afe6-868e56207a42,Rewe,QR_CODE
ab7a0e82-ad67-40fb-a85f-83cdd10fb44a,Depot,QR_CODE
ab9d5459-25c3-4040-bff0-b7804375065f,Забіяка,CODE_128
aba38815-1a55-456f-84b6-0321d8d34102,Андреич,EAN_13
@@ -6676,11 +6736,13 @@ b000bec7-fe1d-4a01-8134-7e93c72fcf2c,фаэтон,EAN_13
b00fc66a-460d-43c9-a5f1-86b0a92b125a,Дачник,CODE_128
b0210273-794f-427b-bba1-c940a7aac7df,Helen,CODE_39
b0382f02-57d7-4d7a-a3f1-25ea85507c64,Laser Game Evolution,CODE_128
b059eafb-017b-49f0-9d74-62889d8ee777,City of Whitehorse,CODE_128
b063caac-e875-4475-8ae6-09a0f979fb85,CLUB SALUTE,CODE_39
b07244fc-81d3-492b-a9e5-a813a57eea9c,Faciba,EAN_8
b07e5b4d-d658-4ba6-9305-d497af7a19ae,Nijhof Schoenen,ITF
b086ef99-b8b8-45a9-80f5-33a4cb01aba8,spudshed,CODE_128
b0973d67-75d0-45e3-9f17-0f4cb80a4824,Motozem,CODE_128
b0cfcd52-01a5-4533-8970-6e402e52bcb0,Brikon,UPC_A
b0e24b5a-4034-44b9-b22b-2a008d0bcde5,Eurodì,CODE_128
b0efcdb1-872a-44f0-961a-a97ee45c7ba8,Porsche Group,QR_CODE
b0f4291f-8d68-4071-8d10-cc212b4495cc,Iper d'Oriente,EAN_13
@@ -6707,12 +6769,14 @@ b2ab5d25-1981-4120-be54-86ccda399861,Vitulano,UPC_A
b2b50b52-83c6-43d3-bb13-008544e2cfa5,Turčianska knižnica,EAN_13
b2b7d24b-fdbc-468b-be59-b189d4d5fdf9,Het Certificaat B.V.,QR_CODE
b2c03313-9621-4233-9b61-5faa8d2c66e0,JILL STUART,EAN_13
b2e520a4-c21a-4ba0-822b-c9ac5fe79f4d,BLUME2000,QR_CODE
b2f90e3a-4669-4cd4-8c31-65fbb91dc26e,Advantage Pharmacy,CODE_128
b31982e9-7c22-4e92-8210-e08eaa123727,Linberg,EAN_13
b334927e-9574-457c-9a1f-1b7dd5928304,Farmanoi,CODE_128
b359db35-9be6-4369-b796-04b47b4044be,Signorizza,EAN_13
b36ae43e-8a9c-41f7-8c54-d5ae673c94f5,Bio&Co,EAN_13
b43d0b6b-db53-44a7-b518-30cace59c222,British Garden Centres,CODE_39
b4606b36-853e-4014-9524-fc07fa6e1d4a,Cantina Rauscedo,EAN_13
b4663d4f-dd9f-43cc-ba0e-4ce9b0beccd2,Пивлавка,EAN_13
b4725b6c-105f-4898-a8d5-ba426ddf9508,Yamazaki,CODE_128
b472df21-8f40-44ff-a11f-bbe1d76d6d58,Company Shop Group,CODE_39
@@ -6720,9 +6784,11 @@ b497667e-0c92-4db6-9579-63bbe35af881,Праздничный,QR_CODE
b4b5583a-3d0e-458e-b800-3b43968a8421,Pirex,CODE_128
b4c412d7-ad0b-4afd-aed8-0cf113f445ca,Аквафор,CODE_128
b4e4e61f-8605-45b6-b672-fce67898ba4e,Schuhkay,EAN_8
b4f37441-b068-443f-bbfb-fca23c9f5eec,Tuttigiorni,EAN_13
b4f4c3c3-4ad3-4431-9048-1d6b0e47a649,Tezenis,CODE_128
b52836be-a999-4bf8-ba0b-5f2b9b96a509,Youth Hostels Luxembourg,CODE_128
b54963ea-a217-434b-b0fa-e8114fd6b999,Пинта,EAN_13
b54ed01d-e46b-4f24-8ce9-e08f624f2ddb,IGA,CODE_128
b5656988-55fb-46c8-91ab-24a5b8422549,Moja Starówka,CODE_128
b5695b84-a5cf-4286-87ab-afbe9368be1f,Tulipes,CODE_39
b5dc4188-75d6-4cf1-b7f2-b0e85a57bc9a,Boulangeries Maison Toulorge,CODE_128
@@ -6757,6 +6823,7 @@ b9c4e2bd-88ee-4345-b0c4-3828e076637c,Pro-Duo Exclusief Professionals,EAN_8
b9f36613-ed74-441e-abce-66d465b83594,Accademia Italiana della Cucina,CODE_39
b9f3eacc-e6d9-43e2-93f0-a1e63221b1fe,Più Medical,CODE_128
b9fc9d9a-da0e-4fe2-82d8-5d6672263b4b,Kačka,CODE_128
ba063e76-f5be-4e98-a549-7040a825caf7,Trendevice,CODE_128
ba0d23c2-0030-4b68-9bec-6daf6c0db596,Zoomarket,CODE_128
ba119be5-7382-453c-93be-625c555aec84,Vitaminas,CODE_128
ba5aca20-b0fd-417d-8739-ba9b347c8fff,Клиника ЛМС,CODE_128
@@ -6822,6 +6889,7 @@ bfbe8661-ae7a-4338-bb37-fde8cd6c57a1,Хмель и Солод,EAN_13
bfcd1bbc-3671-4a2b-99d4-8195c5246644,Metalmark,EAN_13
bfe5aac8-ea2d-41e0-ba15-af949e5437d7,Каприз,EAN_13
bff24292-b2e3-4322-9462-d5ecc80ce044,Halfords Motoring Club,QR_CODE
bricoman-it,Bricoman,CODE_128
c03f0f47-ce09-4bf1-95f8-c1d0c6f1a8ca,Coop,EAN_13
c043ef0e-49a9-4f10-877f-974247cf0f16,IperBiobottega,EAN_13
c0712c54-a6a6-4695-b9ba-4f5a296b66cf,Apothical,EAN_13
@@ -6871,6 +6939,7 @@ c51b31d2-056b-41a0-9347-c4d02375df01,офисмаг,EAN_13
c51c692c-9e90-48fb-9047-38d3bb7fec2d,Мясницкий Ряд,CODE_128
c53f804f-29e6-4dc0-9f66-0b9b016cdade,Möbel Borst,CODE_39
c54a0027-fd79-457e-80eb-e73e1332e3e9,Ni Hao,CODE_128
c57001e2-db2b-4f15-8c49-29c6502a86e8,Underwood Meat Company,CODE_39
c5846a8f-687a-4de9-a5b5-b575488ac84b,Radhe Wholesale & Retail,EAN_13
c59fc214-7895-40fc-8f94-9d1d800b66d2,Conradt,CODE_39
c5acc06c-0b7d-4e4d-bee3-2134e2fb3b9c,Belles Fleurs,EAN_13
@@ -6910,6 +6979,7 @@ c9231cc7-92f2-447c-ad84-8d167c23e9cd,Zwitserse Apotheek,CODE_128
c925f293-54ee-47ba-ba48-792945c5fa94,Смайл,UPC_A
c9295edb-4acf-4e21-b931-d07d1b97e9be,Weingärtner Gartencenter,EAN_13
c935a5b9-03f1-4194-8aa2-39545b376065,Alpina Intimo,CODE_39
c94a90ff-4118-4310-bcf2-588463110b83,knihovna Rosice,CODE_128
c964ff0f-5ac9-4976-967f-a55c7ec72e14,Mega Pet Warehouse,CODE_128
c998f7d2-6403-46c5-ba21-270195e61cd3,MAX & Co,EAN_13
c9d387cb-7a0f-492f-a18d-f4d559ccbade,Информат,EAN_13
@@ -6921,10 +6991,13 @@ ca4944a1-3892-4803-8b04-b72cd996511f,Diadema,CODE_128
ca650de4-55cc-4df6-8994-3378274bebf5,Moby Dick,CODE_128
caa55951-513c-4dca-b0bc-3cb80d85e4f2,PANORAMICO,EAN_13
cab2ae0e-10bc-4c58-b159-59f4e8566ca7,Hawkesbury Library Service,CODE_39
cad853d8-b9fa-43d6-b37d-39274a571269,Harmony Beauty,EAN_8
caddfc56-1d2a-454c-bece-1516b13fa249,Millstream,EAN_13
cae4d233-caae-43ff-aaba-affdc99c2d98,ALTERNATURA d.o.o.,EAN_13
cae69560-d7e6-4cb7-9ac5-95199c15f9cc,Blumenmarkt Dietrich,CODE_128
caff4297-2ae6-4315-9329-614c8510eb7f,Вместе Выгодно,CODE_128
cb03988e-5063-4f48-aef2-9f959f9771a2,DVV,CODE_128
cb12d304-17dc-45ba-be1c-5602237320ce,Vero Moda,QR_CODE
cb1f1114-d1ea-4987-badc-7194d1ab1ca8,Zahradní Centrum,CODE_128
cb4ead90-a2f7-41ba-80eb-d4970bed83bd,A-Kaart,CODABAR
cb7b9237-0c2d-437a-ba38-fa6decca977e,萊爾富,CODE_128
@@ -6947,6 +7020,7 @@ cd121cb8-988c-454f-a4ac-10365bf4aa6c,Shop Santé,CODE_128
cd26930f-c1ac-4543-a23c-0b90cfa0b1f7,36.6 Здоровье,EAN_13
cd38f71a-1a0a-4ba7-ac1d-43974fd42e1a,Gel Market,EAN_13
cd73cbfb-68f5-4d67-9411-310695558c6b,NKC,CODE_128
cd840f28-f17c-44ed-9ec7-15b48aa2f0e1,Knihovna Matěje Josefa Sychry,EAN_13
cd9d6482-a7dd-4283-a776-f0982ade57a5,Biraghi,EAN_13
cdd777ae-6fa4-458d-b7e5-f7c18fff857a,EU COVID-19 Vaccinationsintyg,QR_CODE
cdd87d70-3e73-48a2-a88a-5e1083e41d0a,1000 мелочей,EAN_13
@@ -6968,7 +7042,9 @@ cf4f5874-aef4-492c-ae9c-b47cb2f14224,Jardinerie Loiseau,EAN_13
cfce4667-ff5d-44f0-8ba7-fbc44bbf2cb5,Orange Club,CODE_128
cfd15fb5-1bac-455b-a5f7-b808390fba06,Сакура Суши,EAN_8
cff8ca3d-3620-4098-9b8b-e181f84f6ec8,365,CODE_128
d0153291-afc6-4d0f-8120-74c0b321434a,SA Guild of Actors,CODE_128
d0540b51-9716-4d59-bc2f-1582b044c029,Wedding Price Card,CODE_128
d05b520c-091a-4a9b-84de-689484927109,Lotto Niedersachsen,DATA_MATRIX
d0a04b4f-df54-4fcd-b410-87ea5d0986aa,EU COVID-19 Očkovací preukaz - Záber na prvé očkovanie,QR_CODE
d0b9a6b8-f724-4fe7-8195-e810297505af,Chocolaterie Albèrt,EAN_13
d1018675-b1b2-44bc-91b6-a985d744836f,La Sirena,EAN_13
@@ -7004,6 +7080,7 @@ d403852e-7683-49f0-9de5-6e1ec5ac842d,Andreas,CODE_128
d4115422-7d2e-4001-9c49-4c1353c8b88d,Secom,EAN_13
d44c1355-2941-4393-aeb8-1a7ad7122f67,HUALI MARKET,EAN_13
d4502068-af6b-43ab-b9a5-46dc1899e22a,Ябко,EAN_13
d4517693-3f1c-45a6-86f2-d60ad19d04e9,U Baristu,QR_CODE
d4934c41-3cae-40dd-bd5c-2ca88bdcf9f5,Bau-Buy,EAN_8
d4b67cb7-cfbf-4bac-8711-2088b8592e5f,Wara,EAN_13
d4e44512-0ac2-4d1f-8603-01cd0497416c,The co-operative,CODE_128
@@ -7034,6 +7111,7 @@ d6eb202f-ba2f-4253-8f5d-1dce44d13bef,Канцлер,EAN_13
d71e4888-dd0b-4aac-ae5b-937b17ee4149,FQCC,EAN_13
d7893d3c-c704-4daa-955b-a97f061d0138,ВАБИ САБИ,CODE_128
d78fc335-cab2-40d7-a56c-333f568b36b4,социалочка,EAN_13
d7959c14-98b1-4187-9088-494d1a7c5f9f,Canningvale,CODE_128
d79a1500-206d-407a-b111-724b898aa154,Sportsman's Warehouse,CODE_39
d7a18a8f-32b5-43f5-8290-5caf4297aaf8,Halfords Colleague Discount,CODE_128
d7b8deb4-4006-4223-9600-331458fade3d,Пиватерра,EAN_13
@@ -7100,6 +7178,7 @@ dema-be,DEMA,EAN_13
df2f73ec-a3c1-4169-b47e-4742bcab704d,Digizenz,QR_CODE
df3228e8-78d0-42c7-8e45-30089e5267ea,Эдисон,EAN_13
df53a52a-320b-41ce-8ca0-92da86fcae0c,Koutný spol,CODE_93
df5ad302-ae2d-47db-b9c9-b5e030d3b553,ALDI,CODE_128
df62dc4f-b31a-4615-a289-94410da0ce7b,Melkior,CODE_128
df668825-ed7c-4f05-b74b-47ec6daa69f0,Breakers,CODE_39
dfc5ba69-483e-46ab-8951-3afc7c6d7460,Chaussexpo,CODE_128
@@ -7112,6 +7191,7 @@ e0491f99-5f5b-4bfa-bb1d-f7cfe688ca26,Хмельная Миля,CODE_128
e0663514-cb9c-413a-ad94-8b83dde796f8,Hommy,EAN_13
e0b022eb-bc2b-4553-8345-5869e4f644e2,Life 2.0,CODE_39
e0b2fcbb-e302-4a5e-aa4b-3991fcee7831,KanclerCom,EAN_13
e0d0863f-c345-4e3d-baf7-853414056795,Sport 2000,EAN_13
e0db8778-d9a2-4b6c-bece-1b2c4bef11c0,Everyone Fitness,CODE_39
e0eadec9-539e-4316-b9bd-9e29d59c1abb,Containers for change,CODE_128
e132948b-f6a2-44cb-b0c1-d9366151a0e2, BSTRONG,CODE_128
@@ -7146,11 +7226,13 @@ e435e3ee-a81f-40f8-86be-2def0a610ac1,Спорт-Марафон,EAN_13
e4561f48-5c68-4c2e-88ea-7eeb531a8b41,Lubo,CODE_128
e456ceeb-d76a-4684-9e2a-54935e77daa5,Tendenze Calzature,EAN_13
e4dfacd9-9513-4231-b09b-51af53151edd,Дворик,EAN_13
e4f5270b-5a69-41a3-a39e-e3e7e4460ddd,OSCARwash,QR_CODE
e4f54b47-0238-4fd6-9109-d5ce424981c6,Фламинго,EAN_13
e5059f27-dc93-4296-b4d5-1162b692c5ec,Северная Звезда,CODE_128
e550a9a1-c25b-4658-a9fa-38764c584693,Mon Grand Plaisir,QR_CODE
e55b3ee0-ac34-480c-8fd3-c63c3a6ae28c,Муниципальная Аптека,EAN_13
e55f98ef-9258-4eb7-97fb-7e97d2aacdaa,COOK Kitchen,QR_CODE
e5616ded-48e7-45d7-b706-a82ef5ab9667,OROCASH,CODE_39
e569e534-de02-4cde-a15e-ee5f3e70794e,Partyland,CODE_128
e570f1ac-a109-4473-8644-9b6daf701d8d,najlepšia lekáreň,CODE_128
e580263e-726d-4768-a756-1cec4966dbb6,Lower Plenty Hotel,CODE_128
@@ -7163,10 +7245,12 @@ e6b0d8c0-2e2b-4d2c-9c3d-4420ced94877,Багира,EAN_13
e6b4a59b-4d9a-42c6-aae3-5baf468c1999,Evolution,EAN_13
e6c68ae5-12f0-4c8b-b5ca-8f725874c704,Полушка,EAN_13
e6e830c8-16b9-4382-9b84-93dca76ee66c,домаркет,CODE_128
e6edbb92-d988-4bf3-87f8-e9684b5a3983,UFS Dispensaries,CODE_39
e6ece7bc-ac39-45c6-b4f3-c225719c3a0e,Mikado,CODE_128
e6edbb92-d988-4bf3-87f8-e9684b5a3983,UFS Healthcare,CODE_39
e6efc01d-98bf-478e-a916-f51178a01690,Erborian,CODE_128
e6f32c21-af1b-4da3-9c8e-36757cccde3b,Sally Beauty,CODE_128
e6f9e7a3-2b1f-4ec7-8c99-8c5d16988f56,Iндустрiя краси,EAN_13
e71a67d2-6898-4a05-91dd-7ae19095129f,FMBrikon,UPC_A
e71b01e0-cdf1-4f6b-bee6-d7e2fc9b3a81,Walder Schuhe,CODE_128
e760dd3f-aeb2-42a2-bf38-5866c061c2e9,Cash Piscines,CODE_128
e79c474b-4ee0-4885-a9eb-7349bdc2bfc9,KIA,CODE_39
@@ -7200,6 +7284,7 @@ eaacfd6c-54dd-4bbd-81a2-0394b7b57496,Kmart,EAN_13
eab09679-f885-46a1-8f96-3f82ea3b9d82,Niké,ITF
eac387cc-ae67-4874-b420-12dae0150abc,Woss,EAN_13
eacb1c97-e7c2-4ed6-bf64-84db244fbdd5,Медтехника Ортосалон,EAN_13
eacdf92e-6601-437d-af01-15156a3ee199,Barossa Co-op,QR_CODE
eb01f161-6d42-4ae9-b381-2ca0be34cd6f,PiùMe,CODE_128
eb2cfbfc-1d25-4ff7-9eb6-743a74c302c4,Клеопатра,EAN_13
eb32c9d7-80b8-4147-942f-3b94ad7dd8fd,Brico Pro,EAN_13
@@ -7253,6 +7338,7 @@ ef56f2fe-b4b0-4639-a0dc-db4c6bd01d06,7я,QR_CODE
ef8b1a62-353b-44e3-bfba-b1331b6509ab,Evoluphar,CODE_128
ef8f92d7-a5a1-441e-8e91-133b64da57e5,Anabel Arto,CODE_128
efdfda06-b4ad-4bd6-ad00-41d6ab9aeaf8,Profi Center,CODE_128
effbec31-0ed6-4eb3-969b-17d99d340d78, Sedici Piadina,CODE_128
f01c0047-5952-4805-a48b-4d455d833777,ХозСити,EAN_13
f032c0d2-9f71-47fa-9574-8970a917b63b,Brianza Biblioteche,EAN_13
f0637a9d-47a8-44a0-8342-c409b6c55b6b,Baby,EAN_13
@@ -7269,6 +7355,7 @@ f1843eba-2bcd-49dc-be2c-1444ff5cfd91,EU COVID-19 Očkovací Průkaz,QR_CODE
f1df75b9-1d7a-4cba-9e9d-f4411f4ea48b,Индейкин Дом,EAN_13
f1e508d1-b901-45ba-9ace-b98e96c8fd38,Dalbe,EAN_13
f1f1c15f-8a75-4a18-9b01-251778c8fb45,Optika Anda,CODE_128
f1fe28ce-0c9a-4b64-a455-c9f14c3fa2be,PME Legend,CODE_128
f2153289-2b50-463f-91d4-37ceb62f304b,Колесо2,CODE_39
f21a2eea-3a15-4765-8ea6-3f1ec10fdd87,EU COVID-19 Vaccinationsattest - Anden vaccination Skudt,QR_CODE
f2292778-e0fe-4925-b939-b4716342fa44,Tread & Miller,CODE_128
@@ -7283,8 +7370,10 @@ f2a92584-5ef8-4220-b0ca-7aa48decd2e4,Artex Ieper,EAN_13
f2b9fa76-c78f-4d2c-821f-70678bc8d4d5,Parfümerie Becker,EAN_8
f2c8f722-9c5f-423d-9989-deca7901aa11,Poetry,CODE_128
f2d3f68c-7b77-4464-91d2-3162e74bea48,Neinver,EAN_13
f2dc6f84-01cc-4e13-aec2-2ce88367a27f,Ljekarne Prima Pharme,CODE_128
f3189d64-dd39-468b-872d-3bb70e4d416c,The Watergardens Hotel ,CODE_128
f3287ab2-0308-42f8-92dc-3147456a4a69,НУЖНО!,EAN_13
f359407e-234b-4fbb-af07-f3b293a51bbb,MaRinella,EAN_13
f35a3882-27b2-417d-8093-e87f8f25509a,Первый Семейный,CODE_128
f3852d29-47fe-4528-83cd-5ae7b31fdb0e,Kraus,PDF_417
f3e63893-802b-4e40-9480-f3fbfda0a3e4,Аптека живика,EAN_13
@@ -7297,6 +7386,7 @@ f49e49df-1b1c-4e19-994d-3a56c693d91c,GROSBASKET,EAN_13
f4aefdf7-e66f-4980-a0ee-7e6f1afcc8df,Color Line,EAN_13
f4b16522-478d-4c84-bfa5-e0825ebf4917,bonVito,PDF_417
f4d0cac3-70a0-43dc-a204-fe5fd9ab428f,KüstenCard Flexi,CODE_128
f4e09fa3-b712-4be5-915b-002082002246,Club VW Suisse,QR_CODE
f5002bd9-8e95-4c11-8a7c-e3d2fae42fe3,BCAA,CODE_128
f5356dd8-8762-4f36-8c50-f7383eccb840,Twój Market,EAN_13
f546e937-86b4-40eb-98cb-9a348d5dccec,МаксиФлора,EAN_13
@@ -7332,6 +7422,7 @@ f8f0bd64-d1ae-4560-9c22-0eed805f2016,Дивный Колибри,EAN_8
f8fa2370-261e-4e19-ba9c-46cd33ead64d,Agri Sud Est,EAN_13
f90691bf-2879-4424-b2d5-5c09ee9ff700,Кроха,CODE_128
f915ed01-85f9-4a61-921b-0d33eaf6fd23,ЗооОптТорг.Рф,EAN_13
f9223231-26b6-4f86-9d2e-5756488c2e74,Jack & Jones,QR_CODE
f93e7a30-4351-47e5-b8b2-3a9546ad9bb8,BOTICINAL POWERSANTÉ,EAN_13
f940a1b8-c04b-4541-b307-7fdc1fa8eb91,Veggie Grill,CODE_128
f9447f67-140e-402d-9a27-e7c11cefebda,Eleganza,CODE_128
@@ -7350,6 +7441,7 @@ fa009005-250b-4994-a6ad-8043b28634fe,No One,CODE_128
fa11b2c7-a768-4d4b-b03d-c845df6cb341,Terra Viva,CODE_128
fa1670c0-1713-44f0-b57d-902b278ba741,нива,EAN_13
fa24b789-4774-41e1-8a52-216efc9de8ba,foodmaster,QR_CODE
fa3bdecd-2216-4d2b-b39d-fb14681f62fc,Fusion Gyms,CODE_128
fa5593eb-2f35-4a7f-8c69-1c4a726759be,Форум,EAN_13
fa7407ee-0ddd-4727-bfc7-05c206c159d0,Toto,EAN_13
fa7f3968-0cba-4adb-b1bb-fb2083b98b2f,Der Bäcker Eifler,QR_CODE
@@ -7360,6 +7452,7 @@ fac3cc98-d990-4106-b17a-e8b5afe1b843,Fidenza Village,CODE_128
fadd868f-b34b-4604-8a24-c7fbcd8ea573,Big Marlin,EAN_13
fae896a0-9c57-4ff8-be30-195fbf137a0b,Lotteria degli Scontrini,CODE_128
fafa23c9-5cda-4fb8-aab5-6faebc6386a8,NETTO,CODE_128
fb340faf-4fe5-4446-b811-217d615f5514, Abbonamento Musei,QR_CODE
fb507b68-ecf4-4397-969a-23e2427f76f2,Veritas,EAN_13
fb5e84a1-5e9f-4fa5-ad36-c6060927c415,BIT BY BIT,CODE_128
fb6edc61-a282-4217-9b44-ac2611b5977c,Kierrätyskeskus,CODE_128
@@ -7400,8 +7493,10 @@ fe488a32-17aa-4b93-8e88-b2df166b30b8,BIEMAR BOIS,CODE_39
fe54303c-8e1c-4c62-8ee6-b9485e333419,Liverpool Library,CODE_128
fe889ad0-ea52-4069-a051-b5ceb4c4b4e7,Аптека Гермес,EAN_13
febc239e-ed07-45ac-905d-b6048a203784,Scarpamondo,EAN_13
fed489b7-1d23-4b3f-b20f-52c229575de0,Autowaspark Kuzee,QR_CODE
fee32f93-2fe4-4fa1-ab62-159bdc375668,Покупочка,CODE_128
fefcdd70-4aa8-4f78-b9e6-1dc18f9cd731,Button Blue,EAN_13
ff50e5dc-1f3a-43a7-a55d-4a7d96b12757,Le Guidon Niortais,CODE_128
ff92fe3e-1b38-409f-9701-ee7665fccb5e,EU COVID-19 Certificado de Vacinação - Primeira injeção,QR_CODE
ff9fd337-4765-4ad1-90a3-62e4a78dc3ec,Нияма,QR_CODE
ffa57152-01bd-48bc-be45-46bac303c450,Мед Сервис,CODE_128
1 _id name barcodeFormat
13 015cf86e-c4b6-42b5-abed-5821492b2669 Campbells ITF
14 016c8380-d433-4eb1-b7a0-df6fd9254ec6 Friendlies Pharmacy CODE_128
15 0189b6a0-3f02-418f-872e-d5e354619a45 Mencke Gartencenter EAN_8
16 01b239f4-d1db-4311-a33b-bc8bb9c71c19 McEwan CODE_128
17 01ce8326-50e8-4787-9999-e509dfed15cb Вигода Вопак CODE_128
18 01eafcc6-ee41-447f-bbce-7a93ffb90b6c Mario Mikke EAN_13
19 01f88e2d-3eb4-4242-a32b-1a847a28e140 Crodux CODE_128
32 037f2420-273c-4ffe-9dd3-af22868b1b59 Al Pentolone EAN_13
33 038516b8-3cdd-4f96-9582-97caf9dc3a47 Dier Specialist CODE_39
34 039784f4-4fef-497e-8f03-f026655394ef террапевтика EAN_13
35 039932ff-caec-4d40-aa9a-0ed185b5cf5f FNV CODE_128
36 03b89b04-69cd-43cf-88eb-35760f092488 Мегаполис CODE_128
37 03d62f02-8266-493b-b4fd-95d5c853b87b мта EAN_13
38 03fd0d65-b3dd-427b-9f7c-3554fe3dc99b Happy Sport EAN_13
62 0777b427-2af5-4531-81c3-f7421dde9d63 Евразия Автозапчасти EAN_13
63 078a5228-818d-4a86-8726-c71dd27a3fdc EU COVID-19 Certificado de Vacunacion QR_CODE
64 078fdcef-2e8a-4179-befe-5959cd588a7e Клякса EAN_13
65 07a90343-0b80-4cb4-8571-b6a2419cff6e Maracatú CODE_128
66 07f645dc-3127-4050-94ac-41f42cacdb74 Cats & Dogs EAN_8
67 081924f1-3eff-480a-a8a9-ec08eb4b75e7 Rossetti Market EAN_13
68 0821c8d1-4556-4178-af1b-fe4d1977127d Feedo CODE_128
87 09e1c670-eac2-4077-8a66-b990c3ba1ed8 Gamble & Brown Cafe CODE_39
88 09e38952-3559-4432-821a-84fdee4923f8 Стройка EAN_13
89 0a047088-f9f9-47c5-a982-b307122f09fa IGA Rewards EAN_13
90 0a058735-ecfd-4278-ae7a-9f6917193a3d JBs Power Centre CODE_128
91 0a124613-4513-4a4f-b89a-6c4b645e395b BoniChoix CODE_128
92 0a6c06b6-056d-4bf2-ae78-915a8c52d464 волгорост EAN_13
93 0a7c000b-39eb-4464-bc41-03d0e1f4a20f Life Pharmacy CODE_128
94 0ae08429-e2a2-4fe0-840a-e940ce9fd3e5 Zebra EAN_13
95 0b2502b7-f8d7-426e-b518-4482ee6115eb Лоза EAN_13
96 0b4c67fb-bf76-46e8-9a3b-cb0acfe47e71 Giocheria CODE_39
97 0b539afa-e6b5-42a0-8f03-50d5de9f4af0 MediaMarkt Club Karte QR_CODE
98 0b600df8-f694-49d5-b5ee-56d0b47ab1bc reima EAN_13
99 0b82965b-29df-4c9e-ae5f-70a5d10f1d32 Fanølinjen CODE_128
100 0bb951c2-c644-4a0b-92c0-754d739a55be ZALY EAN_13
134 0f650862-0a1c-4596-b2f9-30fc8d3bf8d3 Lila Bäcker QR_CODE
135 0f69ba3f-6084-49a5-b959-24277008de45 CJ Express CODE_128
136 0f936e1f-b3ac-4a34-aad7-a18bd76150f2 FOTOLAB CODE_128
137 0fafa67a-b4d2-4365-9f68-c167d43c7070 I TOURS CODE_128
138 0fce03a0-6b7b-427c-a483-26a1169e73b0 EDMINS EAN_13
139 1 Accor Le Club Accor Live Limitless QR_CODE
140 10 Aeroplan CODE_128
141 100 Esprit ITF
142 1000 Chemmart Pharmacy CODE_128
472 13 Amavita EAN_13
473 130 GNC UPC_A
474 1300 IZOD CODE_128
475 13004ca8-9095-40c2-aa98-1fcf6410efc7 Max Shop CODE_128
476 1301 La Quinta Inns CODE_128
477 1302 Pet Supplies Plus UPC_A
478 1303 Piazza Italia EAN_13
509 1331 Bizzbee QR_CODE
510 1332 Blue Box CODE_39
511 1333 Brice EAN_13
512 1334 Bricoman Tecnomat GS1_128
513 1335 Brico Marché Bricomarché GS1_128
514 1336 Camaieu CODE_128
515 1337 Casino Supermarchés EAN_13
516 1338 Castorama CODE_128
688 148f7495-e6f2-40b1-80cd-99b3632cb976 Slam ITF
689 149 Höffner ITF
690 1490 Basko EAN_13
691 1491 Unes EAN_13 CODE_128
692 1492 Grande Cinema 3 EAN_13
693 1493 Eurobrico EAN_13
694 1494 Isola dei Tesori EAN_13
974 172 Jost ITF
975 1720 Wheelup CODE_39
976 1721 BIG4 CODE_128
977 1722 Besson Chaussures EAN_13 CODE_128
978 1723 Cactus EAN_13
979 1724 Idea Bellezza CODE_39
980 1725 Uyum CODE_128
991 1733 Mondial Tissus EAN_13
992 1734 Furet du nord EAN_13
993 1735 Maxxess EAN_13
994 1736 Devianne Des Marques et Vous EAN_13
995 1737 Colruyt ITF
996 1738 Paul EAN_13
997 1739 JouéClub EAN_13
1052 179 Kastner & Öhler EAN_13
1053 1790 MY SIZE CODE_39
1054 1791 PetO CODE_128
1055 1792 AVEVE Aveve EAN_13
1056 1793 BIO-Planet ITF
1057 1794 Brico EAN_13
1058 1795 Club CODE_128
1351 1e43877a-d4f1-4bff-bdb9-cd3346082a46 Scorpion Bay EAN_13
1352 1e9469a4-8388-4ca9-a463-95ee73a0d953 FAMO EAN_13
1353 1e9a127a-0451-4565-9560-eaa097d3808b Grill'd CODE_128
1354 1ed46ee6-993a-4053-a016-a0d67e26b91b Lidl SK Lidl CODE_128
1355 1f01c3b1-08f7-4365-a0f9-f1c9bcbdf58a Fresco CODE_128
1356 1f15d8f3-c35c-46d6-8038-4c9f91a18909 Покров EAN_8
1357 1f1ec99d-c8c6-42d3-ac6a-b9658a6e0a0d xBarvy EAN_13
1358 1f661d7a-d355-4590-8d33-0d61630958cc NDG CODE_39
1359 1f6624c6-5acc-4983-ac17-31b9004232d7 Afvalpas Rijssen-Holten QR_CODE
1360 1f69337f-7604-4e7a-9031-f0ab182e7cd7 Дешёвая Аптека Вита CODE_128
1462 2085 Billa EAN_13
1463 2086 Billa EAN_13
1464 2087 BIPA EAN_13
1465 2088 Penny PENNY EAN_13
1466 2089 Penny EAN_13
1467 209 MCard CODE_128
1468 2090 Shoprite CODE_128
1501 2112 Lindex CODE_128
1502 2113 Twilfit CODE_128
1503 2114 aClass CODE_128
1504 21143721-38a4-466f-b04d-a3e90cb62bad L'angolo CODE_128
1505 2115 Clas Ohlson CODE_128
1506 2116 Agrimarket CODE_128
1507 2117 Starkki CODE_128
1610 2201 Avance CODE_128
1611 2202 berca.be EAN_13
1612 2203 Brantano EAN_13
1613 2204 Brooklyn Brooklyn nv EAN_13
1614 2205 CAMELEON CODE_128
1615 2206 Carmi CODE_39
1616 2207 E5 mode ITF
1950 2488 Proximus CODE_128
1951 2489 RS Bútor CODE_128
1952 248957ba-dbad-414e-86e4-009fc4e5beee Самоцветы плюс ITF
1953 249 Countdown Woolworths CODE_128
1954 2490 SEIBU PRINCE CLUB CODE_128
1955 2491 サミット EAN_13
1956 2492 The PUB CODE_128
2034 2557 Artex Fashion EAN_13
2035 2558 Askot CODE_128
2036 2559 BUTIK EAN_8
2037 255d84f7-144d-4d63-b6fd-f00a8e94641f HUK Autowelt QR_CODE
2038 256 Palmers EAN_13
2039 2560 Dayli EAN_13
2040 2561 De Banier CODE_128
2451 28a46b11-8c45-4b2a-93dd-b7325a2fe013 Dialogues CODE_128
2452 28b5866e-f195-4d68-b8a0-02cdb611af4f Да Здоров! аптека EAN_13
2453 28c5ee9a-cf66-4add-b71c-70b66be85570 Agraria EAN_13
2454 28cc5dc7-61b4-4c95-a5a6-e125cc4bce9b Aventurx CODE_128
2455 28d93baa-c331-4df8-a85d-65eb86199732 Solar Studio CODE_128
2456 28fbdd64-8715-4cdc-8c3f-df7259b1ba65 NOHO EAN_13
2457 29 Heathrow Rewards CODE_128
2594 2b1eb78e-9684-4434-ba9b-41f00fc5beab Sensation Profumerie EAN_13
2595 2b29bfc0-26a7-44cb-9d21-2a0bdb467320 Vertex Hotel ITF
2596 2b39b807-6375-404c-bfd7-7f3135654258 Планета Игрушек EAN_13
2597 2b6062ec-39b1-4ac4-b6d6-cf19048c9f3f Coripet UPC_A
2598 2b6992d5-615a-423a-b196-ab19a418686f Mimco CODE_128
2599 2b7d84ce-c573-44ea-8989-b23a13cf389b Азбука Красоты EAN_13
2600 2bc9768c-56a2-4d7d-8f1c-0be9f208b71b Profile CODE_128
2865 3199 Navyboot EAN_13
2866 31d21202-2674-4c42-9a7e-a19b01d32b63 Vegetalis EAN_13
2867 31d3cf0c-7522-4035-9256-7a712cb1a8b3 Канцелярия EAN_13
2868 31db4e18-fb97-43d2-b026-c41f39d2faba Bershka CODE_128
2869 31eccc6d-babd-4fee-9ae8-db9a00fc1c63 Pharmactiv EAN_13
2870 31f60f6d-633f-42af-b387-e5d0b4e2f45f SPINNS EAN_13
2871 32 Bauking EAN_13
3106 3399 Taxi Jetax CODE_128
3107 339bb076-12fd-4e56-899f-3acb79f5da53 Hafenhotel Meereszeiten CODE_128
3108 33a430e4-35c7-43e7-98e8-5ce5d039ee70 VPZ CODE_128
3109 33cb4886-5d06-473a-80b7-980ca2fb27c2 Bouwcenter Nobel EAN_13
3110 33d16d2d-f51e-44c3-92d8-2c3616af2d0f Apotheke Peer Farmacia CODE_128
3111 33dea27e-c7a4-4e40-8621-32da990f7d82 EU COVID-19 Vaccinationsintyg - Andra vaccination Skott QR_CODE
3112 33e82e4f-5541-4be1-aa4c-0f2987cfd78f Данди EAN_13
3467 37 Bessmann ITF
3468 370 Virgin Atlantic CODE_128
3469 3700 Go Auto CODE_128
3470 37003c25-7bc7-4dd9-8a3a-8406005d0dcf Scouts en Gidsen Vlaanderen CODE_128
3471 3701 Good Earth CODE_128
3472 3702 Hachem CODE_128
3473 3703 Le Magasin CODE_128
3965 4083 Каляев EAN_13
3966 4084 Shingle Inn CODE_128
3967 4085 Golden Casket CODE_128
3968 40853977-7fdb-4815-a64e-85d2c70df347 OROCAJA CODE_39
3969 4086 Pet City CODE_128
3970 4087 chempro EAN_13
3971 4088 merlo CODE_39
4330 4387 Kremer EAN_13
4331 4388 Gartencenter Nickl EAN_13
4332 4389 Panarottis QR_CODE
4333 439 Alitalia Volare ITA airways. CODE_128
4334 4390 Simply Asia CODE_128
4335 4391 Ultraliquors CODE_128
4336 4392 Cum Books CODE_128
4582 4599 Мокрый Нос EAN_13
4583 45b55fa2-835b-4ae5-a318-16a66b4ec85b Євро Мікс EAN_8
4584 45cbba3f-f0d2-4837-8189-16b0ff2707f5 Барс CODE_128
4585 45e6b637-a991-45ce-b72d-8f4df03d9f6b Tradition CODE_128
4586 45e6f6d3-e688-40f7-86e2-73e3803c86bd KüstenCard mini/maxi CODE_128
4587 45fa81a4-657e-414c-89ed-ebf1c49c0926 G'DAY REWARDS CODE_128
4588 45faf9e5-321c-44a7-b641-7acee8126349 EU COVID-19 Vaccinatiebewijs - Eerste vaccinatieschot QR_CODE
4790 4773 Maximiles CODE_128
4791 4774 La Compagnie des Petits CODE_128
4792 4775 Totem Family CODE_128
4793 477515a9-2257-4d19-af18-3dbcfeb4acd9 Omni CODE_128
4794 4776 La Jardinerie CODE_128
4795 4777 La Plateforme du Bâtiment EAN_13
4796 4778 Animal & Co EAN_13
5068 4adaa99b-282d-4abe-87c8-b16d3958f4c2 Тюменский ЦУМ CODE_39
5069 4ae5d40d-45ea-4188-bce8-eb3337733466 Garden Floridea CODE_128
5070 4b197111-0d79-4ac5-aecd-5dca6643e390 Евродом EAN_13
5071 4b50787c-052c-48e9-8bae-b01373cef1b8 Fbo Clothing CODE_128
5072 4b511f9a-5c9c-4b9f-8c71-1631cb78456a Семейная Аптека EAN_13
5073 4b8e7174-b85b-4b82-99ab-b1faee2dfb8f Diper EAN_13
5074 4ba9de66-0015-49e1-a0d1-d24c2328eaa5 Witchery EAN_13
5083 4ccb26a9-3a58-487f-9bdf-5cc4b042c0b3 UNCS CODE_128
5084 4cd0da27-9a71-4eb0-88f4-23919b598828 Pins CODE_128
5085 4d28254f-9ec6-4262-aa28-ee0bd7620b00 Леонардо EAN_13
5086 4d4102e9-115a-4695-b764-c5534e1749a8 twd EAN_13
5087 4d7b0d6e-2680-4c6b-bdac-8985df7aa8a3 大昌 EAN_13
5088 4d8c62b4-b4c5-40b0-9117-6e5022cf7950 MilleMiglia CODE_128
5089 4dab7847-f728-4c34-80ea-a464238a3756 Волна EAN_13
5090 4db2f926-b58d-4821-8f85-b02d3e32fbcb Дом посуды EAN_13
5091 4dd50f0e-05a1-4a32-97c2-1e5b570d0d9b MIA EAN_13
5092 4dd586bf-d2ed-4357-898c-11b648bcb796 Детский парк EAN_13
5093 4dd5aa56-2f5c-4bb5-a281-211bb4e5463e Joylab CODE_128
5094 4e090085-f5bc-4f29-abcf-bb249dd3429d SSENSE CODE_128
5095 4e1001a2-a664-4d37-8b85-a71b02f9f6dc xFarby EAN_13
5096 4e24761b-17a7-4b7d-b04a-16f54076d03b Forum+ EAN_13
5097 4e6622db-6fd3-405e-a60e-7157984da5ba KiemKracht VZW CODE_128
5098 4e95cfa4-3011-41c2-ad87-0c560cbd218c Lincolnshire Co-operative DATA_MATRIX
5099 4eb5bcd8-9467-44ce-b54c-fc69521431be Мир Обоев CODE_128
5100 4ed66bc0-04ee-458b-aac7-6bb7bdd35e5c Пивотека CODE_39
5324 519 Alimerka CODE_128
5325 5190 Souris Mini CODE_128
5326 5191 Лакомка EAN_13
5327 51917108-3469-4067-b1da-8697d60fcfa6 Kingston Frontenac Public Library CODE_128
5328 5192 AlphaZoo CODE_128
5329 5193 БИГАМ EAN_8
5330 5194 Sebastiano EAN_13
5431 55cfc40e-469f-485f-ab26-823014fd8401 Seebauer EAN_13
5432 55db252f-70a8-4da7-b0c2-484c8445e750 Kreativmarkt Hamburg EAN_13
5433 55e96a49-7157-43cc-aaa7-9867d37cb05f Народная линия EAN_13
5434 55eb9a72-cd1d-49f7-aec1-1f44f6207983 Lina Giorgi snc CODE_39
5435 55f414b7-b1a8-46f6-97ad-7f4f0867d8a9 EU COVID-19 Rokotustodistus - Toinen rokotus laukaus QR_CODE
5436 56 Brax CODE_128
5437 560 Punt Roma CODE_128
5518 5afc2de6-6129-43f5-9caf-be3572d65a90 Sisal CODE_128
5519 5b01f59e-97db-4105-9aab-94f56099fc49 real GS1_128
5520 5b1da0f0-143e-492d-83a9-ad22957a54c6 Metro Lifestyle CODE_39
5521 5b502f6e-7c38-4708-ae56-04f97638692a Баня Стил CODE_128
5522 5bb5ea85-8952-474e-be53-c5ac11f7428f Farmec EAN_13
5523 5bb6dc04-3000-475f-a5d4-ba9427989809 Bimbostore Toys Center EAN_13
5524 5bf3f149-2217-45aa-b61b-eec9aeedf5d2 Werdich CODE_39
5536 5d3de23f-b72e-4920-9e3b-1a413979a779 CityCard CODE_128
5537 5d426084-854e-493e-a10d-7ce5d34d31fe Farmacie Comunali Firenze CODE_128
5538 5d51a06c-3af4-4400-9776-e3458190be87 Parisnail EAN_13
5539 5d5d4520-ee6c-45ea-b5f1-11282a0673f4 Arriva CODE_128
5540 5d695da3-f47b-4da8-b5ff-ea9d0fd9486b Belaton CODE_128
5541 5d866631-9858-4393-a5cf-eba96ca066cc Kiwisun CODE_128
5542 5db03921-3703-40d3-ba27-f7d3ff5a40ba Prodor Supermarché et Boucherie EAN_13
5546 5e18e98b-ad75-426a-a4ac-a80496906906 Beauty X EAN_13
5547 5e27a7ae-ad95-4cce-b383-85a4eb822eaa Supra Baby EAN_13
5548 5e402125-50f9-4de9-8769-ce4e0dc1d1a1 Romaest CODE_128
5549 5e46de16-6ebf-4d17-933f-2f782df8b3fb Prima Company CODE_128
5550 5e6edac6-a458-4488-861c-f8f403f4b1e1 MABÙ QR_CODE
5551 5ee2ee34-5027-4535-a55f-657c1a092d5d Lady Sharm CODE_128
5552 5f01e866-3ef8-46e4-a40a-555594849eb7 ЦУМ CODE_128
5561 6 ACS CODE_128
5562 60 Transgourmet EAN_13
5563 600 Humanic ITF
5564 60046ae3-b41c-4a08-a012-d8e921e8aab0 Multaparts CODE_128
5565 600bf563-b7b2-488a-9e21-0ccc63a67b1d LAUF! EAN_13
5566 601 Beauty Alliance CODE_128
5567 6014a435-c656-4bf7-bcd6-fa46ed28bac0 Окраина EAN_13
5584 61 Centro EAN_13
5585 610 CAA CODE_128
5586 611 Calgary Co-op EAN_13
5587 6110d522-b979-46ca-a313-ded4eac7db71 Telecomshop Twente CODE_128
5588 612 Canada Post CODE_128
5589 613 Canadian Tire CODE_128
5590 614 Change Lingerie CODE_39
5591 615 SCENE CODE_128
5592 615a7629-0f60-4613-b41a-e1f571f5c20a Goelia CODE_128
5593 615ddf35-4934-4442-b4df-54b065184476 Сигма EAN_13
5594 616 Denny's CODE_128
5595 617 DeSerres CODE_128
5641 639 National Car Rental CODE_39
5642 63ace5b1-39bb-4486-87a8-692caab2c76b куулклевер QR_CODE
5643 63ad5b7e-ab54-45f2-9224-2da0122a21eb Forum TC EAN_13
5644 63b32bf3-2e99-4487-bc45-7b70132fe53c Checkers CODE_128
5645 63bcf094-bbc1-4caa-adfb-b6e015295f43 Парфюм Лидер EAN_13
5646 63bee835-2e9d-4656-b7b6-4b9e9a024470 Арт-Квартал EAN_13
5647 63c87418-cb15-4294-a872-035a03da3a62 Belleplant EAN_13
5677 657d61fe-7714-4aed-a3d5-6c718c6e9c2a EU COVID-19 Vaccinationsattest - Første vaccinationsskud QR_CODE
5678 658 Thrifty Foods CODE_128
5679 659 Trade Secret UPC_A
5680 659c40c9-f997-44a8-b6a8-a29df616c4b2 Alfa-Tec EAN_13
5681 65e6e477-57a3-41c1-88b2-330a6d0cf8bd Nobis PDF_417
5682 65e848d6-edd5-401e-9b12-952a5c6fdf47 Джерела Здоров'я CODE_39
5683 66 BCF CODE_128
5685 661 WestJet Rewards CODE_128
5686 66104d31-9ae9-440d-b316-0d07a4319af3 Farma Fedeltà CODE_128
5687 662 Würzenbach Drogerie EAN_13
5688 662e6cc0-3ebe-47db-badf-b31b626ea70c The Papanui Club QR_CODE
5689 66335d92-4622-4334-8384-4a6d5f61f239 Zinger EAN_13
5690 664 American Eagle ITF
5691 665 TJX Style+ CODE_128
5730 687 Thai - Royal Orchid Plus PDF_417
5731 688 SportIT EAN_13
5732 689 Foster Calzature EAN_13
5733 68ac6315-08c6-471d-b2e0-ad42d1a091c8 100 Vetrine UPC_A
5734 68c2495e-937d-4e71-a4ad-85f066df0339 Jardival EAN_13
5735 68c69327-cce9-4de8-a062-b895c062ee60 Iden EAN_13
5736 68d4b527-e419-4346-8078-a4ef07a04f00 Lehner Versand CODE_128
5764 6a5ac3f8-04cb-4d14-884f-1231b72228e8 Топаз EAN_13
5765 6a7b1bc8-eca7-4323-9080-68af9414254f CastoPro CODE_128
5766 6a85186a-bfd9-4078-a5da-db1b4e1fb526 Molders CODE_128
5767 6a8a8971-821c-46ce-a638-1a8585c9dedd Booking.com CODE_128
5768 6aa89061-d0b5-46a2-9019-b1cb7146e485 Just Plastics CODE_128
5769 6aa9bd9a-b099-4997-9fa1-b0a7525c6ec7 AZ Casa EAN_13
5770 6ab113ff-77e9-4029-9b23-e420eda105e3 Ehrmann CODE_39
5803 6faff0bd-9236-41f8-9c67-7b546c68085a BVS EAN_13
5804 6fb31971-1cf0-468e-9f85-ebf6133ad3aa у Палыча CODE_128
5805 6fb45bab-d4be-49fd-8b58-d841110eb0cb AL 48 EAN_13
5806 6fb4ec1e-c6b7-4597-82a3-5c8d4d69ad4f Rachelle Béry CODE_128
5807 6fe38419-76d2-4b5c-983e-6dbed7822d62 GiorgioMare CODE_128
5808 6fea059e-d9ec-4063-8ea4-cba5ac035942 L'arca di Noè EAN_8
5809 6ff46a57-e3c9-457e-bfb4-aa922c4c41b4 BENZ CODE_128
5892 740308f3-fda8-4b83-9d86-d13592ef30ab Dress Code EAN_13
5893 741 O'STIN EAN_13
5894 74135c63-c1ab-47b8-8d99-4d9dcf602eda VOIX INTERIORS CODE_128
5895 7415ddc5-3d77-410c-a6f8-ab399518a82c Tradition CODE_128
5896 742 Reebok CODE_128
5897 742069df-a468-45d5-8cf6-cc152b4aefaf Bacher Garten-Center EAN_13
5898 743 Savage CODE_128
5940 764 Васаби CODE_128
5941 7648aaa6-671e-4396-9e4e-759aa66c9f4f Bouwcenter EAN_13
5942 7649e44e-66e4-4af1-a913-87a40c8ae739 Office Centre CODE_128
5943 764a67a4-8087-41d1-b53a-d73b8380d5cf Handy Home CODE_128
5944 765 Вестер CODE_128
5945 766 Виктория EAN_13
5946 767 Газпром АЗС EAN_13
5973 780bd58f-acbb-493c-869d-63f7a93292f3 Schnitz CODE_128
5974 781 Кофе Хауз CODE_128
5975 782 Красный Куб CODE_128
5976 78242148-6c07-4698-9ec1-56017dc687b6 Ideacasa Mercatone EAN_13
5977 782b0597-f7e4-4509-ba4b-a9fc35d72b4d Рада EAN_13
5978 782f7353-ec4c-49a8-9aac-1f7d28f4cab2 Remix Moda EAN_13
5979 783 Лукойл / Ликард CODE_128
6028 7bd30784-434b-4d73-8dc1-5b5516723eda Pascal Coste EAN_13
6029 7bd61c87-b62d-439a-92e9-cc435345cb53 Infinity Fashion CODE_39
6030 7c138f2e-37f9-46d4-ac65-2b20ff90a629 Nai Harn Gym CODE_39
6031 7c1b39b5-b938-432e-b0be-3c196320bd37 Checkers QR_CODE CODE_128
6032 7c5a9dd0-28b0-4be1-b53f-cac4246990b4 Марафон Обувь CODE_128
6033 7c60823a-e9fc-447f-811d-589bf1f95342 Пчёлка маркет UPC_A
6034 7c77ce3b-02ad-436b-a4aa-62a6d5d583e3 Plainview-Old Bethpage Public Library CODABAR
6044 7ce87cdb-4c6b-437f-a693-dca518f7436a Yo-get-it CODE_39
6045 7d02542c-fac0-45b5-bc90-d74240715c56 Travis Perkins CODE_128
6046 7d11f040-b0a2-4109-bdf1-25711d48d451 Consorzio Infarmacia EAN_13
6047 7d168ca5-9370-47bd-ac3e-bf1e1e26f1ec RISPAWORLD CODE_128
6048 7d41888d-cd7d-42ef-bf93-9aeda5ae13f6 Kepro EAN_13
6049 7d4345b8-448b-4e12-a1c5-c6e031de2352 Nove25 CODE_128
6050 7d520d1c-611e-4e81-9937-41a9828e6b08 EU COVID-19 Vaccinatiebewijs QR_CODE
6055 7da65ee3-d140-469c-b3ee-217272ac98d4 Kippie QR_CODE
6056 7db0f727-13b4-48c1-8618-550155a878a2 Imperial Games CODE_128
6057 7db8a067-1c33-4cd9-9706-31a2592f719a милый дом GS1_128
6058 7dd14421-2fe6-494f-889b-dd8920f61091 Mastro Tortello QR_CODE
6059 7dd1b9ca-2a5b-4f3c-8c10-8bc216ff5d2f Sokolov Jewelry CODE_128
6060 7df2728d-3dc9-4724-8756-965e937674e2 Marriott Bonvoy QR_CODE
6061 7e3da299-047b-4981-8ff3-e5355c7289b2 GIROPHARM EAN_13
6082 8045996b-082d-4333-b631-54dc992ebef0 Coop EAN_13
6083 805 Старик Хоттабыч CODE_128
6084 806 Stockmann CODE_128
6085 8069f84c-3b04-4b0a-87fd-d89230547e8b Happy Pets QR_CODE
6086 807 Сток-центр EAN_13
6087 8070cf0a-9721-4fe7-b010-6fdca61349fc Epping Plaza Hotel CODE_128
6088 8077e001-6db6-4796-bd82-6716ea5e116e Palace Cinemas CODE_39
6104 813f818a-e99d-49f2-af6e-653a9bcaab09 Bazar Avenue EAN_13
6105 814 ФотоПлюс CODE_128
6106 815 ЦентрОбувь EAN_13
6107 8153abb1-248f-4af9-a7f8-dd83cdacdc7f TEKBIR MARKET CODE_128
6108 816 ЭКОНИКА EAN_13
6109 8166ded7-42b6-47b8-a5dc-032954e82db7 bugatti EAN_13
6110 817 Эстель Адони EAN_13
6115 81c5ea7b-aa89-47f8-a22e-297207616f0b Taurus Sports CODE_128
6116 81dd0d8d-4613-400e-8cbd-b2189a88a22d EULIVIA Apartments CODE_128
6117 81e7b9b8-826c-4f9e-9c61-7568a454afa5 Industriya Krasoty EAN_13
6118 82 Desigual CODE_39 QR_CODE
6119 820 Air Miles EAN_13
6120 820b5de7-a25a-4d30-ac74-3a70fe682bfd Мир Электроники CODE_128
6121 821 Ajax Amsterdam CODE_128
6179 848 Lake Side ITF
6180 848939e3-7e55-40af-a46a-a0b0b434bbcf Планета ZOO EAN_13
6181 849 Le Ballon ITF
6182 8495d3db-8532-4bef-a58f-3a77479ff134 C&A CODE_128
6183 84a82d8b-1d4f-4673-b1e2-b115bbe5b618 Soul Origin CODE_128
6184 84faf272-0010-4f93-8aa1-154caaa11ac2 Pro-Duo Nur für Profis EAN_8
6185 85 Diamond Club CODE_128
6239 87737e38-8052-4fdc-a90a-3511b9157481 PETS&CO CODE_128
6240 878 Jula CODE_39
6241 879 KappAhl CODE_128
6242 879a9dd3-45e3-4633-9376-9183fee6ab3e Bernardi’s Marketplace CODE_128
6243 87b3f071-9af7-4163-b512-679717b696ac Caucciu EAN_13
6244 87b925d1-4d9a-47e3-9e54-deaef1981b77 Impfausweis QR_CODE
6245 87d141a6-cac3-4d39-9357-a6365850e57f Coeur de frais CODE_128
6293 8a0dca6e-de83-4e48-a42d-a3009da56653 Park 'N Fly CODE_39
6294 8a25357e-ebc3-4ae1-b7fc-a10ff3b1abd0 Конфил CODE_128
6295 8a53dffe-df27-40f0-b2ff-58e53add0b3e La Cartissima EAN_13
6296 8a59226e-9895-4924-8616-345549a56aec Munhowen Drinx CODE_128
6297 8a702666-368b-48a5-96fd-4e10aac5ae7f Brooklyn Jeans ITF
6298 8a8095fe-f449-4242-83a1-0d3055874233 Little Sparrow CODE_128
6299 8a9c58f4-4db3-4aef-8cf0-d2caa0fcc4d1 EU COVID-19 Potrdilo o cepljenju QR_CODE
6300 8aa58d48-ad60-4b6d-aa1d-054f94b6453b Granola PDF_417
6301 8ac5093b-8fc4-49d6-b271-dd845252b60c Idea Verde Maschi CODE_128
6302 8ad83ece-2e55-4937-80c9-04584c598439 COM EAN_13
6303 8b0f2db1-ae97-4af8-8e82-c4067a4ac322 Toyota Ma Toyota Extra CODE_128
6304 8b398aea-e5bd-484d-bdf2-5030bacf9157 Thèoria Milano CODE_128
6305 8b4c413c-effc-4912-9a34-6baea2972199 Karla CODE_39
6306 8b653178-4f49-4f73-9091-7763e039b539 Aléa Déco CODE_128
6351 903 W.KRUK CODE_128
6352 904 Galeria Wileńska UPC_A
6353 905 YES EAN_13
6354 90574104-b485-489f-9872-3d32b7e07c59 America Today CODE_128
6355 906 ZiKO Klub EAN_13
6356 9062c2a3-eeb1-4797-afb6-41a0394bb481 Městská knihovna - Česká Třebová EAN_13
6357 90705634-f152-487c-97eb-27e1728285ef Миртек EAN_13
6380 91915513-4447-47b0-93ae-d489f6ee3a97 Chrome EAN_8
6381 92 Düsseldorf International EAN_13
6382 920 Drummond Golf CODE_39
6383 92063e91-526a-4327-ba87-f487bfaec724 Rue du Commerce CODE_128
6384 920c9bd0-d85c-42c6-9301-fc1ddedd38c2 Idea Casa CODE_128
6385 920ce49c-9728-41f1-b9e9-9f9d06f53d92 Русские Самоцветы EAN_13
6386 921 NWZ EAN_13
6417 935ef7c3-a93c-43e1-9abd-075bd05c3051 Форне EAN_13
6418 936 Orlen - Vitay CODE_128
6419 937 Wojas EAN_13
6420 937cef67-4a01-42fc-9f51-0a3f3210a686 Idea Città Company GS1_128
6421 938 Sizeer CODE_128
6422 939 T2 Tea CODE_128
6423 93a8cca4-73cd-405c-8142-359a41127416 しまむらグループ CODE_128
6424 93a9836f-0984-45ee-97c6-3e6675a34b11 Ludwig Beck QR_CODE
6425 93b76ad4-76f3-4132-8fe5-972f6ca5eb8a Київфарм EAN_13
6426 93bda8ac-884e-4db0-ab72-09e12f86a3d2 Naturino Family Store CODE_39
6427 93c53a6b-2efb-4167-aa67-c4905f1692b1 ВелоДрайв EAN_13
6428 93d1d2d1-801d-4293-a1f1-cdf314ba341a Nilufar EAN_13
6429 93d42408-df2a-42fd-a10c-9f9c725e8000 TuttintiMO UPC_A
6471 962 Монро EAN_13
6472 963 Jeans Symphony EAN_13
6473 9630a33b-0869-4246-91db-80f928bd7b3a Harfa Sport EAN_13
6474 96394b6b-b91f-4fbd-991c-242b7189e0b0 Shoprite CODE_128
6475 963a19ff-687c-434a-a960-c5e9c6d27c1c La Cage CODE_128
6476 964 Спектр EAN_13
6477 964bee1b-84ac-42cb-ac20-b182e043a983 SIR CODE_39
6521 989 Toys Center EAN_13
6522 98959593-9b79-4d3a-98bf-fd965d99825e ташир пицца PDF_417
6523 98afc021-2350-4686-89de-03bc9bb686a4 Coeliac Australia EAN_13
6524 98c597ea-20b1-4d9e-a6ae-0ed84e0f591d Juttu CODE_128
6525 98d5694e-ee5e-4f60-9a32-0ac43d66f54f Vaprio CODE_128
6526 99 Ernsting's Family ITF
6527 990 Nando's CODE_128
6583 9dc29233-9613-4851-8630-15b7b39222c3 Kasztelan CODE_128
6584 9dc3174d-0990-4d88-a4d6-3c7a6431160d Янтарь EAN_13
6585 9dc63493-8062-498a-99be-db701dfc03a4 Farmacia CODE_128
6586 9dd46ad3-336b-4af2-9cbc-4526140558ef Kiriel EAN_13
6587 9e02cf7a-da20-428d-a363-952f7a3fb25c Kéddo EAN_13
6588 9e82e20d-4da0-46c0-bb94-c2ba7b9b3d74 Индустрия красоты EAN_13
6589 9ec73fed-0974-4b7c-98e0-27aba810e8e1 Spielwarentraum CODE_128
6595 9fd0773f-f0ee-476c-8351-c02fb65b9360 Plus Market EAN_13
6596 a00761f0-abf1-4690-a95a-b18e41c527d2 Pet and Pool CODE_128
6597 a017f67b-3483-4587-97a0-2c5c4af6834e SchuhMarke CODE_128
6598 a0284158-4eaf-4891-9768-f93e1049413a Десятка EAN_13
6599 a04e9cdb-caec-4f4f-bf96-9e40fd90cb09 PharmaSave CODE_128
6600 a05edd71-80dd-4e23-87cf-5df65a193281 Andre Tan EAN_13
6601 a08ccd9d-76ce-4245-8582-24d2840ff7b9 Chanel CODABAR
6617 a2756aea-2ca4-4870-811e-100871fdb73e Pratiko EAN_13
6618 a29668f6-dd2e-4281-917e-49e28ebff6a1 Koloria CODE_128
6619 a2b352d9-5d5d-4080-9f52-eb6a798aa6c6 Ferlenz CODE_128
6620 a322cee9-b5c6-4384-a365-c970f335cc5c Erdkorn QR_CODE
6621 a323e0ec-2b0b-4a82-a950-11f7516f2584 OnePass EAN_13
6622 a36556e0-433a-4b16-b72c-4751a386d707 EU COVID-19 Impfzertifikat - Erstimpfung QR_CODE
6623 a3828047-ff01-4eb4-be10-6e4d635ca029 Leffers ITF
6646 a645973d-7e87-46ab-8c77-0380ca06ae32 Perth Zoo CODE_39
6647 a65e3023-fa06-47c0-bfdc-4dc79f54c825 丁丁藥局 EAN_13
6648 a69154f5-16a8-4543-bb49-b7a68bb3d301 EU COVID-19 Potvrda o cijepljenju QR_CODE
6649 a69d8b79-a0e7-422b-a149-64c66b23aea4 Plus More CODE_128
6650 a6aa66ba-00b8-4922-b628-98cea029c9e2 Coop EAN_13
6651 a6ab3df9-10bc-47df-bed4-839fe1e908be 零食物語 CODE_128
6652 a6b2c527-afbc-4e71-ae24-e5e5e270d474 Pappert PDF_417
6656 a78ee36a-3682-404f-9c83-307c1a6b421e Moda Lina EAN_13
6657 a79b9a92-9821-4824-978e-1a257abfbaff Wormland CODE_128
6658 a7b3e795-4746-45a4-9c80-d331fb051632 BonBon EAN_13
6659 a7e263c3-75fd-4ac2-98ea-0e7b3e425a74 SUPEREFECTIVO CODE_39
6660 a7f1c8c5-2895-4a74-98ac-9740e7c59922 Coffeelat QR_CODE
6661 a8090907-7e2e-4038-8831-0c72adaa0664 US FashionStore EAN_13
6662 a83b00dc-1bfd-41b6-9fee-3c7f5d33fef5 Baden EAN_13
6686 aabf2ea4-170c-42e4-906b-ea1253ebf580 Родные масла EAN_13
6687 aac03de2-6c97-4bd9-8d72-a7bba15bea6d La capsuleria EAN_13
6688 aae4f87d-ee8c-4ff0-9cb2-88c478b7a0dc Bonjour EAN_13
6689 aae6aab3-e5fb-47c1-b6c1-c30c3f386793 Netto CODE_128
6690 aaf65c10-a78e-4b18-8c79-371d5cdef871 La Provençale CODE_39
6691 ab0c09c4-d1cc-40a4-8b46-f101dc376655 Trade group SMIT CODE_128
6692 ab0c5857-5b3d-4ac3-8910-ec6b8c49a0dc Three EAN_13
6695 ab37459c-4368-4684-9ffa-3ac84c69e87a ДомДоктор EAN_13
6696 ab4a36d9-9a11-4575-a6cb-1bd053c6e00f СБА CODE_128
6697 ab6de5de-ea68-47d6-87ad-884e63f63f48 EU COVID-19 Удостоверение за ваксинация - Първа ваксинация QR_CODE
6698 ab73cd57-b075-425f-afe6-868e56207a42 Rewe QR_CODE
6699 ab7a0e82-ad67-40fb-a85f-83cdd10fb44a Depot QR_CODE
6700 ab9d5459-25c3-4040-bff0-b7804375065f Забіяка CODE_128
6701 aba38815-1a55-456f-84b6-0321d8d34102 Андреич EAN_13
6736 b00fc66a-460d-43c9-a5f1-86b0a92b125a Дачник CODE_128
6737 b0210273-794f-427b-bba1-c940a7aac7df Helen CODE_39
6738 b0382f02-57d7-4d7a-a3f1-25ea85507c64 Laser Game Evolution CODE_128
6739 b059eafb-017b-49f0-9d74-62889d8ee777 City of Whitehorse CODE_128
6740 b063caac-e875-4475-8ae6-09a0f979fb85 CLUB SALUTE CODE_39
6741 b07244fc-81d3-492b-a9e5-a813a57eea9c Faciba EAN_8
6742 b07e5b4d-d658-4ba6-9305-d497af7a19ae Nijhof Schoenen ITF
6743 b086ef99-b8b8-45a9-80f5-33a4cb01aba8 spudshed CODE_128
6744 b0973d67-75d0-45e3-9f17-0f4cb80a4824 Motozem CODE_128
6745 b0cfcd52-01a5-4533-8970-6e402e52bcb0 Brikon UPC_A
6746 b0e24b5a-4034-44b9-b22b-2a008d0bcde5 Eurodì CODE_128
6747 b0efcdb1-872a-44f0-961a-a97ee45c7ba8 Porsche Group QR_CODE
6748 b0f4291f-8d68-4071-8d10-cc212b4495cc Iper d'Oriente EAN_13
6769 b2b50b52-83c6-43d3-bb13-008544e2cfa5 Turčianska knižnica EAN_13
6770 b2b7d24b-fdbc-468b-be59-b189d4d5fdf9 Het Certificaat B.V. QR_CODE
6771 b2c03313-9621-4233-9b61-5faa8d2c66e0 JILL STUART EAN_13
6772 b2e520a4-c21a-4ba0-822b-c9ac5fe79f4d BLUME2000 QR_CODE
6773 b2f90e3a-4669-4cd4-8c31-65fbb91dc26e Advantage Pharmacy CODE_128
6774 b31982e9-7c22-4e92-8210-e08eaa123727 Linberg EAN_13
6775 b334927e-9574-457c-9a1f-1b7dd5928304 Farmanoi CODE_128
6776 b359db35-9be6-4369-b796-04b47b4044be Signorizza EAN_13
6777 b36ae43e-8a9c-41f7-8c54-d5ae673c94f5 Bio&Co EAN_13
6778 b43d0b6b-db53-44a7-b518-30cace59c222 British Garden Centres CODE_39
6779 b4606b36-853e-4014-9524-fc07fa6e1d4a Cantina Rauscedo EAN_13
6780 b4663d4f-dd9f-43cc-ba0e-4ce9b0beccd2 Пивлавка EAN_13
6781 b4725b6c-105f-4898-a8d5-ba426ddf9508 Yamazaki CODE_128
6782 b472df21-8f40-44ff-a11f-bbe1d76d6d58 Company Shop Group CODE_39
6784 b4b5583a-3d0e-458e-b800-3b43968a8421 Pirex CODE_128
6785 b4c412d7-ad0b-4afd-aed8-0cf113f445ca Аквафор CODE_128
6786 b4e4e61f-8605-45b6-b672-fce67898ba4e Schuhkay EAN_8
6787 b4f37441-b068-443f-bbfb-fca23c9f5eec Tuttigiorni EAN_13
6788 b4f4c3c3-4ad3-4431-9048-1d6b0e47a649 Tezenis CODE_128
6789 b52836be-a999-4bf8-ba0b-5f2b9b96a509 Youth Hostels Luxembourg CODE_128
6790 b54963ea-a217-434b-b0fa-e8114fd6b999 Пинта EAN_13
6791 b54ed01d-e46b-4f24-8ce9-e08f624f2ddb IGA CODE_128
6792 b5656988-55fb-46c8-91ab-24a5b8422549 Moja Starówka CODE_128
6793 b5695b84-a5cf-4286-87ab-afbe9368be1f Tulipes CODE_39
6794 b5dc4188-75d6-4cf1-b7f2-b0e85a57bc9a Boulangeries Maison Toulorge CODE_128
6823 b9f36613-ed74-441e-abce-66d465b83594 Accademia Italiana della Cucina CODE_39
6824 b9f3eacc-e6d9-43e2-93f0-a1e63221b1fe Più Medical CODE_128
6825 b9fc9d9a-da0e-4fe2-82d8-5d6672263b4b Kačka CODE_128
6826 ba063e76-f5be-4e98-a549-7040a825caf7 Trendevice CODE_128
6827 ba0d23c2-0030-4b68-9bec-6daf6c0db596 Zoomarket CODE_128
6828 ba119be5-7382-453c-93be-625c555aec84 Vitaminas CODE_128
6829 ba5aca20-b0fd-417d-8739-ba9b347c8fff Клиника ЛМС CODE_128
6889 bfcd1bbc-3671-4a2b-99d4-8195c5246644 Metalmark EAN_13
6890 bfe5aac8-ea2d-41e0-ba15-af949e5437d7 Каприз EAN_13
6891 bff24292-b2e3-4322-9462-d5ecc80ce044 Halfords Motoring Club QR_CODE
6892 bricoman-it Bricoman CODE_128
6893 c03f0f47-ce09-4bf1-95f8-c1d0c6f1a8ca Coop EAN_13
6894 c043ef0e-49a9-4f10-877f-974247cf0f16 IperBiobottega EAN_13
6895 c0712c54-a6a6-4695-b9ba-4f5a296b66cf Apothical EAN_13
6939 c51c692c-9e90-48fb-9047-38d3bb7fec2d Мясницкий Ряд CODE_128
6940 c53f804f-29e6-4dc0-9f66-0b9b016cdade Möbel Borst CODE_39
6941 c54a0027-fd79-457e-80eb-e73e1332e3e9 Ni Hao CODE_128
6942 c57001e2-db2b-4f15-8c49-29c6502a86e8 Underwood Meat Company CODE_39
6943 c5846a8f-687a-4de9-a5b5-b575488ac84b Radhe Wholesale & Retail EAN_13
6944 c59fc214-7895-40fc-8f94-9d1d800b66d2 Conradt CODE_39
6945 c5acc06c-0b7d-4e4d-bee3-2134e2fb3b9c Belles Fleurs EAN_13
6979 c925f293-54ee-47ba-ba48-792945c5fa94 Смайл UPC_A
6980 c9295edb-4acf-4e21-b931-d07d1b97e9be Weingärtner Gartencenter EAN_13
6981 c935a5b9-03f1-4194-8aa2-39545b376065 Alpina Intimo CODE_39
6982 c94a90ff-4118-4310-bcf2-588463110b83 knihovna Rosice CODE_128
6983 c964ff0f-5ac9-4976-967f-a55c7ec72e14 Mega Pet Warehouse CODE_128
6984 c998f7d2-6403-46c5-ba21-270195e61cd3 MAX & Co EAN_13
6985 c9d387cb-7a0f-492f-a18d-f4d559ccbade Информат EAN_13
6991 ca650de4-55cc-4df6-8994-3378274bebf5 Moby Dick CODE_128
6992 caa55951-513c-4dca-b0bc-3cb80d85e4f2 PANORAMICO EAN_13
6993 cab2ae0e-10bc-4c58-b159-59f4e8566ca7 Hawkesbury Library Service CODE_39
6994 cad853d8-b9fa-43d6-b37d-39274a571269 Harmony Beauty EAN_8
6995 caddfc56-1d2a-454c-bece-1516b13fa249 Millstream EAN_13
6996 cae4d233-caae-43ff-aaba-affdc99c2d98 ALTERNATURA d.o.o. EAN_13
6997 cae69560-d7e6-4cb7-9ac5-95199c15f9cc Blumenmarkt Dietrich CODE_128
6998 caff4297-2ae6-4315-9329-614c8510eb7f Вместе Выгодно CODE_128
6999 cb03988e-5063-4f48-aef2-9f959f9771a2 DVV CODE_128
7000 cb12d304-17dc-45ba-be1c-5602237320ce Vero Moda QR_CODE
7001 cb1f1114-d1ea-4987-badc-7194d1ab1ca8 Zahradní Centrum CODE_128
7002 cb4ead90-a2f7-41ba-80eb-d4970bed83bd A-Kaart CODABAR
7003 cb7b9237-0c2d-437a-ba38-fa6decca977e 萊爾富 CODE_128
7020 cd26930f-c1ac-4543-a23c-0b90cfa0b1f7 36.6 Здоровье EAN_13
7021 cd38f71a-1a0a-4ba7-ac1d-43974fd42e1a Gel Market EAN_13
7022 cd73cbfb-68f5-4d67-9411-310695558c6b NKC CODE_128
7023 cd840f28-f17c-44ed-9ec7-15b48aa2f0e1 Knihovna Matěje Josefa Sychry EAN_13
7024 cd9d6482-a7dd-4283-a776-f0982ade57a5 Biraghi EAN_13
7025 cdd777ae-6fa4-458d-b7e5-f7c18fff857a EU COVID-19 Vaccinationsintyg QR_CODE
7026 cdd87d70-3e73-48a2-a88a-5e1083e41d0a 1000 мелочей EAN_13
7042 cfce4667-ff5d-44f0-8ba7-fbc44bbf2cb5 Orange Club CODE_128
7043 cfd15fb5-1bac-455b-a5f7-b808390fba06 Сакура Суши EAN_8
7044 cff8ca3d-3620-4098-9b8b-e181f84f6ec8 365 CODE_128
7045 d0153291-afc6-4d0f-8120-74c0b321434a SA Guild of Actors CODE_128
7046 d0540b51-9716-4d59-bc2f-1582b044c029 Wedding Price Card CODE_128
7047 d05b520c-091a-4a9b-84de-689484927109 Lotto Niedersachsen DATA_MATRIX
7048 d0a04b4f-df54-4fcd-b410-87ea5d0986aa EU COVID-19 Očkovací preukaz - Záber na prvé očkovanie QR_CODE
7049 d0b9a6b8-f724-4fe7-8195-e810297505af Chocolaterie Albèrt EAN_13
7050 d1018675-b1b2-44bc-91b6-a985d744836f La Sirena EAN_13
7080 d4115422-7d2e-4001-9c49-4c1353c8b88d Secom EAN_13
7081 d44c1355-2941-4393-aeb8-1a7ad7122f67 HUALI MARKET EAN_13
7082 d4502068-af6b-43ab-b9a5-46dc1899e22a Ябко EAN_13
7083 d4517693-3f1c-45a6-86f2-d60ad19d04e9 U Baristu QR_CODE
7084 d4934c41-3cae-40dd-bd5c-2ca88bdcf9f5 Bau-Buy EAN_8
7085 d4b67cb7-cfbf-4bac-8711-2088b8592e5f Wara EAN_13
7086 d4e44512-0ac2-4d1f-8603-01cd0497416c The co-operative CODE_128
7111 d71e4888-dd0b-4aac-ae5b-937b17ee4149 FQCC EAN_13
7112 d7893d3c-c704-4daa-955b-a97f061d0138 ВАБИ САБИ CODE_128
7113 d78fc335-cab2-40d7-a56c-333f568b36b4 социалочка EAN_13
7114 d7959c14-98b1-4187-9088-494d1a7c5f9f Canningvale CODE_128
7115 d79a1500-206d-407a-b111-724b898aa154 Sportsman's Warehouse CODE_39
7116 d7a18a8f-32b5-43f5-8290-5caf4297aaf8 Halfords Colleague Discount CODE_128
7117 d7b8deb4-4006-4223-9600-331458fade3d Пиватерра EAN_13
7178 df2f73ec-a3c1-4169-b47e-4742bcab704d Digizenz QR_CODE
7179 df3228e8-78d0-42c7-8e45-30089e5267ea Эдисон EAN_13
7180 df53a52a-320b-41ce-8ca0-92da86fcae0c Koutný spol CODE_93
7181 df5ad302-ae2d-47db-b9c9-b5e030d3b553 ALDI CODE_128
7182 df62dc4f-b31a-4615-a289-94410da0ce7b Melkior CODE_128
7183 df668825-ed7c-4f05-b74b-47ec6daa69f0 Breakers CODE_39
7184 dfc5ba69-483e-46ab-8951-3afc7c6d7460 Chaussexpo CODE_128
7191 e0663514-cb9c-413a-ad94-8b83dde796f8 Hommy EAN_13
7192 e0b022eb-bc2b-4553-8345-5869e4f644e2 Life 2.0 CODE_39
7193 e0b2fcbb-e302-4a5e-aa4b-3991fcee7831 KanclerCom EAN_13
7194 e0d0863f-c345-4e3d-baf7-853414056795 Sport 2000 EAN_13
7195 e0db8778-d9a2-4b6c-bece-1b2c4bef11c0 Everyone Fitness CODE_39
7196 e0eadec9-539e-4316-b9bd-9e29d59c1abb Containers for change CODE_128
7197 e132948b-f6a2-44cb-b0c1-d9366151a0e2 BSTRONG CODE_128
7226 e4561f48-5c68-4c2e-88ea-7eeb531a8b41 Lubo CODE_128
7227 e456ceeb-d76a-4684-9e2a-54935e77daa5 Tendenze Calzature EAN_13
7228 e4dfacd9-9513-4231-b09b-51af53151edd Дворик EAN_13
7229 e4f5270b-5a69-41a3-a39e-e3e7e4460ddd OSCARwash QR_CODE
7230 e4f54b47-0238-4fd6-9109-d5ce424981c6 Фламинго EAN_13
7231 e5059f27-dc93-4296-b4d5-1162b692c5ec Северная Звезда CODE_128
7232 e550a9a1-c25b-4658-a9fa-38764c584693 Mon Grand Plaisir QR_CODE
7233 e55b3ee0-ac34-480c-8fd3-c63c3a6ae28c Муниципальная Аптека EAN_13
7234 e55f98ef-9258-4eb7-97fb-7e97d2aacdaa COOK Kitchen QR_CODE
7235 e5616ded-48e7-45d7-b706-a82ef5ab9667 OROCASH CODE_39
7236 e569e534-de02-4cde-a15e-ee5f3e70794e Partyland CODE_128
7237 e570f1ac-a109-4473-8644-9b6daf701d8d najlepšia lekáreň CODE_128
7238 e580263e-726d-4768-a756-1cec4966dbb6 Lower Plenty Hotel CODE_128
7245 e6b4a59b-4d9a-42c6-aae3-5baf468c1999 Evolution EAN_13
7246 e6c68ae5-12f0-4c8b-b5ca-8f725874c704 Полушка EAN_13
7247 e6e830c8-16b9-4382-9b84-93dca76ee66c домаркет CODE_128
7248 e6edbb92-d988-4bf3-87f8-e9684b5a3983 e6ece7bc-ac39-45c6-b4f3-c225719c3a0e UFS Dispensaries Mikado CODE_39 CODE_128
7249 e6edbb92-d988-4bf3-87f8-e9684b5a3983 UFS Healthcare CODE_39
7250 e6efc01d-98bf-478e-a916-f51178a01690 Erborian CODE_128
7251 e6f32c21-af1b-4da3-9c8e-36757cccde3b Sally Beauty CODE_128
7252 e6f9e7a3-2b1f-4ec7-8c99-8c5d16988f56 Iндустрiя краси EAN_13
7253 e71a67d2-6898-4a05-91dd-7ae19095129f FMBrikon UPC_A
7254 e71b01e0-cdf1-4f6b-bee6-d7e2fc9b3a81 Walder Schuhe CODE_128
7255 e760dd3f-aeb2-42a2-bf38-5866c061c2e9 Cash Piscines CODE_128
7256 e79c474b-4ee0-4885-a9eb-7349bdc2bfc9 KIA CODE_39
7284 eab09679-f885-46a1-8f96-3f82ea3b9d82 Niké ITF
7285 eac387cc-ae67-4874-b420-12dae0150abc Woss EAN_13
7286 eacb1c97-e7c2-4ed6-bf64-84db244fbdd5 Медтехника Ортосалон EAN_13
7287 eacdf92e-6601-437d-af01-15156a3ee199 Barossa Co-op QR_CODE
7288 eb01f161-6d42-4ae9-b381-2ca0be34cd6f PiùMe CODE_128
7289 eb2cfbfc-1d25-4ff7-9eb6-743a74c302c4 Клеопатра EAN_13
7290 eb32c9d7-80b8-4147-942f-3b94ad7dd8fd Brico Pro EAN_13
7338 ef8b1a62-353b-44e3-bfba-b1331b6509ab Evoluphar CODE_128
7339 ef8f92d7-a5a1-441e-8e91-133b64da57e5 Anabel Arto CODE_128
7340 efdfda06-b4ad-4bd6-ad00-41d6ab9aeaf8 Profi Center CODE_128
7341 effbec31-0ed6-4eb3-969b-17d99d340d78 Sedici Piadina CODE_128
7342 f01c0047-5952-4805-a48b-4d455d833777 ХозСити EAN_13
7343 f032c0d2-9f71-47fa-9574-8970a917b63b Brianza Biblioteche EAN_13
7344 f0637a9d-47a8-44a0-8342-c409b6c55b6b Baby EAN_13
7355 f1df75b9-1d7a-4cba-9e9d-f4411f4ea48b Индейкин Дом EAN_13
7356 f1e508d1-b901-45ba-9ace-b98e96c8fd38 Dalbe EAN_13
7357 f1f1c15f-8a75-4a18-9b01-251778c8fb45 Optika Anda CODE_128
7358 f1fe28ce-0c9a-4b64-a455-c9f14c3fa2be PME Legend CODE_128
7359 f2153289-2b50-463f-91d4-37ceb62f304b Колесо2 CODE_39
7360 f21a2eea-3a15-4765-8ea6-3f1ec10fdd87 EU COVID-19 Vaccinationsattest - Anden vaccination Skudt QR_CODE
7361 f2292778-e0fe-4925-b939-b4716342fa44 Tread & Miller CODE_128
7370 f2b9fa76-c78f-4d2c-821f-70678bc8d4d5 Parfümerie Becker EAN_8
7371 f2c8f722-9c5f-423d-9989-deca7901aa11 Poetry CODE_128
7372 f2d3f68c-7b77-4464-91d2-3162e74bea48 Neinver EAN_13
7373 f2dc6f84-01cc-4e13-aec2-2ce88367a27f Ljekarne Prima Pharme CODE_128
7374 f3189d64-dd39-468b-872d-3bb70e4d416c The Watergardens Hotel CODE_128
7375 f3287ab2-0308-42f8-92dc-3147456a4a69 НУЖНО! EAN_13
7376 f359407e-234b-4fbb-af07-f3b293a51bbb MaRinella EAN_13
7377 f35a3882-27b2-417d-8093-e87f8f25509a Первый Семейный CODE_128
7378 f3852d29-47fe-4528-83cd-5ae7b31fdb0e Kraus PDF_417
7379 f3e63893-802b-4e40-9480-f3fbfda0a3e4 Аптека живика EAN_13
7386 f4aefdf7-e66f-4980-a0ee-7e6f1afcc8df Color Line EAN_13
7387 f4b16522-478d-4c84-bfa5-e0825ebf4917 bonVito PDF_417
7388 f4d0cac3-70a0-43dc-a204-fe5fd9ab428f KüstenCard Flexi CODE_128
7389 f4e09fa3-b712-4be5-915b-002082002246 Club VW Suisse QR_CODE
7390 f5002bd9-8e95-4c11-8a7c-e3d2fae42fe3 BCAA CODE_128
7391 f5356dd8-8762-4f36-8c50-f7383eccb840 Twój Market EAN_13
7392 f546e937-86b4-40eb-98cb-9a348d5dccec МаксиФлора EAN_13
7422 f8fa2370-261e-4e19-ba9c-46cd33ead64d Agri Sud Est EAN_13
7423 f90691bf-2879-4424-b2d5-5c09ee9ff700 Кроха CODE_128
7424 f915ed01-85f9-4a61-921b-0d33eaf6fd23 ЗооОптТорг.Рф EAN_13
7425 f9223231-26b6-4f86-9d2e-5756488c2e74 Jack & Jones QR_CODE
7426 f93e7a30-4351-47e5-b8b2-3a9546ad9bb8 BOTICINAL POWERSANTÉ EAN_13
7427 f940a1b8-c04b-4541-b307-7fdc1fa8eb91 Veggie Grill CODE_128
7428 f9447f67-140e-402d-9a27-e7c11cefebda Eleganza CODE_128
7441 fa11b2c7-a768-4d4b-b03d-c845df6cb341 Terra Viva CODE_128
7442 fa1670c0-1713-44f0-b57d-902b278ba741 нива EAN_13
7443 fa24b789-4774-41e1-8a52-216efc9de8ba foodmaster QR_CODE
7444 fa3bdecd-2216-4d2b-b39d-fb14681f62fc Fusion Gyms CODE_128
7445 fa5593eb-2f35-4a7f-8c69-1c4a726759be Форум EAN_13
7446 fa7407ee-0ddd-4727-bfc7-05c206c159d0 Toto EAN_13
7447 fa7f3968-0cba-4adb-b1bb-fb2083b98b2f Der Bäcker Eifler QR_CODE
7452 fadd868f-b34b-4604-8a24-c7fbcd8ea573 Big Marlin EAN_13
7453 fae896a0-9c57-4ff8-be30-195fbf137a0b Lotteria degli Scontrini CODE_128
7454 fafa23c9-5cda-4fb8-aab5-6faebc6386a8 NETTO CODE_128
7455 fb340faf-4fe5-4446-b811-217d615f5514 Abbonamento Musei QR_CODE
7456 fb507b68-ecf4-4397-969a-23e2427f76f2 Veritas EAN_13
7457 fb5e84a1-5e9f-4fa5-ad36-c6060927c415 BIT BY BIT CODE_128
7458 fb6edc61-a282-4217-9b44-ac2611b5977c Kierrätyskeskus CODE_128
7493 fe54303c-8e1c-4c62-8ee6-b9485e333419 Liverpool Library CODE_128
7494 fe889ad0-ea52-4069-a051-b5ceb4c4b4e7 Аптека Гермес EAN_13
7495 febc239e-ed07-45ac-905d-b6048a203784 Scarpamondo EAN_13
7496 fed489b7-1d23-4b3f-b20f-52c229575de0 Autowaspark Kuzee QR_CODE
7497 fee32f93-2fe4-4fa1-ab62-159bdc375668 Покупочка CODE_128
7498 fefcdd70-4aa8-4f78-b9e6-1dc18f9cd731 Button Blue EAN_13
7499 ff50e5dc-1f3a-43a7-a55d-4a7d96b12757 Le Guidon Niortais CODE_128
7500 ff92fe3e-1b38-409f-9701-ee7665fccb5e EU COVID-19 Certificado de Vacinação - Primeira injeção QR_CODE
7501 ff9fd337-4765-4ad1-90a3-62e4a78dc3ec Нияма QR_CODE
7502 ffa57152-01bd-48bc-be45-46bac303c450 Мед Сервис CODE_128

View File

@@ -50,11 +50,11 @@
<string name="settings">اعدادات</string>
<string name="settings_light_theme">فاتح</string>
<string name="settings_dark_theme">داكن</string>
<string name="settings_card_orientation">اتجاه الباركود</string>
<string name="settings_card_orientation">اتجاه الشاشة</string>
<string name="settings_portrait_orientation">الوضع الرأسي</string>
<string name="settings_landscape_orientation">الوضع الأفقي</string>
<string name="settings_theme">مظهر</string>
<string name="settings_display_barcode_max_brightness">عرض مشرق علي الباركود</string>
<string name="settings_display_barcode_max_brightness">شاشة ساطعة</string>
<string name="importSuccessful">تم استيراد البيانات</string>
<string name="exportSuccessful">تم تصدير البيانات</string>
<string name="enter_group_name">أدخل اسم المجموعة</string>
@@ -119,7 +119,6 @@
<string name="settings_blue_theme">أزرق</string>
<string name="settings_sky_blue_theme">أزرق سماوي</string>
<string name="settings_green_theme">أخضر</string>
<string name="settings_grey_theme">رمادي</string>
<string name="settings_brown_theme">بني</string>
<string name="app_contributors">أصبح ممكنًا بواسطة: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="sort">فرز</string>
@@ -238,9 +237,6 @@
<string name="importLoyaltyCardKeychainMessage">حدد ملفك <i>LoyaltyCardKeychain.csv</i> التصدير من Loyalty Card Keychain للاستيراد.
\nقم بإنشائه من قائمة الاستيراد / التصدير في Loyalty Card Keychain بالضغط على تصدير هناك أولاً.</string>
<string name="importStocard">الاستيراد من Stocard</string>
<string name="privacy_policy_popup_text">إشعار سياسة الخصوصية (مطلوب من قبل بعض متاجر التطبيقات):
\n
\nلا يتم جمع أي بيانات على الإطلاق ، والتي يمكن لأي شخص تأكيدها لأن تطبيقنا هو برنامج حر.</string>
<string name="failedGeneratingShareURL">تعذر إنشاء عنوان URL قابل للمشاركة. الرجاء الإبلاغ عن هذا.</string>
<string name="help_translate_this_app">ساعد في ترجمة هذا التطبيق</string>
<string name="on_google_play">على Google Play</string>
@@ -253,14 +249,6 @@
<string name="welcome">مرحبا بك في كاتيما</string>
<string name="updateBalanceTitle">كم أنفقت أو استلمت؟</string>
<string name="currentBalanceSentence">الرصيد الحالي: <xliff:g> %s </xliff:g></string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="zero">عرض الأرشيف (<xliff:g>%1$d</xliff:g> بطاقة)</item>
<item quantity="one">عرض الأرشيف (<xliff:g>%1$d</xliff:g> بطاقة)</item>
<item quantity="two">عرض الأرشيف (<xliff:g>%1$d</xliff:g> بطاقتين)</item>
<item quantity="few">عرض الأرشيف (<xliff:g>%1$d</xliff:g> بطاقات)</item>
<item quantity="many">عرض الأرشيف (<xliff:g>%1$d</xliff:g> بطاقات)</item>
<item quantity="other">عرض الأرشيف (<xliff:g>%1$d</xliff:g> بطاقات)</item>
</plurals>
<string name="importCards">استيراد البطاقات</string>
<string name="newBalanceSentence">الرصيد الجديد: <xliff:g>%s</xliff:g></string>
<string name="cameraPermissionDeniedTitle">تعذر الوصول إلى الكاميرا</string>
@@ -289,7 +277,7 @@
<string name="action_display_options">خيارات العرض</string>
<string name="settings_oled_dark_summary">يقلل من استخدام البطارية على شاشات OLED</string>
<string name="icon_header_click_text">اضغط لفترة طويلة لتحرير الصورة المصغرة</string>
<string name="settings_category_title_cards">البطاقات</string>
<string name="settings_category_title_cards">البطاقات الظاهرة</string>
<string name="show_note">إظهار الملاحظة</string>
<string name="switchToBackImage">التبديل إلى الصورة الخلفية</string>
<string name="switchToFrontImage">التبديل إلى الصورة الأمامية</string>
@@ -310,7 +298,7 @@
<string name="enter_card_id">أدخل رقم الهوية أو النص الموجود على بطاقتك</string>
<string name="addWithoutBarcode">إضافة بدون باركود</string>
<string name="field_must_not_be_empty">يجب ألا يكون الحقل فارغا</string>
<string name="app_name">Catima</string>
<string name="app_name">كاتيما</string>
<string name="settings_follow_sensor_orientation">التدوير دائمًا ( تجاهل إعدادات النظام)</string>
<string name="add_manually_warning_title">الفحص موصى به</string>
<string name="continue_">استمر</string>
@@ -324,4 +312,25 @@
<string name="multipleBarcodesFoundPleaseChooseOne">اي من الـbarcodes تريد استخدامه؟</string>
<string name="pageWithNumber">صفحة <xliff:g>%d</xliff:g></string>
<string name="noCameraFoundGuideText">يبدوا أن جهازك لا يمتلك كاميرا. إذا كان يمتلكها، أطفئ الجهاز وحاول مرة اخرى. اذا لم ينجح ذلك، أضغط على زر \"المزيد من الأختيارات\" في الأسفل لإضافة الباركود بطريقة أخرى.</string>
</resources>
<string name="importCancelled">تم الغاء الاستيراد</string>
<string name="exportCancelled">تم الغاء الاستخراج</string>
<string name="useFrontImage">استخدام صورة أمامية</string>
<string name="useBackImage">استخدم صورة خلفية</string>
<string name="addFromPkpass">اختر ملف الدفتر(.pkpass)</string>
<string name="unsupportedFile">هذا الملف غير مدعوم</string>
<string name="generic_error_please_retry">نعتذر، حدث خطأ ما، حاول مرة أخرى...</string>
<string name="settings_use_volume_keys_navigation">تبديل البطاقات باستخدام أزرار الصوت</string>
<string name="settings_use_volume_keys_navigation_summary">تبديل البطاقات الظاهرة باستخدام أزرار الصوت</string>
<string name="settings_category_title_cards_overview">نظرة عامة على البطاقات</string>
<string name="settings_column_count_portrait">الأعمدة في الوضع الرأسي</string>
<string name="settings_column_count_landscape">الأعمدة في الوضع الأفقي</string>
<string name="settings_automatic_column_count">تلقائي</string>
<string name="settings_column_count_1">١</string>
<string name="settings_column_count_2">٢</string>
<string name="settings_column_count_3">٣</string>
<string name="settings_column_count_4">٤</string>
<string name="settings_column_count_5">٥</string>
<string name="settings_column_count_6">٦</string>
<string name="settings_column_count_7">٧</string>
<string name="sort_by_valid_from">صالح من</string>
</resources>

View File

@@ -41,7 +41,7 @@
<string name="removeImage">Премахване на изображение</string>
<string name="takePhoto">Снимане</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="barcodeId">Стойност на щрихкода</string>
@@ -51,9 +51,6 @@
<string name="importFidme">Внасяне от FidMe</string>
<string name="exportOptionExplanation">Данните ще бъдат запазени на място по ваш избор.</string>
<string name="accept">Приемане</string>
<string name="privacy_policy_popup_text">Политика за личните данни (необходима от някои магазини за приложения):
\n
\nНЕ СЕ СЪБИРАТ ИЗОБЩО НИКАКВИ ДАННИ, което може да бъде потвърдено, защото приложението е със свободен код.</string>
<string name="privacy_policy">Политика за личните данни</string>
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
<string name="turn_flashlight_off">Изключва светкавицата</string>
@@ -78,7 +75,7 @@
<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_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>
@@ -157,7 +154,6 @@
</plurals>
<string name="app_contributors">Осъществено от: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="settings_brown_theme">Кафяво</string>
<string name="settings_grey_theme">Сиво</string>
<string name="settings_green_theme">Зелено</string>
<string name="settings_sky_blue_theme">Небесносиньо</string>
<string name="settings_blue_theme">Синьо</string>
@@ -207,7 +203,7 @@
</plurals>
<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>
@@ -226,10 +222,6 @@
<string name="nextCard">Следваща</string>
<string name="failedToOpenUrl">Първо инсталирайте уеб браузър</string>
<string name="welcome">Добре дошли при Катима</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="one">Преглед на архива (<xliff:g>%1$d</xliff:g> карта)</item>
<item quantity="other">Преглед на архива (<xliff:g>%1$d</xliff:g> карти)</item>
</plurals>
<string name="barcodeLongPressMessage">В приложението галерия могат да бъдат отваряни само изображения</string>
<string name="failedToRetrieveImageFile">Не е възможно извличане на изображение</string>
<string name="noCameraPermissionDirectToSystemSetting">За да сканирате щрихкодове с Catima е необходим достъп до камерата. За да промените разрешението докоснете тук.</string>
@@ -266,7 +258,7 @@
<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_cards">Преглед на карта</string>
<string name="settings_category_title_general">Общи</string>
<string name="settings_category_title_privacy">Поверителност</string>
<string name="settings_keep_screen_on_summary">Спира автоматичното заключване на екрана при преглед на карти</string>
@@ -295,4 +287,26 @@
<string name="errorReadingFile">Файлът не може да бъде прочетен</string>
<string name="failedLaunchingFileManager">Не е намерено приложение за управление на файлове</string>
<string name="multipleBarcodesFoundPleaseChooseOne">Кой от намерените щрихкодове желаете да бъде използван?</string>
</resources>
<string name="noCameraFoundGuideText">Изглежда, устройството няма камера. Ако има опитайте да рестартирате. В противен случай използвайте бутона „Още“, за да добавите шрихкод по друг начин.</string>
<string name="importCancelled">Внасянето е спряно</string>
<string name="exportCancelled">Изнасянето е спряно</string>
<string name="useFrontImage">Използване на предната страна</string>
<string name="useBackImage">Използване на задната страна</string>
<string name="settings_use_volume_keys_navigation">Сменяне на картите с бутоните за звука</string>
<string name="settings_use_volume_keys_navigation_summary">Бутоните за силата на звука сменят видимата карта</string>
<string name="settings_automatic_column_count">Автоматично</string>
<string name="settings_column_count_2">2</string>
<string name="settings_column_count_4">4</string>
<string name="settings_column_count_5">5</string>
<string name="settings_column_count_1">1</string>
<string name="settings_column_count_3">3</string>
<string name="settings_column_count_6">6</string>
<string name="settings_column_count_7">7</string>
<string name="settings_column_count_landscape">Колони в пейзажен изглед</string>
<string name="settings_column_count_portrait">Колони в портретен изглед</string>
<string name="settings_category_title_cards_overview">Списък с карти</string>
<string name="generic_error_please_retry">Съжаляваме, нещо се обърка, опитайте отново…</string>
<string name="addFromPkpass">Изберете файл на Passbook (.pkpass)</string>
<string name="unsupportedFile">Този вид файлове не се поддържат</string>
<string name="sort_by_valid_from">Начало валидност</string>
</resources>

View File

@@ -173,9 +173,6 @@
<string name="chooseExpiryDate">মেয়াদ শেষ হওয়ার তারিখ মনোনীত করুন</string>
<string name="moveBarcodeToTopOfScreen">বারকোডটি স্ক্রিনের উপরে উঠিয়ে দিন</string>
<string name="errorReadingImage">ছবিটি স্ক্যান করা যাচ্ছে না</string>
<string name="privacy_policy_popup_text">ব্যক্তিগত তথ্যের গোপনীয়তা নীতি নোটিশ (কিছু অ্যাপ স্টোরের এটি লাগে):
\n
\nকোন তথ্য একেবারেই সংগ্রহ করা হয় না, যা যে কেউ নিশ্চিত করতে পারবেন কারন আমাদের অ্যাপ মুক্ত সফটওয়্যার।</string>
<string name="balance">ব্যালান্স</string>
<string name="points">পয়েন্ট</string>
<string name="chooseImportType">এখান থেকে তথ্য আমদানি করুন</string>
@@ -195,10 +192,6 @@
<item quantity="other"><xliff:g>%1$d</xliff:g> cards (<xliff:g id="archivedCount">%2$d</xliff:g> archived)</item>
</plurals>
<string name="nextCard">পরবর্তী</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="one">সংরক্ষণাগার দেখুন (<xliff:g>%1$d</xliff:g> কার্ড)</item>
<item quantity="other">সংরক্ষণাগার দেখুন (<xliff:g>%1$d</xliff:g> কার্ডগুলি)</item>
</plurals>
<string name="failedToOpenUrl">প্রথমে একটি ওয়েব ব্রাউজার ইন্সটল করুন</string>
<string name="newBalanceSentence">নতুন ব্যালেন্স: <xliff:g>%s</xliff:g></string>
<string name="chooseValidFromDate">তারিখ থেকে বৈধ নির্বাচন করুন</string>
@@ -219,7 +212,6 @@
\nপ্রথমে ভাউচার ভল্টে এক্সপোর্ট টিপে এটি তৈরি করুন।</string>
<string name="settings_oled_dark">অন্ধকার থিমের জন্য খাঁটি কালো পটভূমি</string>
<string name="setIcon">আইকন সেট করুন</string>
<string name="settings_grey_theme">ধূসর</string>
<string name="updateBalance">ব্যালেন্স আপডেট করুন</string>
<string name="barcodeLongPressMessage">গ্যালারি অ্যাপে শুধুমাত্র ছবি খোলা যাবে</string>
<string name="translate_platform">Weblate-এ</string>

View File

@@ -12,7 +12,6 @@
<string name="about">সম্পর্কিত</string>
<string name="card">কার্ড</string>
<string name="yes">হ্যাঁ</string>
<string name="settings_grey_theme">ধূসর</string>
<string name="ok">ঠিক আছে</string>
<string name="sendLabel">পাঠান…</string>
<string name="sort_by_name">নাম</string>
@@ -76,4 +75,4 @@
<string name="exportFailedTitle">রপ্তানি ব্যর্থ</string>
<string name="settings_card_orientation">বারকোড অভিমুখ (ওরিয়েন্টেশন)</string>
<string name="app_name">ক্যাটিমা</string>
</resources>
</resources>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="groups">Grups</string>
<string name="action_add">Afegeix</string>
<string name="save">Desa</string>
@@ -14,4 +14,235 @@
<string name="welcome">Benvingut a Catima</string>
<string name="noGiftCards">Cliqueu el botó + més per afegir una targeta, o importeu-ne des del ⋮ menú.</string>
<string name="photos">Fotos</string>
</resources>
<string name="app_name">Catima</string>
<string name="moveDown">Baixar abaix</string>
<string name="setBackImage">Setejar la imatge posterior</string>
<string name="setFrontImage">Imatge Frontal</string>
<string name="exportPassword">Setegi el password per tal de protegir l\'exportació (opcional)</string>
<string name="failedGeneratingShareURL">No s\'ha pogut generar una URL per compartir. Siusplau reporti-ho.</string>
<string name="unarchive">Desarxivar</string>
<string name="on_google_play">al Google Play</string>
<string name="settings_locale">Idioma</string>
<string name="field_must_not_be_empty">El camp no pot estar buit</string>
<string name="importOptionApplicationTitle">Utilitzar una altra app</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os i contribuïdors</string>
<string name="app_copyright_short">Copyright © Sylvia van Os i contribuïdors</string>
<string name="app_license">Software lliure Copyleft, licència GPLv3+</string>
<string name="app_resources">Recursos lliures de tercers: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="thumbnailDescription">Miniatura</string>
<string name="starImage">Estrella de preferides</string>
<string name="settings">Configuració</string>
<string name="settings_theme">Tema</string>
<string name="settings_light_theme">Tema clar</string>
<string name="settings_system_theme">Tema de sistema</string>
<string name="settings_dark_theme">Tema Fosc</string>
<string name="settings_card_orientation">Orientació de la pantalla</string>
<string name="settings_allow_content_provider_read_title">Permet altres apps a accedir a les meves dades</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Desactiva el bloqueix la pantalla mentre es visualitza la targeta</string>
<string name="settings_allow_content_provider_read_summary">Les aplicacions han de seguir demanant permís per tenir-hi accés</string>
<string name="leaveWithoutSaveTitle">Sortir</string>
<string name="leaveWithoutSaveConfirmation">Vols sortir sense grabar?</string>
<string name="passwordRequired">Introdueixi el password</string>
<string name="turn_flashlight_on">Encendre el llum flash</string>
<string name="settings_magenta_theme">Magenta</string>
<string name="settings_violet_theme">Violeta</string>
<string name="settings_blue_theme">Blau</string>
<string name="settings_green_theme">Verd</string>
<string name="translate_platform">a la Pàgina Web</string>
<string name="report_error">Informar un Error</string>
<string name="archived">Targeta arxivada</string>
<string name="reverse">...en ordre invers</string>
<string name="icon_header_click_text">Pulsa llarg per editar la miniatura</string>
<string name="show_note">Mostrar nota</string>
<string name="add_manually_warning_title">Recomenem escanejar</string>
<string name="add_manually_warning_message">En algunes targetes el valor imprès en la targeta no correspon amb el codi registrat en el codi de barres. Per això, introduint manualment el codi pot no funcionar en alguns casos. Recomanem sempre que sigui possible escanejar la targeta amb la càmera. Vol igualment continuar la edició manual?</string>
<string name="continue_">Continuar</string>
<string name="exportOptionExplanation">La informació serà escrita al lloc de la seva elecció.</string>
<string name="importOptionFilesystemTitle">Importar desde el sistema de fitxers</string>
<string name="importOptionFilesystemButton">Desde el sistema de fitxers</string>
<string name="selectBarcodeTitle">Sel•lecciona el Codi de Barres</string>
<string name="importSuccessful">Dades importades correctament</string>
<string name="exportSuccessful">Dades exportades correctament</string>
<string name="failedOpeningFileManager">Instala un gestor de fitxers.</string>
<string name="showMoreInfo">Mostrar informació</string>
<string name="version_history">Històric de versions</string>
<string name="sort_by">Ordenar per</string>
<string name="sort_by_most_recently_used">Per les més utilitzades</string>
<string name="options">Opcions</string>
<plurals name="selectedCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> seleccionat</item>
<item quantity="many"><xliff:g>%d</xliff:g> seleccionats</item>
<item quantity="other"><xliff:g>%d</xliff:g> seleccionats</item>
</plurals>
<string name="importOptionFilesystemExplanation">Escull un fitxer especific del sistema de fitxers.</string>
<string name="no">No</string>
<string name="settings_pink_theme">Rosa</string>
<string name="sort">Ordenar</string>
<string name="failedToRetrieveImageFile">Ha fallat l\'obtenció del fitxer d\'imatge</string>
<string name="barcodeLongPressMessage">Les imatges només es poden obrir desde la app galeria</string>
<string name="settings_category_title_privacy">Privacitat</string>
<plurals name="deleteCardsTitle">
<item quantity="one">Eliminar <xliff:g>%d</xliff:g> targeta</item>
<item quantity="many">Eliminar <xliff:g>%d</xliff:g> targetes</item>
<item quantity="other">Eliminar <xliff:g>%d</xliff:g> targetes</item>
</plurals>
<plurals name="deleteCardsConfirmation">
<item quantity="one">Eliminaras aquesta <xliff:g>%d</xliff:g> targeta permanentment?</item>
<item quantity="many">Eliminaras aquestes <xliff:g>%d</xliff:g> targetes permanentment?</item>
<item quantity="other">Eliminaras aquestes <xliff:g>%d</xliff:g> targetes permanentment?</item>
</plurals>
<plurals name="groupCardCountWithArchived">
<item quantity="one"><xliff:g>%1$d</xliff:g> targeta (<xliff:g id="archivedCount">%2$d</xliff:g> arxivada)</item>
<item quantity="many"><xliff:g>%1$d</xliff:g> targetes (<xliff:g id="archivedCount">%2$d</xliff:g> arxivades)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> targetes (<xliff:g id="archivedCount">%2$d</xliff:g> arxivades)</item>
</plurals>
<string name="importCancelled">Importació anulada</string>
<string name="exportCancelled">Exportació cancelada</string>
<string name="noGiftCardsGroup">Crea algunes targetes, asigna-les en un grup aquí.</string>
<string name="noMatchingGiftCards">Sense resultats. Prova a canviar la teva cerca.</string>
<string name="storeName">Nom</string>
<string name="note">Nota</string>
<string name="cardId">Id. de la Targeta</string>
<string name="barcodeType">Tipus de codi de barres</string>
<string name="noBarcode">Sense codi de barres</string>
<string name="settings_portrait_orientation">Vertical</string>
<string name="yes">Si</string>
<string name="addFromPdfFile">Seleccioni un PDF</string>
<string name="errorReadingFile">No s\'ha pogut llegir el fitxer</string>
<string name="failedLaunchingFileManager">No s\'ha pogut trobar un gestor de fitxers compatible</string>
<string name="multipleBarcodesFoundPleaseChooseOne">Quin dels següents codis de barres prefereix utilitzar?</string>
<string name="pageWithNumber">Pàgina <xliff:g>%d</xliff:g></string>
<string name="settings_follow_system_orientation">Seguir el sistema</string>
<string name="settings_landscape_orientation">Horitzontal</string>
<string name="intent_import_card_from_url_share_text">Vull compartir una targeta amb tu</string>
<string name="takePhoto">Fer una foto</string>
<string name="help_translate_this_app">Ajuda a traduïr aquesta app</string>
<string name="license">Llicència</string>
<string name="credits">Crèdits</string>
<string name="unarchived">Targeta desarxivades</string>
<string name="failedLaunchingPhotoPicker">No s\'ha pogut trobar una aplicació de galeria de fotos</string>
<string name="previousCard">Anterior</string>
<string name="failedToOpenUrl">Instali un navegador abans</string>
<string name="importCards">Importar targetes</string>
<string name="updateBalanceTitle">Quan ha gastat o ha rebut?</string>
<string name="updateBalanceHint">Introdueixi quantitat</string>
<string name="anyDate">Qualsevol data</string>
<string name="validFromSentence">Vàlid desde: <xliff:g>%s</xliff:g></string>
<string name="setBarcodeHeight">Setejar l\'alçada del codi de barres</string>
<string name="donate">Donatiu</string>
<string name="receive">Rebre</string>
<string name="amountParsingFailed">Import invàlid</string>
<string name="barcodeImageDescriptionWithType">Codi de barres <xliff:g>%s</xliff:g></string>
<string name="about_title_fmt">Sobre <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Versió: <xliff:g id="version">%s</xliff:g></string>
<string name="settings_follow_sensor_orientation">Sempre rota (ignora la configuració de sistema)</string>
<string name="settings_display_barcode_max_brightness_summary">Alguns escàners ho necesiten</string>
<string name="settings_keep_screen_on">Mantenir la pantalla encesa</string>
<string name="settings_keep_screen_on_summary">Desactiva el bloqueix de la pantalla mentre mostra una targeta</string>
<string name="settings_disable_lockscreen_while_viewing_card">Evita el bloqueix de la pantalla</string>
<string name="enter_group_name">Introdueix el nom del grup</string>
<string name="group_edit">Editar el Group</string>
<plurals name="groupCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> targeta</item>
<item quantity="many"><xliff:g>%d</xliff:g> targetes</item>
<item quantity="other"><xliff:g>%d</xliff:g> targetes</item>
</plurals>
<string name="group_name_is_empty">El nom del grup ha de contenir algun text</string>
<string name="all">Totes</string>
<string name="settings_oled_dark">Negre pur en el tema fosc</string>
<string name="selectColor">Sel•leccioni el color</string>
<string name="setIcon">Setegi la miniatura</string>
<string name="settings_theme_color">Color del tema</string>
<string name="app_contributors">Fet possible per: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="updateBalance">Actualitzar el balanç</string>
<string name="sort_by_name">Nom</string>
<string name="archive">Arxivar</string>
<string name="currentBalanceSentence">Balanç actual: <xliff:g>%s</xliff:g></string>
<string name="height">Alçada:</string>
<string name="switchToBackImage">Canviar a la imatge posterior</string>
<string name="switchToBarcode">Canviar al codi de barres</string>
<string name="show_name_below_image_thumbnail">Mostrar el nom sota de la imatge en miniatura</string>
<string name="settings_category_title_cards">Veure la Targeta</string>
<string name="enter_card_id">Introdueixi el nombre ID o text de la seva targeta</string>
<string name="card_id_must_not_be_empty">ID de la Targeta no pot estar buit</string>
<string name="add_a_card_in_a_different_way">Afegeix una targeta de forma diferent</string>
<string name="unstar">Treure entre les preferides</string>
<string name="star">Afegir a les preferides</string>
<string name="cancel">Cancel•la</string>
<string name="deleteConfirmation">Vols eliminar de forma permanent aquesta targeta?</string>
<string name="share">Compartir</string>
<string name="sendLabel">Enviar…</string>
<string name="editCardTitle">Editar Targeta</string>
<string name="addCardTitle">Afegir Targeta</string>
<string name="scanCardBarcode">Escanejar Codi de Barres</string>
<string name="cardShortcut">Drecera a la Targeta</string>
<string name="noCardsMessage">Afegeix primer una targeta</string>
<string name="noCardExistsError">No s\'ha pogut trobar aquesta targeta</string>
<string name="failedParsingImportUriError">No s\'ha pogut analitzar la URI d\'importació</string>
<string name="openFrontImageInGalleryApp">Obrir la imatge frontal a l\'app de galeria</string>
<string name="settings_lock_on_opening_orientation">En obrir la targeta, bloquejar la orientació de la pantalla</string>
<string name="settings_use_volume_keys_navigation_summary">Utilitza els botons de volum per canviar la targeta que es mostra</string>
<string name="updateBarcodeQuestionText">Ha canviat el valor ID. Vol actualitzar també el codi de barres per uter utilitzar el mateix valor?</string>
<string name="settings_sky_blue_theme">Blau fluix</string>
<string name="starred">Preferides</string>
<string name="deleteConfirmationGroup">Vols eliminar aquest grup?</string>
<string name="removeImage">Eliminar imatge</string>
<string name="app_libraries">Llibreries lliures de tercers: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="settings_display_barcode_max_brightness">Màxima iluminació</string>
<string name="settings_brown_theme">Marró</string>
<string name="manually_enter_barcode_instructions">Introdueixi el ID de la targeta manualment i trii un codi de barres que s\'assembli al de la seva targeta.</string>
<string name="rate_this_app">Valora aquesta app</string>
<string name="exportPasswordHint">Introdueixi el password</string>
<string name="backImageDescription">Imatge posterior</string>
<string name="source_repository">Repositori font</string>
<string name="on_github">al Github</string>
<string name="include_if_asking_support">Si vol demanar suport tècnic, inclogui la següent informació:</string>
<string name="newBalanceSentence">Nou balanç: <xliff:g>%s</xliff:g></string>
<string name="openBackImageInGalleryApp">Obrir la imatge posterior a l\'app de la galeria</string>
<string name="generic_error_please_retry">Perdoni, alguna cosa ha anat malament, siusplau torni-ho a provar...</string>
<string name="settings_column_count_6">6</string>
<string name="useBackImage">Utilitzar la imatge posterior</string>
<string name="sort_by_valid_from">Valid desde</string>
<string name="sort_by_expiry">Expiració</string>
<string name="and_data_usage">i us de dades</string>
<string name="shortcutSelectCard">Sel•leccioni una targeta</string>
<string name="duplicateCard">Duplicar</string>
<string name="nextCard">Següent</string>
<string name="validFromDate">Vàlid desde</string>
<string name="chooseValidFromDate">Esculli una data inicial vàlida</string>
<string name="switchToFrontImage">Canviar a la imatge frontal</string>
<string name="show_balance">Mostrar balanç</string>
<string name="show_validity">Mostrar la validesa</string>
<string name="settings_category_title_cards_overview">Vista de targetes</string>
<string name="settings_column_count_portrait">Columnes en mode vertical</string>
<string name="settings_column_count_landscape">Columnes en mode apaisat</string>
<string name="settings_automatic_column_count">Automàtic</string>
<string name="settings_column_count_1">1</string>
<string name="settings_column_count_2">2</string>
<string name="settings_column_count_3">3</string>
<string name="settings_column_count_4">4</string>
<string name="settings_column_count_5">5</string>
<string name="settings_column_count_7">7</string>
<string name="settings_category_title_general">General</string>
<string name="action_display_options">Mostrar opcions</string>
<string name="show_archived_cards">Mostrar targetes arxivades</string>
<string name="view_online">Vista online</string>
<string name="action_more_options">Més opcions</string>
<string name="addWithoutBarcode">Afegeix una targeta sebse codi de barres</string>
<string name="noCameraFoundGuideText">El seu dispositiu sembla que no té càmera. Si realment en té, provi a reiniciar el dispositiu. Sino utilitzi el botó Més opcions i introdueixi el codi de barres d\'una altra manera.</string>
<string name="useFrontImage">Utilitzar la imatge frontal</string>
<string name="addFromPkpass">Seleccioni el fitxer Passbook (.pkpass)</string>
<string name="unsupportedFile">Aquest fitxer no està soportat</string>
<string name="settings_use_volume_keys_navigation">Canviar les targetes al prèmer els botons de volum</string>
<string name="noGroups">Clica el botó + per afegir grups per categoritzar.</string>
<string name="noGroupCards">Aquest grup està buit</string>
<string name="group_name_already_in_use">Ja existeix un grup amb aquest nom</string>
<string name="group_updated">Grup actualitzat</string>
<string name="moveUp">Pujar amunt</string>
<string name="updateBarcodeQuestionTitle">Actualitzar el valor del codi de barres?</string>
<string name="turn_flashlight_off">Apagar el llum Flash</string>
<string name="settings_oled_dark_summary">Redueix l\'ús de la bateria en pantalles OLED</string>
<string name="settings_system_locale">Idioma del sistema</string>
<string name="settings_catima_theme">Catima</string>
<string name="spend">Gastar</string>
</resources>

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">Přidat</string>
<string name="noGiftCards">Klepněte na tlačítko Plus (+) pro přidání karty nebo naimportujete karty z nabídky (⋮).</string>
<string name="noGiftCards">Klepněte na tlačítko plus (+) pro přidání karty nebo naimportujete karty z nabídky (⋮).</string>
<string name="storeName">Název</string>
<string name="note">Poznámka</string>
<string name="cardId">ID karty</string>
@@ -87,7 +87,6 @@
<string name="moveDown">Přesunout dolů</string>
<string name="moveUp">Přesunout nahoru</string>
<string name="settings_brown_theme">Hnědá</string>
<string name="settings_grey_theme">Šedá</string>
<string name="settings_green_theme">Zelená</string>
<string name="settings_sky_blue_theme">Azurová</string>
<string name="settings_blue_theme">Modrá</string>
@@ -135,9 +134,6 @@
\nVytvoříte jej z nabídky Import/Export jiné aplikace Catima tak, že v ní nejprve stisknete tlačítko Exportovat.</string>
<string name="importCatima">Import z Catima</string>
<string name="accept">Přijmout</string>
<string name="privacy_policy_popup_text">Oznámení o zásadách ochrany osobních údajů (vyžadováno některými obchody s aplikacemi):
\n
\nNejsou shromažďovány žádné údaje, což může potvrdit každý, protože naše aplikace je svobodný software.</string>
<string name="privacy_policy">Zásady soukromí</string>
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
<string name="chooseImportType">Importovat data z</string>
@@ -163,7 +159,7 @@
<string name="groups">Skupiny</string>
<string name="enter_group_name">Zadejte název skupiny</string>
<string name="exportSuccessful">Data exportována</string>
<string name="settings_display_barcode_max_brightness">Vysoký jas při zobrazení čárového kódu</string>
<string name="settings_display_barcode_max_brightness">Rozjasnit obrazovku</string>
<string name="starImage">Hvězdička u oblíbených</string>
<plurals name="selectedCardCount">
<item quantity="one">Vybrána <xliff:g>%d</xliff:g> karta</item>
@@ -217,7 +213,7 @@
<string name="archive">Archivovat</string>
<string name="unarchive">Vrátit z archivu</string>
<string name="unarchived">Karta vrácena z archivu</string>
<string name="settings_card_orientation">Orientace čárového kódu</string>
<string name="settings_card_orientation">Orientace obrazovky</string>
<string name="settings_landscape_orientation">Na šířku</string>
<string name="duplicateCard">Duplikovat</string>
<string name="archived">Karta archivována</string>
@@ -231,11 +227,6 @@
<string name="nextCard">Následující</string>
<string name="failedToOpenUrl">Nejprve nainstalujte webový prohlížeč</string>
<string name="welcome">Vítejte v Catima</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="one">Zobrazit archiv (<xliff:g>%1$d</xliff:g> karta)</item>
<item quantity="few">Zobrazit archiv (<xliff:g>%1$d</xliff:g> karty)</item>
<item quantity="other">Zobrazit archiv (<xliff:g>%1$d</xliff:g> karet)</item>
</plurals>
<string name="barcodeLongPressMessage">V aplikaci pro galerii mohou být otevírány pouze obrázky</string>
<string name="failedToRetrieveImageFile">Nepodařilo se získat soubor obrázku</string>
<string name="cameraPermissionDeniedTitle">Nelze získat přístup k fotoaparátu</string>
@@ -274,7 +265,7 @@
<string name="settings_category_title_privacy">Soukromí</string>
<string name="settings_display_barcode_max_brightness_summary">U některých čteček je to potřeba</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Při prohlížení karty zabránit zamčení obrazovky</string>
<string name="settings_category_title_cards">Karty</string>
<string name="settings_category_title_cards">Zobrazení karty</string>
<string name="settings_category_title_general">Obecné</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os a přispěvatelé</string>
<string name="app_copyright_short">Copyright © Sylvia van Os a přispěvatelé</string>
@@ -302,4 +293,26 @@
<string name="pageWithNumber">Stránka <xliff:g>%d</xliff:g></string>
<string name="multipleBarcodesFoundPleaseChooseOne">Který z nalezených čárových kódů chcete použít?</string>
<string name="failedLaunchingFileManager">Nelze nalézt podporovaný správce souborů</string>
</resources>
<string name="noCameraFoundGuideText">Zdá se, že vaše zařízení nemá fotoaparát. Pokud ano, zkuste zařízení restartovat. V opačném případě použijte tlačítko Další možnosti a přidejte čárový kód jiným způsobem.</string>
<string name="importCancelled">Import zrušen</string>
<string name="exportCancelled">Export zrušen</string>
<string name="useBackImage">Použijte předchozí obrázek</string>
<string name="useFrontImage">Použít přední obrázek</string>
<string name="settings_use_volume_keys_navigation_summary">Pomocí tlačítek hlasitosti můžete změnit, která karta se zobrazí</string>
<string name="settings_use_volume_keys_navigation">Přepínat karty pomocí tlačítek hlasitosti</string>
<string name="generic_error_please_retry">Je nám líto, něco se pokazilo, zkuste to prosím znovu...</string>
<string name="settings_column_count_portrait">Sloupce v režimu na výšku</string>
<string name="settings_automatic_column_count">Automatický</string>
<string name="addFromPkpass">Vyberte soubor Passbook (.pkpass)</string>
<string name="unsupportedFile">Tento soubor není podporován</string>
<string name="settings_category_title_cards_overview">Přehled karet</string>
<string name="settings_column_count_landscape">Sloupce v režimu na šířku</string>
<string name="settings_column_count_1">1</string>
<string name="settings_column_count_2">2</string>
<string name="settings_column_count_3">3</string>
<string name="settings_column_count_6">6</string>
<string name="settings_column_count_7">7</string>
<string name="settings_column_count_4">4</string>
<string name="settings_column_count_5">5</string>
<string name="sort_by_valid_from">Platnost od</string>
</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="scanCardBarcode">Scanne kortets stregkode</string>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
<string name="scanCardBarcode">Scan stregkode</string>
<string name="addCardTitle">Tilføj kort</string>
<string name="editCardTitle">Rediger kort</string>
<string name="sendLabel">Afsend…</string>
@@ -24,8 +24,8 @@
<string name="cardId">Kort ID</string>
<string name="note">Bemærk</string>
<string name="storeName">Navn</string>
<string name="noMatchingGiftCards">Jeg fandt ikke noget. Prøv at ændre din søgning.</string>
<string name="noGiftCards">Klik på + plus-knappen for at tilføje et kort, eller importer først nogle kort fra ⋮-menuen.</string>
<string name="noMatchingGiftCards">Ingen resultater. Prøv at ændre din søgning.</string>
<string name="noGiftCards">Klik på + plus-knappen for at tilføje et kort, eller importer kort fra ⋮ menuen.</string>
<plurals name="selectedCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> valgt kort</item>
<item quantity="other"><xliff:g>%d</xliff:g> valgte kort</item>
@@ -34,13 +34,13 @@
<string name="action_search">Søg</string>
<string name="importExport">Import/eksport</string>
<string name="exportName">Eksport</string>
<string name="importExportHelp">Hvis du sikkerhedskopierer dine kort, kan du flytte dem til en anden enhed.</string>
<string name="importExportHelp">Sikkerhedskopiering af dit data, giver dig mulighed for at flytte dem til en anden enhed.</string>
<string name="importSuccessfulTitle">Importeret</string>
<string name="importFailedTitle">Import mislykkedes</string>
<string name="importFailed">Kunne ikke importere kort</string>
<string name="importFailed">Kunne ikke udføre importering</string>
<string name="exportSuccessfulTitle">Eksporteret</string>
<string name="exportFailedTitle">Eksport mislykkedes</string>
<string name="exportFailed">Kunne ikke eksportere kort</string>
<string name="exportFailed">Kunne ikke udføre eksportering</string>
<string name="importing">Importere…</string>
<string name="exporting">Eksportere…</string>
<string name="settings_dark_theme">Mørk</string>
@@ -48,7 +48,7 @@
<string name="settings_theme">Tema</string>
<string name="settings">Indstillinger</string>
<string name="starImage">Favorit stjerne</string>
<string name="thumbnailDescription">Miniaturebillede til kort</string>
<string name="thumbnailDescription">Thumbnail</string>
<string name="selectBarcodeTitle">Vælg stregkode</string>
<string name="app_copyright_old">Baseret på Loyalty Card Keychain
\ncopyright © 2016-2020 Branden Archer.</string>
@@ -63,29 +63,95 @@
<string name="importOptionFilesystemTitle">Import fra filsystem</string>
<string name="exportOptionExplanation">Dataene skrives til en placering efter eget valg.</string>
<string name="failedParsingImportUriError">Kunne ikke analysere import-URI\'en</string>
<string name="noCardExistsError">Kunne ikke finde kort</string>
<string name="noCardExistsError">Kunne ikke finde det kort</string>
<string name="deleteConfirmationGroup">Slet gruppe\?</string>
<string name="all">Alle</string>
<string name="noGroupCards">Denne gruppe indeholder ikke nogen kort</string>
<string name="noGroups">Klik på + plus-knappen for først at tilføje grupper til kategorisering.</string>
<string name="noGroupCards">Denne gruppe er tom</string>
<string name="noGroups">Klik på + plus-knappen for at tilføje grupper til kategorisering.</string>
<string name="groups">Grupper</string>
<string name="enter_group_name">Indtast gruppenavn</string>
<string name="exportSuccessful">Eksporterede kortdata</string>
<string name="importSuccessful">Kortdata importeret</string>
<string name="exportSuccessful">Data eksporteret</string>
<string name="importSuccessful">Data importeret</string>
<string name="intent_import_card_from_url_share_text">Jeg vil dele et kort med jer</string>
<string name="settings_disable_lockscreen_while_viewing_card">Forebyg låseskærm</string>
<string name="settings_keep_screen_on">LHold skærm tændt</string>
<string name="moveUp">Bevæg dig opad</string>
<string name="leaveWithoutSaveConfirmation">Forlade uden at gemme\?</string>
<string name="settings_display_barcode_max_brightness">Lysere stregkodevisning</string>
<string name="settings_display_barcode_max_brightness">Gør skærm lysere</string>
<string name="failedOpeningFileManager">Installer først en filhåndteringsprogram.</string>
<string name="moveDown">Bevæger sig nedad</string>
<string name="leaveWithoutSaveTitle">Afslut</string>
<string name="addManually">Indtast kort-ID manuelt</string>
<string name="addManually">Indtast stregkoden manuelt</string>
<string name="noGiftCardsGroup">Opret kort og tildel dem gupper her.</string>
<plurals name="deleteCardsConfirmation">
<item quantity="one">Slet dette <xliff:g>%d</xliff:g> kort permanent\?</item>
<item quantity="other">Slet disse <xliff:g>%d</xliff:g> kort permanent\?</item>
</plurals>
<string name="app_name">Catima</string>
<string name="cameraPermissionRequired">Behov for kamera adgang krævet for denne funktion…</string>
<string name="storageReadPermissionRequired">Behov for lager adgang krævet for denne funktion…</string>
<string name="permissionReadCardsLabel">Læs Catima Kort</string>
<string name="permissionReadCardsDescription">læs dine Catima kort og alle deres detaljer, også noter og billeder</string>
<string name="cameraPermissionDeniedTitle">Kunne ikke få adgang til kamera</string>
<string name="noCameraPermissionDirectToSystemSetting">For at scanne stregkoder, har Catima behov for at få adgang til dit kamera. Klik her for at ændre dine tilladelser i indstillinger.</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os og hjælpere</string>
<string name="app_copyright_short">Copyright © Sylvia van Os og hjælpere</string>
<string name="about_title_fmt">Om <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Version: <xliff:g id="version">%s</xliff:g></string>
<string name="app_license">Copylefted libre software, GPLv3+ licens</string>
<string name="barcodeImageDescriptionWithType">Billede<xliff:g>%s</xliff:g> stregkode</string>
<string name="group_name_already_in_use">Gruppenavn allerede i brug</string>
<string name="editGroup">Redigerer Gruppe: <xliff:g>%s</xliff:g></string>
<string name="importFidme">Importer fra FidMe</string>
<string name="settings_card_orientation">Skærm orientation</string>
<string name="settings_follow_system_orientation">Følg system</string>
<string name="settings_portrait_orientation">Portræt</string>
<string name="settings_landscape_orientation">Landskab</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Deaktiver låseskærm når et kort er åbent</string>
<string name="groupsList">Grupper: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Udløber: <xliff:g>%s</xliff:g></string>
<string name="moveBarcodeToTopOfScreen">Flyt stregkoden til toppen af skærmen</string>
<string name="accept">Acceptér</string>
<string name="importCatima">Importer fra Catima</string>
<string name="expiryDate">Udløbsdato</string>
<string name="never">Aldrig</string>
<string name="chooseExpiryDate">Vælg udløbsdato</string>
<string name="balance">Balance</string>
<string name="importStocard">Importer fra Stocard</string>
<string name="balanceSentence">Balance: <xliff:g>%s</xliff:g></string>
<string name="group_name_is_empty">Gruppenavn må ikke være tom</string>
<string name="group_updated">Gruppe opdateret</string>
<string name="card">Kort</string>
<string name="currency">Valuta</string>
<string name="settings_display_barcode_max_brightness_summary">Nødvendigt for nogle scannere til at fungerer</string>
<string name="editBarcode">Rediger stregkode</string>
<string name="points">Point</string>
<string name="privacy_policy">Privatlivspolitik</string>
<plurals name="groupCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> kort</item>
<item quantity="other"><xliff:g>%d</xliff:g> kort</item>
</plurals>
<string name="settings_allow_content_provider_read_title">Tillid andre apps tilgang til min data</string>
<string name="settings_allow_content_provider_read_summary">Apps vil stadig have behov for at spørge om tilladelse for at få adgang</string>
<string name="barcodeId">Stregkode værdi</string>
<string name="setBarcodeId">Vælg stregkode værdi</string>
<string name="sameAsCardId">Samme som ID</string>
<string name="settings_system_theme">System</string>
<string name="settings_lock_on_opening_orientation">Lås til orientation når kort åbnes</string>
<string name="settings_keep_screen_on_summary">Deaktiver skærm tids slukning når et kort er åbent</string>
<string name="group_edit">Rediger gruppe</string>
<string name="settings_follow_sensor_orientation">Altid roter (ignorer system indstillinger)</string>
<string name="chooseImportType">Importer data fra</string>
<string name="importVoucherVault">Importer fra Voucher Vault</string>
<string name="settings_use_volume_keys_navigation">Skift kort ved brug af lydstyrke knapperne</string>
<string name="settings_use_volume_keys_navigation_summary">Brug lydstyrke knapperne til at ændre hvilket kort bliver vist</string>
<string name="addFromImage">Vælg et billede fra galleri</string>
<string name="expiryStateSentenceExpired">Udløbet: <xliff:g>%s</xliff:g></string>
<string name="noBarcodeFound">Ingen stregkode blev fundet</string>
<string name="errorReadingImage">Kunne ikke læse billedet</string>
<string name="balanceParsingFailed">Ugyldig balance</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> point</item>
<item quantity="other"><xliff:g>%s</xliff:g> point</item>
</plurals>
</resources>

View File

@@ -17,7 +17,7 @@
<string name="ok">OK</string>
<string name="sendLabel">Senden…</string>
<string name="editCardTitle">Karte bearbeiten</string>
<string name="addCardTitle">Neue Karte</string>
<string name="addCardTitle">Karte hinzufügen</string>
<string name="scanCardBarcode">Barcode scannen</string>
<string name="cardShortcut">Kartenkürzel</string>
<string name="noCardsMessage">Füge zuerst eine Karte hinzu</string>
@@ -34,10 +34,10 @@
<string name="importing">Importiere…</string>
<string name="exporting">Exportiere…</string>
<string name="importOptionFilesystemTitle">Aus Dateisystem importieren</string>
<string name="importOptionFilesystemExplanation">Eine bestimmte Datei aus dem Dateisystem auswählen.</string>
<string name="importOptionFilesystemExplanation">Wähle eine bestimmte Datei aus dem Dateisystem aus.</string>
<string name="importOptionFilesystemButton">vom Dateisystem</string>
<string name="importOptionApplicationTitle">Andere App verwenden</string>
<string name="importOptionApplicationExplanation">Beliebige Anwendung oder deinen bevorzugten Dateimanager zur Dateiauswahl verwenden.</string>
<string name="importOptionApplicationExplanation">Benutze eine beliebige App oder deinen bevorzugten Dateimanager zur Dateiauswahl.</string>
<string name="importOptionApplicationButton">Andere App verwenden</string>
<string name="about">Über</string>
<string name="app_license">Freie Software, lizensiert unter der GPLv3+</string>
@@ -46,7 +46,7 @@
<string name="selectBarcodeTitle">Barcode auswählen</string>
<string name="thumbnailDescription">Vorschaubild</string>
<string name="settings">Einstellungen</string>
<string name="settings_display_barcode_max_brightness">Displayhelligkeit in der Barcodeansicht erhöhen</string>
<string name="settings_display_barcode_max_brightness">Displayhelligkeit erhöhen</string>
<string name="exportSuccessful">Daten exportiert</string>
<string name="importSuccessful">Daten importiert</string>
<string name="intent_import_card_from_url_share_text">Ich würde gerne diese Karte mit dir teilen</string>
@@ -71,7 +71,7 @@
<string name="leaveWithoutSaveTitle">Beenden</string>
<string name="failedOpeningFileManager">Installiere zuerst einen Dateimanager.</string>
<string name="noBarcode">Kein Barcode</string>
<string name="addManually">Code manuell eingeben</string>
<string name="addManually">Barcode manuell eingeben</string>
<string name="moveDown">Nach unten verschieben</string>
<string name="moveUp">Nach oben verschieben</string>
<plurals name="groupCardCount">
@@ -95,19 +95,14 @@
<string name="expiryStateSentence">Läuft ab: <xliff:g>%s</xliff:g></string>
<string name="settings_disable_lockscreen_while_viewing_card">Sperrbildschirm verhindern</string>
<string name="settings_keep_screen_on">Bildschirm aktiv lassen</string>
<string name="privacy_policy_popup_text">Hinweis zum Datenschutz (von einigen App-Stores verlangt):
\n
\nKEINE DATEN WERDEN GESAMMELT, was jeder bestätigen kann, da unsere Anwendung eine freie Software ist.</string>
<string name="accept">Annehmen</string>
<string name="privacy_policy">Datenschutzrichtlinie</string>
<string name="importVoucherVaultMessage">Wähle deinen <i>vouchervault.json</i>-Export aus Voucher Vault zum Importieren aus.
\nErstellen Sie ihn, indem du zuerst auf Export in Voucher Vault drückst.</string>
<string name="importVoucherVaultMessage">Wähle deinen <i>vouchervault.json</i>-Export aus Voucher Vault zum Importieren aus. \nErstelle ihn, indem du zuerst auf Export in Voucher Vault drückst.</string>
<string name="importVoucherVault">Aus Voucher Vault importieren</string>
<string name="importLoyaltyCardKeychainMessage">Wählen du deinen <i>LoyaltyCardKeychain.csv</i>-Export aus Loyalty Card Keychain zum Importieren aus.
\nErstelle ihn über das Menü Import/Export in Loyalty Card Keychain, indem du dort zuerst auf Export drückst.</string>
<string name="importLoyaltyCardKeychain">Aus Loyalty Card Keychain importieren</string>
<string name="importFidmeMessage">Wähle deinen <i>fidme-export-request-xxxxxx.zip</i>-Export aus FidMe zum Importieren aus und wähle anschließend die Strichcodetypen manuell aus.
\nOder erstelle ihn aus deinem FidMe-Profil, indem du Datenschutz wählst und dann zuerst auf Meine Daten extrahieren drückst.</string>
<string name="importFidmeMessage">Wähle deinen <i>fidme-export-request-xxxxxx.zip</i>-Export aus FidMe zum Importieren aus und wähle anschließend die Barcodetypen manuell aus. \nOder erstelle ihn aus deinem FidMe-Profil, indem du Datenschutz wählst und dann zuerst auf Meine Daten extrahieren drückst.</string>
<string name="importFidme">Aus FidMe importieren</string>
<string name="importCatimaMessage">Wähle deinen <i>catima.zip</i>-Export aus Catima zum Importieren aus.
\nErstelle ihn aus dem Import/Export-Menü einer anderen Catima-Anwendung, indem du dort zuerst Export drückst.</string>
@@ -116,7 +111,7 @@
<string name="sameAsCardId">Entspricht Kartennummer</string>
<string name="barcodeId">Barcodewert</string>
<string name="errorReadingImage">Konnte das Bild nicht lesen</string>
<string name="noBarcodeFound">Kein Barcode erkannt</string>
<string name="noBarcodeFound">Keinen Barcode erkannt</string>
<string name="addFromImage">Bild aus der Galerie wählen</string>
<string name="unsupportedBarcodeType">Dieser Barcodetyp kann noch nicht angezeigt werden. Wir hoffen das Format in einer zukünftigen Version zu unterstützen.</string>
<string name="wrongValueForBarcodeType">Der Wert ist für den gewählten Barcodetyp leider nicht gültig</string>
@@ -135,8 +130,7 @@
<string name="frontImageDescription">Vorderseite</string>
<string name="backImageDescription">Rückseite</string>
<string name="passwordRequired">Bitte gib das Passwort ein</string>
<string name="importStocardMessage">Wähle deinen <i>***.zip</i>-Export aus Stocard zum Importieren aus.
\nSie erhalten ihn, indem du eine E-Mail an support@stocardapp.com sendest und um einen Export deiner Daten bitten.</string>
<string name="importStocardMessage">Wähle deinen <i>***.zip</i>-Export aus Stocard zum Importieren aus. \nDu erhälst ihn, indem du eine E-Mail an support@stocardapp.com sendest und um einen Export deiner Daten bittest.</string>
<string name="importStocard">Von Stocard importieren</string>
<string name="turn_flashlight_off">Blitzlicht ausschalten</string>
<string name="turn_flashlight_on">Blitzlicht einschalten</string>
@@ -146,7 +140,7 @@
<item quantity="other"><xliff:g>%d</xliff:g> ausgewählt</item>
</plurals>
<string name="deleteTitle">Karte löschen</string>
<string name="deleteConfirmation">Diese Karte wirklich löschen?</string>
<string name="deleteConfirmation">Diese Karte endgültig löschen?</string>
<plurals name="deleteCardsConfirmation">
<item quantity="one">Diese <xliff:g>%d</xliff:g> Karte endgültig löschen\?</item>
<item quantity="other">Diese <xliff:g>%d</xliff:g> Karten endgültig löschen\?</item>
@@ -158,7 +152,6 @@
<string name="settings_system_locale">System</string>
<string name="settings_locale">Sprache</string>
<string name="settings_brown_theme">Braun</string>
<string name="settings_grey_theme">Grau</string>
<string name="settings_green_theme">Grün</string>
<string name="settings_sky_blue_theme">Himmelblau</string>
<string name="settings_blue_theme">Blau</string>
@@ -170,16 +163,16 @@
<string name="app_contributors">Ermöglicht durch: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="barcodeImageDescriptionWithType">Bild <xliff:g>%s</xliff:g> Barcode</string>
<string name="sort_by">Sortieren nach</string>
<string name="sort_by_expiry">Ablauf</string>
<string name="sort_by_expiry">Gültig bis</string>
<string name="sort_by_most_recently_used">Zuletzt verwendet</string>
<string name="sort_by_name">Name</string>
<string name="sort">Sortieren</string>
<string name="reverse">…in umgekehrter Reihenfolge</string>
<string name="version_history">Versionshistorie</string>
<string name="credits">Dank an</string>
<string name="help_translate_this_app">Hilfe bei der Übersetzung</string>
<string name="help_translate_this_app">Hilf bei der Übersetzung</string>
<string name="and_data_usage">und Datennutzung</string>
<string name="rate_this_app">Bewerte die Anwendung</string>
<string name="rate_this_app">Bewerte die App</string>
<string name="on_google_play">auf Google Play</string>
<string name="license">Lizenz</string>
<string name="source_repository">Quellcode</string>
@@ -196,7 +189,7 @@
<string name="setIcon">Vorschaubild festlegen</string>
<string name="selectColor">Farbe auswählen</string>
<string name="translate_platform">auf Weblate</string>
<string name="shortcutSelectCard">Wähle eine Karte</string>
<string name="shortcutSelectCard">Karte wählen</string>
<string name="options">Optionen</string>
<string name="showMoreInfo">Infos anzeigen</string>
<string name="starred">als Favorit</string>
@@ -210,9 +203,9 @@
<string name="settings_landscape_orientation">Querformat</string>
<string name="settings_portrait_orientation">Hochformat</string>
<string name="duplicateCard">Duplizieren</string>
<string name="unarchive">Archivierung aufheben</string>
<string name="settings_card_orientation">Barcode-Ausrichtung</string>
<string name="unarchived">Karte aus dem Archiv entfernt</string>
<string name="unarchive">Aus dem Archiv wiederherstellen</string>
<string name="settings_card_orientation">Bildschirm-Ausrichtung</string>
<string name="unarchived">Karte aus dem Archiv wiederhergestellt</string>
<string name="archive">Archivieren</string>
<string name="archived">Karte archiviert</string>
<string name="settings_lock_on_opening_orientation">Kartenausrichtung nach dem Öffnen beibehalten</string>
@@ -220,20 +213,16 @@
<item quantity="one"><xliff:g>%1$d</xliff:g> Karte (<xliff:g id="archivedCount">%2$d</xliff:g> archiviert)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> Karten (<xliff:g id="archivedCount">%2$d</xliff:g> archiviert)</item>
</plurals>
<string name="failedLaunchingPhotoPicker">Es konnte keine unterstützte Galerie-Anwendung gefunden werden</string>
<string name="failedLaunchingPhotoPicker">Es konnte keine unterstützte Galerie-App gefunden werden</string>
<string name="previousCard">Vorherige</string>
<string name="nextCard">Nächste</string>
<string name="failedToOpenUrl">Bitte installiere einen Webbrowser</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="one">Archiv ansehen (<xliff:g>%1$d</xliff:g> Karte)</item>
<item quantity="other">Archiv ansehen (<xliff:g>%1$d</xliff:g> Karten)</item>
</plurals>
<string name="failedToOpenUrl">Bitte installiere zuerst einen Webbrowser</string>
<string name="welcome">Willkommen bei Catima</string>
<string name="barcodeLongPressMessage">In der Galerie können nur Bilder geöffnet werden</string>
<string name="failedToRetrieveImageFile">Bilddatei konnte nicht abgerufen werden</string>
<string name="updateBalanceTitle">Wie viel hast du ausgegeben oder erhalten?</string>
<string name="cameraPermissionDeniedTitle">Kein Zugriff auf die Kamera möglich</string>
<string name="noCameraPermissionDirectToSystemSetting">Um Strichcodes zu scannen, benötigt Catima Zugriff auf deine Kamera. Tippe hier, um deine Berechtigungseinstellungen zu ändern.</string>
<string name="noCameraPermissionDirectToSystemSetting">Um Barcodes zu scannen, benötigt Catima Zugriff auf deine Kamera. Tippe hier, um deine Berechtigungseinstellungen zu ändern.</string>
<string name="updateBalanceHint">Betrag eingeben</string>
<string name="importCards">Karten importieren</string>
<string name="currentBalanceSentence">Aktuelles Guthaben: <xliff:g>%s</xliff:g></string>
@@ -266,7 +255,7 @@
<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_cards">Kartenansicht</string>
<string name="settings_category_title_privacy">Datenschutz</string>
<string name="settings_category_title_general">Allgemein</string>
<string name="view_online">Online anzeigen</string>
@@ -278,14 +267,14 @@
<string name="balanceParsingFailed">Ungültiges Guthaben</string>
<string name="add_a_card_in_a_different_way">Karte anders hinzufügen</string>
<string name="action_more_options">Mehr Optionen</string>
<string name="enter_card_id">Gib die Codenummer oder Ziffernfolge deiner Karte an</string>
<string name="addWithoutBarcode">Eine Karte ohne Code hinzufügen</string>
<string name="enter_card_id">Gib die Kartennummer oder den Text auf deiner Karte ein</string>
<string name="addWithoutBarcode">Eine Karte ohne Barcode hinzufügen</string>
<string name="field_must_not_be_empty">Feld darf nicht leer sein</string>
<string name="manually_enter_barcode_instructions">Trage die ID Nummer oder Text deiner Karte ein und drücke auf den Barcode, der wie der auf deiner Karte aussieht.</string>
<string name="manually_enter_barcode_instructions">Trage die Kartenummer oder Text deiner Karte ein und drücke auf den Barcode, der wie der auf deiner Karte aussieht.</string>
<string name="app_name">Catima</string>
<string name="settings_follow_sensor_orientation">Immer drehen (ignoriert Systemeinstellungen)</string>
<string name="continue_">Fortfahren</string>
<string name="add_manually_warning_title">Es wird empfohlen, zu scannen</string>
<string name="add_manually_warning_title">Scannen empfohlen</string>
<string name="add_manually_warning_message">In einigen Geschäften weicht der Wert des Barcodes von dem auf der Karte angegebenen Wert ab. Aus diesem Grund funktioniert die manuelle Eingabe des Barcodes in einigen Fällen nicht. Es wird dringend empfohlen, den Barcode mit einer Kamera zu scannen. Möchtest du dennoch fortfahren?</string>
<string name="spend">Zahlen</string>
<string name="receive">Erhalten</string>
@@ -295,5 +284,26 @@
<string name="failedLaunchingFileManager">Konnte keinen unterstützten Dateimanager finden</string>
<string name="multipleBarcodesFoundPleaseChooseOne">Welchen der gefundenen Barcodes möchtest du verwenden?</string>
<string name="pageWithNumber">Seite <xliff:g>%d</xliff:g></string>
<string name="noCameraFoundGuideText">Dein Gerät scheint nicht über eine Kamera zu verfügen. Wenn dies der Fall ist, versuche, das Gerät neu zu starten. Andernfalls verwende die Schaltfläche Weitere Optionen unten, um einen Barcode auf andere Weise hinzuzufügen.</string>
</resources>
<string name="noCameraFoundGuideText">Dein Gerät scheint nicht über eine Kamera zu verfügen. Falls doch, versuche, das Gerät neu zu starten. Andernfalls verwende die Schaltfläche Weitere Optionen unten, um einen Barcode auf andere Weise hinzuzufügen.</string>
<string name="exportCancelled">Export abgebrochen</string>
<string name="importCancelled">Import abgebrochen</string>
<string name="useFrontImage">Vorderseite verwenden</string>
<string name="useBackImage">Rückseite verwenden</string>
<string name="settings_use_volume_keys_navigation">Karten mit Lautstärketasten wechseln</string>
<string name="settings_use_volume_keys_navigation_summary">Wähle mit den Lautstärketasten, welche Karte angezeigt werden soll</string>
<string name="settings_column_count_portrait">Spalten im Hochformat</string>
<string name="settings_column_count_landscape">Spalten im Querformat</string>
<string name="settings_automatic_column_count">Automatisch</string>
<string name="settings_column_count_2">2</string>
<string name="settings_category_title_cards_overview">Kartenübersicht</string>
<string name="settings_column_count_1">1</string>
<string name="settings_column_count_7">7</string>
<string name="settings_column_count_3">3</string>
<string name="settings_column_count_4">4</string>
<string name="settings_column_count_5">5</string>
<string name="settings_column_count_6">6</string>
<string name="generic_error_please_retry">Entschuldigung, da ist etwas schief gelaufen, versuchen Sie es noch einmal ...</string>
<string name="unsupportedFile">Diese Datei wird nicht unterstützt</string>
<string name="addFromPkpass">Passbook-Datei (.pkpass) auswählen</string>
<string name="sort_by_valid_from">Gültig ab</string>
</resources>

View File

@@ -4,7 +4,7 @@
<string name="noGiftCards">Κάντε κλικ στο + κουμπί για να προσθέσετε μία κάρτα ή προσθέστε από το ⋮ μενού.</string>
<string name="storeName">Όνομα</string>
<string name="note">Σημείωση</string>
<string name="cardId">Κωδικός Κάρτας</string>
<string name="cardId">Κωδικός κάρτας</string>
<string name="cancel">Άκυρο</string>
<string name="save">Αποθήκευση</string>
<string name="edit">Επεξεργασία</string>
@@ -54,7 +54,7 @@
<item quantity="other"><xliff:g>%d</xliff:g> επιλέγχθηκαν</item>
</plurals>
<string name="noGiftCardsGroup">Δημιούργησε κάρτες και βάλτες σε αυτή την ομάδα.</string>
<string name="addManually">Εισαγάγετε τον γραμμωτό κώδικα με μη αυτόματο τρόπο</string>
<string name="addManually">Εισαγωγή γραμμωτού κώδικα με μη αυτόματο τρόπο</string>
<string name="never">Ποτέ</string>
<string name="share">Κοινοποίηση</string>
<plurals name="balancePoints">
@@ -71,12 +71,12 @@
<string name="accept">Αποδοχή</string>
<string name="yes">Ναι</string>
<string name="no">Όχι</string>
<string name="addFromImage">Επιλέξτε μια εικόνα από τη συλλογή</string>
<string name="addFromImage">Επιλογή εικόνας από τη συλλογή</string>
<string name="expiryStateSentence">Λήγει: <xliff:g>%s</xliff:g></string>
<string name="expiryDate">Ημερομηνία λήξης</string>
<string name="settings_keep_screen_on">Κράτα την οθόνη ανοιχτή</string>
<string name="settings_keep_screen_on">Διατήρηση ενεργής οθόνης</string>
<string name="leaveWithoutSaveTitle">Έξοδος</string>
<string name="reverse">... σε αντίθετη σειρά</string>
<string name="reverse">...σε αντίστροφη σειρά</string>
<string name="version_history">Ιστορικό έκδοσης</string>
<string name="sort_by">Ταξινόμηση κατά</string>
<string name="credits">Πιστώσεις</string>
@@ -91,8 +91,7 @@
<string name="importLoyaltyCardKeychainMessage">Επιλέξτε την <i>LoyaltyCardKeychain.csv</i> εξαγωγή από το Loyalty Card Keychain για εισαγωγή.
\nΔημιουργήστε το από το μενού Εισαγωγής/Εξαγωγής στο Loyalty Card Keychain επιλέγοντας Εξαγωγή.</string>
<string name="importFidme">Εισαγωγή από FidMe</string>
<string name="importFidmeMessage">Επιλέξτε την <i>fidme-export-request-xxxxxx.zip</i> εξαγωγή από το FidMe για εισαγωγή και επιλέξτε χειροκίνητα τους τύπους γραμμωτού κώδικα μετέπειτα.
\nΔημιουργήστε το από το FidMe προφίλ επιλέγοντας Προστασία Δεδομένων και διαλέγοντας εξαγωγή δεδομένων.</string>
<string name="importFidmeMessage">Επιλέξτε την <i>fidme-export-request-xxxxxx.zip</i> εξαγωγή από το FidMe για εισαγωγή και επιλέξτε χειροκίνητα τους τύπους γραμμωτού κώδικα μετέπειτα.\nΔημιουργήστε το από το FidMe προφίλ επιλέγοντας Προστασία Δεδομένων και πατώντας Εξαγωγή δεδομένων πρώτα.</string>
<string name="setBarcodeId">Επιλέξτε τιμή γραμμωτού κώδικα</string>
<string name="wrongValueForBarcodeType">Η τιμή δεν είναι έγκυρη για τον επιλεγμένο γραμμωτό κώδικα</string>
<string name="setBackImage">Επιλογή οπίσθιας εικόνας</string>
@@ -101,7 +100,7 @@
<string name="updateBarcodeQuestionText">Αλλάξατε τον κωδικό. Θέλετε να ενημερώσετε και τον γραμμωτό κώδικα στην ίδια τιμή;</string>
<string name="options">Επιλογές</string>
<string name="noGroupCards">Αυτή η ομάδα είναι άδεια</string>
<string name="settings_display_barcode_max_brightness">Επιπλέον φωτισμός γραμμωτού κώδικα</string>
<string name="settings_display_barcode_max_brightness">Επιπλέον φωτισμός οθόνης</string>
<string name="group_name_is_empty">Το όνομα της ομάδας δεν πρέπει να είναι κενό</string>
<string name="group_edit">Επεξεργασία ομάδας</string>
<string name="star">Προσθήκη στα αγαπημένα</string>
@@ -115,9 +114,6 @@
<string name="privacy_policy">Πολιτική απορρήτου</string>
<string name="chooseImportType">Εισαγωγή δεδομένων από</string>
<string name="app_loyalty_card_keychain">Lοyalty Card Keychain</string>
<string name="privacy_policy_popup_text">Σημείωμα πολιτικής απορρήτου ( υποχρεωτικό σε κάποια \"μαγαζιά\" εφαρμογών)
\n
\nΜΗΔΕΝΙΚΆ ΔΕΔΟΜΈΝΑ ΣΥΛΛΈΓΟΝΤΑΙ, ο οποιοσδήποτε μπορεί να το επιβεβαιώσει μιας και η εφαρμογή είναι ελεύθερο λογισμικό.</string>
<plurals name="groupCardCountWithArchived">
<item quantity="one"><xliff:g>%1$d</xliff:g> κάρτα ( <xliff:g id="archivedCount">%2$d</xliff:g> αρχειοθετήθηκε)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> κάρτες ( <xliff:g id="archivedCount">%2$d</xliff:g> αρχειοθετήθηκαν)</item>
@@ -128,16 +124,16 @@
\nΠάρτε το στέλνοντας email στο: support@stocardapp.com ζητώντας μια εξαγωγή αρχείων των δεδομένων σας.</string>
<string name="intent_import_card_from_url_share_multiple_text">Θέλω να μοιραστώ μερικές κάρτες μαζί σου</string>
<string name="editGroup">Επεξεργασία Ομάδας: <xliff:g>%s</xliff:g></string>
<string name="setFrontImage">Επιλογή μπροστινής εικόνας</string>
<string name="setFrontImage">Επιλογή εμπρόσθιας εικόνας</string>
<string name="importVoucherVaultMessage">Επιλέξτε την <i>vouchervault.json</i> εξαγωγή από το Voucher Vault για εισαγωγή.
\nΔημιουργήστε το επιλέγοντας Εξαγωγή στο Voucher Vault.</string>
<string name="unsupportedBarcodeType">Ο τύπος γραμμωτού κώδικα δεν μπορεί να εμφανιστεί ακόμα. Μπορεί να υποστηρίζεται σε μια μελλοντική έκδοση της εφαρμογής.</string>
<string name="frontImageDescription">Μπροστινή εικόνα</string>
<string name="frontImageDescription">Εμπρόσθια</string>
<string name="photos">Φωτογραφίες</string>
<string name="backImageDescription">Οπίσθια εικόνα</string>
<string name="backImageDescription">Οπίσθια</string>
<string name="updateBarcodeQuestionTitle">Ενημέρωση τιμής γραμμωτού κώδικα;</string>
<string name="passwordRequired">Παρακαλώ εισάγετε τον κωδικό</string>
<string name="sort_by_most_recently_used">Χρησιμοποιήθηκαν πρόσφατα</string>
<string name="sort_by_most_recently_used">Χρήση</string>
<string name="shortcutSelectCard">Επιλέξτε μία κάρτα</string>
<string name="barcodeImageDescriptionWithType">Εικόνα <xliff:g>%s</xliff:g> γραμμωτού κώδικα</string>
<string name="app_libraries">Ελεύθερες βιβλιοθήκες τρίτων: <xliff:g id="app_libraries_list">%s</xliff:g></string>
@@ -151,7 +147,6 @@
<string name="setIcon">Ορισμός εικονιδίου</string>
<string name="settings_sky_blue_theme">Γαλάζιο</string>
<string name="settings_green_theme">Πράσινο</string>
<string name="settings_grey_theme">Γκρι</string>
<string name="settings_brown_theme">Καφέ</string>
<string name="sort_by_expiry">Λήξη</string>
<plurals name="groupCardCount">
@@ -173,11 +168,11 @@
<string name="app_copyright_old">Βασισμένο στο Loyalty Card Keychain
\nπνευματικά δικαιώματα © 2016-2020 Branden Archer</string>
<string name="settings_follow_system_orientation">Ακολούθηση συστήματος</string>
<string name="settings_card_orientation">Προσανατολισμός γραμμωτού κώδικα</string>
<string name="settings_card_orientation">Προσανατολισμός οθόνης</string>
<string name="settings_portrait_orientation">Πορτραίτο</string>
<string name="settings_landscape_orientation">Οριζόντια</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Πνευματικά δικαιώματα © 2019-<xliff:g>%d</xliff:g> Sylvia van Os</string>
<string name="settings_lock_on_opening_orientation">Κλείδωμα τωρινού προσανατολισμού όταν ανοίγει μία κάρτα</string>
<string name="settings_lock_on_opening_orientation">Κλείδωμα τρέχοντος προσανατολισμού όταν ανοίγει μία κάρτα</string>
<string name="intent_import_card_from_url_share_text">Θέλω να μοιραστώ μία κάρτα μαζί σου</string>
<string name="enter_group_name">Εισάγετε όνομα ομάδας</string>
<string name="groups">Ομάδες</string>
@@ -218,7 +213,7 @@
<string name="and_data_usage">και δεδομένα χρήσης</string>
<string name="rate_this_app">Βαθμολογήστε την εφαρμογή</string>
<string name="duplicateCard">Αντίγραφο</string>
<string name="archive">Αρχειοθετήστε</string>
<string name="archive">Αρχειοθέτηση</string>
<string name="archived">Η κάρτα αρχειοθετήθηκε</string>
<string name="unarchived">Η κάρτα αφαιρέθηκε από το αρχείο</string>
<string name="unarchive">Αφαίρεση από το αρχείο</string>
@@ -230,10 +225,6 @@
<string name="updateBalance">Ενημέρωση υπολοίπου</string>
<string name="barcodeLongPressMessage">Μόνο εικόνες μπορούν να ανοιχτούν στην εφαρμογή φωτογραφιών</string>
<string name="noCameraPermissionDirectToSystemSetting">Για να σκανάρετε γραμμωτούς κώδικες, θα χρειαστεί πρόσβαση στην κάμερα από το Catima. Πατήστε εδώ για να δώσετε πρόσβαση.</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="one">Προβολή αρχείου (<xliff:g>%1$d</xliff:g> κάρτας)</item>
<item quantity="other">Προβολή αρχείου (<xliff:g>%1$d</xliff:g> καρτών)</item>
</plurals>
<string name="importCards">Εισαγωγή καρτών</string>
<string name="updateBalanceHint">Εισάγετε ποσό</string>
<string name="currentBalanceSentence">Τωρινό υπόλοιπο <xliff:g>%s</xliff:g></string>
@@ -246,16 +237,16 @@
<string name="settings_allow_content_provider_read_title">Να επιτρέπεται σε άλλες εφαρμογές να έχουν πρόσβαση στα δεδομένα μου</string>
<string name="app_copyright_short">Πνευματικά δικαιώματα © Sylvia van Os και συνεργάτες</string>
<string name="height">Ύψος:</string>
<string name="switchToFrontImage">Μετάβαση στην μπροστινή εικόνα</string>
<string name="switchToFrontImage">Μετάβαση στην εμπρόσθια εικόνα</string>
<string name="switchToBackImage">Μετάβαση στην οπίσθια εικόνα</string>
<string name="switchToBarcode">Μετάβαση σε γραμμωτό κώδικα</string>
<string name="validFromSentence">Ισχύει από: <xliff:g>%s</xliff:g></string>
<string name="permissionReadCardsLabel">Διαβάστε τις κάρτες Catima</string>
<string name="openBackImageInGalleryApp">Ανοίξτε την οπίσθια εικόνα στην εφαρμογή γκαλερί</string>
<string name="openBackImageInGalleryApp">Ανοίξτε την οπίσθια εικόνα στη συλλογή εικόνων</string>
<string name="permissionReadCardsDescription">Διάβασε τις Κάρτες σου Catima και όλες τους τις λεπτομέρειες, συμπεριλαμβανομένων των σημειώσεων και των εικόνων</string>
<string name="donate">Δωρεά</string>
<string name="icon_header_click_text">Πατήστε παρατεταμένα για επεξεργασία του εικονιδίου</string>
<string name="openFrontImageInGalleryApp">Ανοίξτε την μπροστινή εικόνα στην εφαρμογή γκαλερί</string>
<string name="openFrontImageInGalleryApp">Ανοίξτε την εμπρόσθια εικόνα στη συλλογή εικόνων</string>
<string name="storageReadPermissionRequired">Δικαίωμα ανάγνωσης του χώρου αποθήκευσης απαραίτητο για αυτήν την ενέργεια…</string>
<string name="settings_follow_sensor_orientation">Πάντα σε περιστροφή (αγνοεί τις ρυθμίσεις του συστήματος)</string>
<string name="validFromDate">Ισχύει από</string>
@@ -272,7 +263,7 @@
<string name="amountParsingFailed">Μη έγκυρο ποσό</string>
<string name="show_balance">Προβολή υπολοίπου</string>
<string name="action_display_options">Επιλογές εμφάνισης</string>
<string name="settings_category_title_cards">Κάρτες</string>
<string name="settings_category_title_cards">Εμφάνιση καρτών</string>
<string name="settings_category_title_general">Γενικά</string>
<string name="show_archived_cards">Προβολή αρχειοθετημένων καρτών</string>
<string name="addWithoutBarcode">Προσθήκη κάρτας χωρίς γραμμωτό κώδικα</string>
@@ -287,12 +278,34 @@
<string name="settings_oled_dark_summary">Μειώνει τη χρήση της μπαταρίας στις οθόνες OLED</string>
<string name="show_note">Εμφάνιση σημείωσης</string>
<string name="action_more_options">Περισσότερες επιλογές</string>
<string name="enter_card_id">Εισαγάγετε τον κωδικό αριθμό ή το κείμενο στην κάρτα σας</string>
<string name="enter_card_id">Εισάγετε τον κωδικό αριθμό ή το κείμενο στην κάρτα σας</string>
<string name="show_validity">Εμφάνιση εγκυρότητας</string>
<string name="add_a_card_in_a_different_way">Προσθέστε μια κάρτα με διαφορετικό τρόπο</string>
<string name="card_id_must_not_be_empty">Ο κωδικός αριθμός της κάρτας δεν πρέπει να είναι κενός</string>
<string name="settings_allow_content_provider_read_summary">Οι εφαρμογές θα πρέπει ακόμα να ζητήσουν άδεια για να τους δοθεί πρόσβαση</string>
<string name="settings_allow_content_provider_read_summary">Οι εφαρμογές θα πρέπει ωστόσο να ζητήσουν άδεια για να τους δοθεί πρόσβαση</string>
<string name="field_must_not_be_empty">Το πεδίο δεν πρέπει να είναι κενό</string>
<string name="manually_enter_barcode_instructions">Εισαγάγετε τον κωδικό αριθμό ή το κείμενο στην κάρτα σας και πατήστε τον γραμμωτό κώδικα που μοιάζει με αυτόν της κάρτας σας.</string>
<string name="manually_enter_barcode_instructions">Εισάγετε τον κωδικό αριθμό ή το κείμενο στην κάρτα σας και πατήστε τον γραμμωτό κώδικα που μοιάζει με αυτόν της κάρτας σας.</string>
<string name="add_manually_warning_title">Συνιστάται η σάρωση</string>
</resources>
<string name="noCameraFoundGuideText">Η συσκευή σας δεν φαίνεται να διαθέτει κάμερα. Αν έχει, δοκιμάστε να κάνετε επανεκκίνηση της συσκευής. Διαφορετικά, χρησιμοποιήστε το κουμπί Περισσότερες επιλογές παρακάτω για να προσθέσετε έναν γραμμωτό κώδικα με άλλο τρόπο.</string>
<string name="importCancelled">Η εισαγωγή ακυρώθηκε</string>
<string name="exportCancelled">Η εξαγωγή ακυρώθηκε</string>
<string name="useFrontImage">Χρήση εμπρόσθιας εικόνας</string>
<string name="useBackImage">Χρήση οπίσθιας εικόνας</string>
<string name="settings_use_volume_keys_navigation">Εναλλαγή καρτών με τα κουμπιά έντασης</string>
<string name="settings_use_volume_keys_navigation_summary">Χρησιμοποιήστε τα κουμπιά έντασης ήχου για να αλλάξετε την κάρτα που εμφανίζεται</string>
<string name="settings_column_count_landscape">Στήλες σε οριζόντια λειτουργία</string>
<string name="settings_column_count_1">1</string>
<string name="settings_column_count_3">3</string>
<string name="settings_column_count_5">5</string>
<string name="settings_column_count_4">4</string>
<string name="settings_category_title_cards_overview">Επισκόπηση καρτών</string>
<string name="settings_column_count_portrait">Στήλες σε κατακόρυφη λειτουργία</string>
<string name="settings_automatic_column_count">Αυτόματα</string>
<string name="settings_column_count_2">2</string>
<string name="settings_column_count_6">6</string>
<string name="settings_column_count_7">7</string>
<string name="generic_error_please_retry">Λυπούμαστε, κάτι πήγε στραβά, δοκιμάστε ξανά...</string>
<string name="unsupportedFile">Το αρχείο δεν υποστηρίζεται</string>
<string name="addFromPkpass">Επιλογή αρχείου Passbook (.pkpass)</string>
<string name="sort_by_valid_from">Έναρξη ισχύος</string>
</resources>

View File

@@ -1,24 +1,24 @@
<?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="delete">Forigi</string>
<string name="noBarcode">Sen strekokodo</string>
<string name="barcodeType">Tipo de strekokodo</string>
<string name="noBarcode">Sen strikodo</string>
<string name="barcodeType">Tipo de strikodo</string>
<string name="cardId">Identigilo de karto</string>
<string name="settings">Agordoj</string>
<string name="selectBarcodeTitle">Elekti strekokodon</string>
<string name="selectBarcodeTitle">Elekti strikodon</string>
<string name="debug_version_fmt">Versio: <xliff:g id="version">%s</xliff:g></string>
<string name="about_title_fmt">Pri <xliff:g id="app_name">%s</xliff:g></string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Kopirajto © 2019<xliff:g>%d</xliff:g> Sylvia van Os.</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Kopirajto © 2019<xliff:g>%d</xliff:g> Sylvia van Os kaj kontribuantoj</string>
<string name="importOptionFilesystemButton">El dosiersistemo</string>
<string name="importOptionFilesystemTitle">Enporti el dosiersistemo</string>
<string name="exportFailedTitle">Elportado malsukcesis</string>
<string name="exportSuccessfulTitle">Elportado sukcesis</string>
<string name="importFailedTitle">Enportado malsukcesis</string>
<string name="importSuccessfulTitle">Enportado sukcesis</string>
<string name="exporting">Elportante…</string>
<string name="importing">Enportante…</string>
<string name="exportFailedTitle">Eksportado malsukcesis</string>
<string name="exportSuccessfulTitle">Eksportado sukcesis</string>
<string name="importFailedTitle">Importado malsukcesis</string>
<string name="importSuccessfulTitle">Importado sukcesis</string>
<string name="exporting">Eksportante…</string>
<string name="importing">Importante…</string>
<string name="exportName">Elporti</string>
<string name="importExport">Enporti/elporti</string>
<string name="importExport">Importi/eksporti</string>
<string name="addCardTitle">Aldoni karton</string>
<string name="editCardTitle">Redakti karton</string>
<string name="sendLabel">Sendi…</string>
@@ -28,7 +28,7 @@
<string name="photos">Fotoj</string>
<string name="points">Poentoj</string>
<string name="currency">Valuto</string>
<string name="editBarcode">Redakti strekokodon</string>
<string name="editBarcode">Redakti strikodon</string>
<string name="card">Karto</string>
<string name="never">Neniam</string>
<string name="groupsList">Grupoj: <xliff:g>%s</xliff:g></string>
@@ -50,37 +50,246 @@
<string name="deleteConfirmation">Ĉu forigi ĉi tiun karton\?</string>
<string name="deleteTitle">Forigi karton</string>
<string name="settings_display_barcode_max_brightness">Heligi barcode vido</string>
<string name="starImage">Preferata stelo</string>
<string name="thumbnailDescription">Bildeto por karto</string>
<string name="starImage">Stelmarko</string>
<string name="thumbnailDescription">Bildeto</string>
<string name="app_copyright_old">Bazita sur Lojaleco Karto Keychain
\nkopirajto © 2016-2020 Branden Archer.</string>
<string name="importOptionApplicationButton">Uzi alian app</string>
<string name="importOptionApplicationExplanation">Uzi ajna app aŭ via preferata dosiera # mana\? ero por malfermi dosieron.</string>
\nkopirajto © 2016-2020 Branden Archer</string>
<string name="importOptionApplicationButton">Uzi alian apon</string>
<string name="importOptionApplicationExplanation">Uzi ajnan apon aŭ vian preferatan dosiermastrumilon por malfermi dosieron.</string>
<string name="importOptionApplicationTitle">Uzi alian app</string>
<string name="importOptionFilesystemExplanation">Elektu specifa dosiero de la dosiersistemo.</string>
<string name="exportOptionExplanation">La datumoj estos skribita al loko de via elekto.</string>
<string name="exportFailed">Ne povis eksporti kartoj</string>
<string name="importFailed">Ne povis importi kartoj</string>
<string name="importExportHelp">Subtenanta supre vian kartoj permesas vin movi ilin al alia aparato.</string>
<string name="failedParsingImportUriError">Ne eblis analizi la importado URI</string>
<string name="noCardExistsError">Ne eblis trovi karto</string>
<string name="noCardsMessage">Aldoni karto unua</string>
<string name="exportFailed">Ne povis fari eksportadon</string>
<string name="importFailed">Ne povis fari importadon</string>
<string name="importExportHelp">Fari savkopion de viaj datumoj permesas movi ilin al alia aparato.</string>
<string name="failedParsingImportUriError">Ne eblis analizi la URI de la importado</string>
<string name="noCardExistsError">Ne eblis trovi tiun karton</string>
<string name="noCardsMessage">Aldonu karton unue</string>
<string name="cardShortcut">Karto Mallongirejo</string>
<string name="scanCardBarcode">Scintigrafio Barcode Card</string>
<string name="scanCardBarcode">Skani strikodon</string>
<string name="share">Interŝanĝado</string>
<string name="star">Aldoni al miaj plej ŝatataj</string>
<string name="star">Aldoni al miaj markitaj</string>
<string name="settings_keep_screen_on">Teni sur ekrano</string>
<string name="importSuccessful">Karto datumo importitaj</string>
<string name="enter_group_name">Eniri nomo de la grupo</string>
<string name="noGroups">Klaki la + plus butonon por aldoni grupoj por categorization unua.</string>
<string name="importSuccessful">Datumoj importitaj</string>
<string name="enter_group_name">Entajpu nomo de la grupo</string>
<string name="noGroups">Klaki la + plus butonon por aldoni grupojn por enkategoriigo.</string>
<string name="all">Ĉiuj</string>
<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>
<string name="noGiftCards">Klavu la \"+\" butonon por aldoni karton, aŭ importu uzi menuo \" ⋮\".</string>
<string name="exportSuccessful">Datumoj eksportitaj</string>
<string name="noGroupCards">Ĉi tiu grupo estas malplena</string>
<string name="noGiftCards">Klavu la \"+\" butonon por aldoni karton, aŭ importu el la 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>
<item quantity="one"><xliff:g>%d</xliff:g> elektita</item>
<item quantity="other"><xliff:g>%d</xliff:g> elektitaj</item>
</plurals>
<string name="app_name">Catima</string>
<string name="barcodeImageDescriptionWithType">Bildo <xliff:g>%s</xliff:g> strikodo</string>
<string name="cameraPermissionRequired">Permeso atingi fotilon estas bezonata por ĉi tiu ago…</string>
<string name="permissionReadCardsLabel">Legi Catima kartojn</string>
<string name="noMatchingGiftCards">Neniu rezulto. Provu ŝanĝi vian serĉon.</string>
<string name="noGiftCardsGroup">Kreu kartojn kaj poste atribuu ilin al la grupo ĉi tie.</string>
<string name="storageReadPermissionRequired">Permeso legi stokadon estas bezonata por ĉi tiu ago…</string>
<string name="unstar">Forigi de miaj markitaj</string>
<plurals name="deleteCardsTitle">
<item quantity="one">Forigi <xliff:g>%d</xliff:g> karton</item>
<item quantity="other">Forigi <xliff:g>%d</xliff:g> kartojn</item>
</plurals>
<plurals name="deleteCardsConfirmation">
<item quantity="one">Forigi ĉi tiun <xliff:g>%d</xliff:g> karton daŭre?</item>
<item quantity="other">Forigi ĉi tiujn <xliff:g>%d</xliff:g> kartojn daŭre?</item>
</plurals>
<string name="expiryDate">Valida ĝis</string>
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
<string name="noBarcodeFound">Ne eblis trovi strikodon</string>
<string name="balance">Saldo</string>
<string name="moveBarcodeToTopOfScreen">Movi la strekodon al la supro de la ekrano</string>
<string name="errorReadingImage">Ne eblis legi bildon</string>
<string name="settings_brown_theme">Bruna</string>
<string name="showMoreInfo">Montri informojn</string>
<string name="on_github">sur GitHub</string>
<string name="archive">Enarkivigi</string>
<string name="duplicateCard">Duoblaĵo</string>
<string name="unarchived">Karto elarkivigita</string>
<string name="archived">Karto enarkivigita</string>
<string name="failedLaunchingPhotoPicker">Ne povis trovi subtenatan galerian apon</string>
<string name="failedToOpenUrl">Unue instalu retumilon</string>
<string name="importCards">Importi kartojn</string>
<string name="switchToBackImage">Ŝanĝi al malantaŭa bildo</string>
<string name="setBarcodeHeight">Starigi altecon de strikodo</string>
<string name="icon_header_click_text">Premi longe por redakti bildeton</string>
<string name="show_validity">Montri validecon</string>
<string name="addFromImage">Elekti bildon el la galerio</string>
<string name="shortcutSelectCard">Elekti karton</string>
<string name="chooseValidFromDate">Elekti startdaton de valideco</string>
<string name="privacy_policy">Regularo pri privateco</string>
<string name="chooseExpiryDate">Elektu findaton de valideco</string>
<string name="group_updated">Grupo ĝisdatigita</string>
<string name="leaveWithoutSaveTitle">Eliri</string>
<string name="moveDown">Movi malsupren</string>
<string name="leaveWithoutSaveConfirmation">Eliri sen konservi?</string>
<string name="validFromDate">Valida ekde</string>
<string name="accept">Akcepti</string>
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
<string name="settings_sky_blue_theme">Ĉielblua</string>
<string name="unarchive">Elarkivigi</string>
<string name="switchToBarcode">Ŝanĝi al strikodo</string>
<string name="currentBalanceSentence">Nuna saldo: <xliff:g>%s</xliff:g></string>
<string name="height">Alteco:</string>
<string name="settings_category_title_general">Ĝenerala</string>
<string name="settings_category_title_privacy">Privateco</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> punkto</item>
<item quantity="other"><xliff:g>%s</xliff:g> punktoj</item>
</plurals>
<string name="group_edit">Redakti grupon</string>
<string name="updateBalanceTitle">Kiom vi elspezis aŭ ricevis?</string>
<string name="updateBalanceHint">Entajpi kvanton</string>
<string name="previousCard">Antaŭa</string>
<string name="nextCard">Sekva</string>
<string name="reverse">inversi la ordon</string>
<string name="translate_platform">sur Weblate</string>
<string name="failedToRetrieveImageFile">Malsukcesis ricevi bildodosieron</string>
<string name="help_translate_this_app">Helpi traduki ĉi tiun apon</string>
<string name="welcome">Bonvenon al Catima</string>
<string name="donate">Doni</string>
<string name="validFromSentence">Valida ekde: <xliff:g>%s</xliff:g></string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Preventas ekranŝloson dum rigardo al karto</string>
<string name="settings_allow_content_provider_read_summary">Apoj devos peti permeson por ricevi aliron</string>
<plurals name="groupCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> karto</item>
<item quantity="other"><xliff:g>%d</xliff:g> kartoj</item>
</plurals>
<string name="group_name_already_in_use">Gruponomo jam uzata</string>
<string name="group_name_is_empty">Gruponomo devas ne esti malplena</string>
<string name="deleteConfirmationGroup">Forigi grupon?</string>
<string name="failedOpeningFileManager">Unue instalu dosiermastrumilon.</string>
<string name="addManually">Entajpi la strikodon permane</string>
<string name="editGroup">Redaktante grupon: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Eksvalidiĝis: <xliff:g>%s</xliff:g></string>
<string name="balanceParsingFailed">Nevalida saldo</string>
<string name="chooseImportType">Importi datumojn de</string>
<string name="importCatima">Importi el Catima</string>
<string name="settings_green_theme">Verda</string>
<string name="updateBalance">Ĝisdatigi saldon</string>
<string name="barcodeLongPressMessage">Nur bildoj povas esti malfermitaj en la galeria apo</string>
<string name="sort_by_name">Nomo</string>
<string name="sort_by_most_recently_used">Plej laste uzitaj</string>
<string name="sort_by_expiry">Dato de eksvalidiĝo</string>
<string name="sort_by">Ordigi laŭ</string>
<string name="version_history">Versio historio</string>
<string name="credits">Dankoj</string>
<string name="license">Permesilo</string>
<string name="and_data_usage">kaj datumuzado</string>
<string name="rate_this_app">Taksi ĉi tiun apon</string>
<string name="report_error">Raporti eraron</string>
<string name="starred">Markitaj</string>
<string name="newBalanceSentence">Nova saldo: <xliff:g>%s</xliff:g></string>
<string name="anyDate">Iam ajn</string>
<string name="switchToFrontImage">Ŝanĝi al antaŭa bildo</string>
<string name="openFrontImageInGalleryApp">Malfermi la antaŭan bildon en galeria apo</string>
<string name="openBackImageInGalleryApp">Malfermi la malantaŭan bildon en galeria apo</string>
<string name="show_name_below_image_thumbnail">Montri nomon sub la bildeto</string>
<string name="show_note">Montri noton</string>
<string name="settings_category_title_cards">Kartoj</string>
<string name="action_display_options">Agordoj de montrado</string>
<string name="show_archived_cards">Montri arkivitajn kartojn</string>
<string name="view_online">Vidi enrete</string>
<string name="action_more_options">Pliaj opcioj</string>
<string name="settings_keep_screen_on_summary">Malŝaltas tempolimon de la ekrano dum rigardo al karto</string>
<string name="settings_disable_lockscreen_while_viewing_card">Preventi la ekranŝloson</string>
<string name="settings_allow_content_provider_read_title">Permesi al aliaj apoj aliri miajn datumojn</string>
<string name="moveUp">Movi supren</string>
<string name="expiryStateSentence">Valida ĝis: <xliff:g>%s</xliff:g></string>
<string name="app_contributors">Ebligita de: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="sort">Ordigi</string>
<string name="source_repository">Koda deponejo</string>
<string name="on_google_play">sur Google Play</string>
<string name="include_if_asking_support">Si vi volas peti subtenon, inkluzivu la sekvan informon:</string>
<string name="options">Opcioj</string>
<plurals name="groupCardCountWithArchived">
<item quantity="one"><xliff:g>%1$d</xliff:g> karto (<xliff:g id="archivedCount">%2$d</xliff:g> archived)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> kartoj (<xliff:g id="archivedCount">%2$d</xliff:g> archived)</item>
</plurals>
<string name="show_balance">Montri saldon</string>
<string name="addWithoutBarcode">Aldoni karton sen strikodo</string>
<string name="permissionReadCardsDescription">legi viajn Catima-kartojn kaj ĉiujn iliajn detalojn, inkluzive de notoj kaj bildoj</string>
<string name="cameraPermissionDeniedTitle">Fotilo neatingebla</string>
<string name="noCameraPermissionDirectToSystemSetting">Por skani strikodojn Catima bezonas atingorajton al via fotilo. Klaku ĉi tie por ŝanĝi viajn permesajn agordojn.</string>
<string name="app_copyright_short">Kopirajto © Sylvia van Os kaj kontribuantoj</string>
<string name="settings_card_orientation">Orientiĝo de strikodo</string>
<string name="settings_follow_system_orientation">Laŭ la sistemo</string>
<string name="settings_portrait_orientation">Vertikala</string>
<string name="settings_landscape_orientation">Horizontala</string>
<string name="settings_display_barcode_max_brightness_summary">Bezonata por ke iuj skaniloj funkciu</string>
<string name="unsupportedBarcodeType">Ne eblas montri ĉi tiun strikodspecon. Ĝi eble estos subtenata en posta versio de la apo.</string>
<string name="importVoucherVaultMessage">Elektu la <i>vouchervault.json</i> eksporton de Voucher Vault kiun vi volas importi.
\nKreu ĝin unue elektante \"Export\" en Voucher Vault.</string>
<string name="sameAsCardId">Sama kiel la identigo</string>
<string name="setBarcodeId">Starigi la valoron de la strikodo</string>
<string name="barcodeId">Valoro de la strikodo</string>
<string name="passwordRequired">Bonvolu entajpi la pasvorton</string>
<string name="exportPasswordHint">Entajpi pasvorton</string>
<string name="settings_oled_dark_summary">Malpligrandigas baterian uzadon sur OLED-ekranoj</string>
<string name="selectColor">Elekti koloron</string>
<string name="setIcon">Starigi bildeton</string>
<string name="settings_catima_theme">Catima</string>
<string name="settings_pink_theme">Rozkolora</string>
<string name="field_must_not_be_empty">Kampo devas ne esti malplena</string>
<string name="manually_enter_barcode_instructions">Entajpu la identigilon aŭ tekston sur via karto kaj premu la strikodon kiu aspektas kiel tiu sur via karto.</string>
<string name="importStocardMessage">Elektu la <i>***.zip</i> eksoporton de Stocard kiun vi volas importi.
\nAkiru ĝin sendante retpoŝton al support@stocardapp.com petante eksporton de viaj datumoj.</string>
<string name="turn_flashlight_off">Malŝalti poŝlampon</string>
<string name="add_manually_warning_title">Skani estas rekomendata</string>
<string name="continue_">Daŭrigi</string>
<string name="settings_oled_dark">Pura nigra fono por malhela temo</string>
<string name="importLoyaltyCardKeychain">Importi el Loyalty Card Keychain</string>
<string name="importFidmeMessage">Elektu la <i>fidme-export-request-xxxxxx.zip</i> exporton de FidMe kiun vi volas importi kaj poste elektu la tipojn de strikodo permane.
\nKreu ĝin en via FidMe profilo elektante \"Data Protection\" kaj poste \"Extract my data\".</string>
<string name="backImageDescription">Malantaŭa bildo</string>
<string name="noCameraFoundGuideText">Via aparato ŝajnas ne havi fotilon. Se jes, provu restartigi la aparaton. Alie, uzu la butonon \"Pliaj opcioj\" sube por aldoni strikodon alimaniere.</string>
<string name="wrongValueForBarcodeType">La valoro ne validas por la elektita tipo de strikodo</string>
<string name="importCancelled">Importado nuligita</string>
<string name="exportCancelled">Eksportado nuligita</string>
<string name="settings_theme_color">Koloro de la temo</string>
<string name="app_libraries">Liberaj triaj bibliotekoj: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="addFromPdfFile">Elekti PDF-dosieron</string>
<string name="failedLaunchingFileManager">Subtenata dosiermastrumilo ne trovebla</string>
<string name="errorReadingFile">Dosiero nelegebla</string>
<string name="multipleBarcodesFoundPleaseChooseOne">Kiun el la trovitaj strikodoj vi volas uzi?</string>
<string name="pageWithNumber">Paĝo <xliff:g>%d</xliff:g></string>
<string name="settings_system_locale">Sistemo</string>
<string name="app_resources">Liberaj triaj risurcoj: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="settings_follow_sensor_orientation">Ĉiam turni (ignori la agordojn de la sistemo)</string>
<string name="settings_lock_on_opening_orientation">Fiksi al la orientiĝo uzata dum malfermado de la karto</string>
<string name="importCatimaMessage">Elektu la <i>catima.zip</i> eksporton kiun vi volas importi.
\nKreu ĝin unue en la importi/eksporti menuo en alia Catima apo elektante \'eksporti\' tie.</string>
<string name="importFidme">Importi el FidMe</string>
<string name="exportPassword">Starigi pasvorton por protekti vian eksporton (nedevige)</string>
<string name="failedGeneratingShareURL">Komunigebla URL ne generebla. Bonvolu raporti.</string>
<string name="intent_import_card_from_url_share_multiple_text">Mi volas kunhavigi kelkajn kartojn kun vi</string>
<string name="frontImageDescription">Antaŭa bildo</string>
<string name="setFrontImage">Starigi antaŭan bildon</string>
<string name="setBackImage">Starigi malantaŭan bildon</string>
<string name="removeImage">Forigi bildon</string>
<string name="updateBarcodeQuestionTitle">Ĉu ĝisdatigi strikodvaloron?</string>
<string name="updateBarcodeQuestionText">Vi ŝanĝis la identigon. Ĉu vi volas ankaŭ ĝisdatigi la strikodon por uzi la saman valoron?</string>
<string name="importLoyaltyCardKeychainMessage">Elektu la <i>LoyaltyCardKeychain.csv</i> eksporton de Loyalty Card Keychain kiun vi volas importi.
\nKreu ĝin unue de la \"Importi/eksporti\" menuo en Loyalty Card Keychain elektante \"eksporti\" tie.</string>
<string name="importStocard">Importi de Stocard</string>
<string name="importVoucherVault">Importi el Voucher Vault</string>
<string name="turn_flashlight_on">Enŝalti poŝlampon</string>
<string name="settings_locale">Lingvo</string>
<string name="settings_magenta_theme">Maĝenta</string>
<string name="settings_violet_theme">Viola</string>
<string name="settings_blue_theme">Blua</string>
<string name="enter_card_id">Entajpu la identigilon aŭ tekston sur via karto</string>
<string name="card_id_must_not_be_empty">Identigilo devas ne esti malplena</string>
<string name="add_a_card_in_a_different_way">Aldoni karton alimaniere</string>
<string name="add_manually_warning_message">Ĉe kelkaj butikoj la strikodo malsamas la numero skribita sur la karto. Pro tio, enigi strikodon permane eble ne ĉiam funkcias. Estas forte rekomendite skani la strikodon per via fotilo anstataŭe. Ĉu vi ankoraŭ volas daŭrigi?</string>
<string name="spend">Elspezi</string>
<string name="receive">Ricevi</string>
<string name="app_license">Rajtocedita libera softwaro, licencita laŭ GPLv3+</string>
<string name="amountParsingFailed">Nevalida kvanto</string>
<string name="useBackImage">Uzi la malantaŭan bildon</string>
<string name="useFrontImage">Uzi la antaŭan bildon</string>
</resources>

View File

@@ -103,9 +103,6 @@
<string name="settings_keep_screen_on">Mantener la pantalla encendida</string>
<string name="setBarcodeId">Establecer valor del código de barras</string>
<string name="importCatima">Importar desde Catima</string>
<string name="privacy_policy_popup_text">Notificación de la política de privacidad (requerida por algunas tiendas de aplicaciones):
\n
\nNINGÚN DATO ES RECOPILADO, puede ser comprobado por cualquiera ya que nuestra aplicación es software libre.</string>
<string name="settings_follow_system_orientation">Seguir el sistema</string>
<string name="intent_import_card_from_url_share_text">Quiero compartirte una tarjeta</string>
<string name="addFromImage">Seleccione una imágen desde la galería</string>
@@ -192,7 +189,6 @@
<string name="exportPassword">Agregar una contraseña para protejer tu exportación (opcional)</string>
<string name="settings_sky_blue_theme">Celeste</string>
<string name="settings_green_theme">Verde</string>
<string name="settings_grey_theme">Gris</string>
<string name="exportPasswordHint">Ingresar contraseña</string>
<string name="setIcon">Establecer miniatura</string>
<string name="showMoreInfo">Mostrar información</string>

View File

@@ -40,7 +40,7 @@
<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_display_barcode_max_brightness">Iluminar vista del código de barras</string>
<string name="settings_display_barcode_max_brightness">Iluminar pantalla</string>
<string name="exportSuccessful">Datos exportados</string>
<string name="importSuccessful">Datos importados</string>
<string name="intent_import_card_from_url_share_text">Quiero compartirte una tarjeta</string>
@@ -128,9 +128,6 @@
<string name="importFidme">Importar desde FidMe</string>
<string name="importCatima">Importar desde Catima</string>
<string name="accept">Aceptar</string>
<string name="privacy_policy_popup_text">Aviso de política de privacidad (requerido por algunas tiendas de apps):
\n
\nNINGÚN DATO SE RECOPILA, cualquiera puede confirmar ya que nuestra aplicación es software libre.</string>
<string name="privacy_policy">Política de privacidad</string>
<string name="app_loyalty_card_keychain">Llavero con tarjeta de fidelización</string>
<string name="chooseImportType">Importar datos de</string>
@@ -161,7 +158,6 @@
</plurals>
<string name="app_contributors">Hecho posible por: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="settings_brown_theme">Marrón</string>
<string name="settings_grey_theme">Gris</string>
<string name="settings_green_theme">Verde</string>
<string name="settings_sky_blue_theme">Azul cielo</string>
<string name="settings_blue_theme">Azul</string>
@@ -180,7 +176,7 @@
<item quantity="other"><xliff:g>%s</xliff:g> puntos</item>
</plurals>
<string name="barcodeImageDescriptionWithType">Imagen <xliff:g>%s</xliff:g> código de barras</string>
<string name="settings_card_orientation">Orientación del código de barras</string>
<string name="settings_card_orientation">Orientación de pantalla</string>
<string name="settings_portrait_orientation">Formato vertical</string>
<string name="group_edit">Editar grupo</string>
<string name="group_updated">Grupo actualizado</string>
@@ -210,11 +206,6 @@
<string name="rate_this_app">Califica esta aplicación</string>
<string name="options">Opciones</string>
<string name="failedToOpenUrl">Instale primero un navegador web</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="one">Ver archivo (<xliff:g>%1$d</xliff:g> tarjeta)</item>
<item quantity="many">Ver archivo (<xliff:g>%1$d</xliff:g> tarjetas)</item>
<item quantity="other">Ver archivo (<xliff:g>%1$d</xliff:g> tarjetas)</item>
</plurals>
<string name="welcome">Bienvenido/a a Catima</string>
<string name="group_name_already_in_use">Nombre del grupo ya está en uso</string>
<string name="group_name_is_empty">El nombre del grupo no debe estar vacío</string>
@@ -273,7 +264,7 @@
<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_cards">Vista de tarjeta</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>
@@ -303,4 +294,25 @@
<string name="multipleBarcodesFoundPleaseChooseOne">¿Cuál de los códigos de barras encontrados desea utilizar?</string>
<string name="pageWithNumber">Página <xliff:g>%d</xliff:g></string>
<string name="noCameraFoundGuideText">Tu dispositivo no parece tener cámara. Si la tiene, intente reiniciar el dispositivo. De lo contrario, utilice el botón Más opciones a continuación para añadir un código de barras de otra manera.</string>
</resources>
<string name="importCancelled">Importación cancelada</string>
<string name="exportCancelled">Exportación cancelada</string>
<string name="useFrontImage">Utilice la imagen frontal</string>
<string name="useBackImage">Utilice la imagen trasera</string>
<string name="settings_use_volume_keys_navigation_summary">Utiliza los botones de volumen para cambiar que tarjeta se muestra</string>
<string name="settings_use_volume_keys_navigation">Cambiar de tarjetas usando los botones de volumen</string>
<string name="settings_automatic_column_count">Automático</string>
<string name="settings_column_count_portrait">Columnas en modo vertical</string>
<string name="settings_column_count_2">2</string>
<string name="settings_category_title_cards_overview">Visión general de las tarjetas</string>
<string name="settings_column_count_landscape">Columnas en modo horizontal</string>
<string name="settings_column_count_1">1</string>
<string name="settings_column_count_3">3</string>
<string name="settings_column_count_4">4</string>
<string name="settings_column_count_5">5</string>
<string name="settings_column_count_6">6</string>
<string name="settings_column_count_7">7</string>
<string name="generic_error_please_retry">Lo sentimos, algo salió mal, por favor inténtelo de nuevo...</string>
<string name="unsupportedFile">Este archivo no es compatible</string>
<string name="addFromPkpass">Seleccione un archivo Passbook (.pkpass)</string>
<string name="sort_by_valid_from">Válido desde</string>
</resources>

View File

@@ -0,0 +1,307 @@
<?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">Lisa</string>
<plurals name="selectedCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> valitud</item>
<item quantity="other"><xliff:g>%d</xliff:g> valitud</item>
</plurals>
<string name="noGiftCardsGroup">Lisa mõned kaardid ja siis jaga nad gruppidesse.</string>
<string name="noMatchingGiftCards">Tulemusi pole. Palun proovi muuta otsingut.</string>
<string name="storeName">Nimi</string>
<string name="note">Märkus</string>
<string name="cardId">Kaardi tunnus</string>
<string name="barcodeType">Triipkoodi tüüp</string>
<string name="noBarcode">Triipkood puudub</string>
<string name="star">Lisa lemmikuks</string>
<string name="edit">Muuda</string>
<string name="delete">Kustuta</string>
<string name="confirm">Kinnita</string>
<plurals name="deleteCardsTitle">
<item quantity="one">Kustuta <xliff:g>%d</xliff:g> kaart</item>
<item quantity="other">Kustuta <xliff:g>%d</xliff:g> kaarti</item>
</plurals>
<string name="deleteConfirmation">Kas kustutame selle kaardi jäädavalt?</string>
<plurals name="deleteCardsConfirmation">
<item quantity="one">Kas kustutame <xliff:g>%d</xliff:g> kaardi jäädavalt?</item>
<item quantity="other">Kas kustutame <xliff:g>%d</xliff:g> kaarti jäädavalt?</item>
</plurals>
<string name="ok">Sobib</string>
<string name="share">Jaga</string>
<string name="sendLabel">Saada…</string>
<string name="editCardTitle">Muuda kaarti</string>
<string name="addCardTitle">Lisa kaart</string>
<string name="scanCardBarcode">Skaneeri triipkoodi</string>
<string name="app_name">Catima</string>
<string name="noGiftCards">Kaardi lisamiseks klõpsi + pluss nuppu või impordi ⋮ikooniga menüüst.</string>
<string name="action_search">Otsi</string>
<string name="unstar">Eemalda lemmikute hulgast</string>
<string name="cancel">Katkesta</string>
<string name="save">Salvesta</string>
<string name="deleteTitle">Kustuta kaart</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Autoriõigused © 2019<xliff:g>%d</xliff:g> Sylvia van Os ja kaasautorid</string>
<string name="app_copyright_old">Põhineb sarnasel rakendusel Loyalty Card Keychain
\nautoriõigused © 20162020 Branden Archer</string>
<string name="selectBarcodeTitle">Vali triipkood</string>
<string name="settings_light_theme">Hele kujundus</string>
<string name="settings_dark_theme">Tume kujundus</string>
<string name="thumbnailDescription">Pisipilt</string>
<string name="settings_theme">Kujundus</string>
<string name="settings_card_orientation">Ekraanipaigutuse suund</string>
<string name="settings_follow_sensor_orientation">Alati pööra (eira süsteemset paigutust)</string>
<string name="settings_landscape_orientation">Rõhtvaade</string>
<string name="settings_display_barcode_max_brightness">Tee ekraan eredamaks</string>
<string name="app_license">Copyleft-tüüpi autoriõiguste alusel loodud avatud lähtekoodiga tarkvara, mis on avaldatud GPLv3+ all</string>
<string name="settings_keep_screen_on">Hoia ekraan sisselülitatuna</string>
<string name="cardShortcut">Kaardi kiirviide</string>
<string name="noCardsMessage">Esmalt lisa kaart</string>
<string name="barcodeImageDescriptionWithType">Kaardi <xliff:g>%s</xliff:g> tiipkood</string>
<string name="noCardExistsError">Seda kaarti ei leidu</string>
<string name="failedParsingImportUriError">Impordi aadressi töötlemine ei õnnestunud</string>
<string name="importExport">Import/eksport</string>
<string name="exportName">Ekspordi</string>
<string name="importExportHelp">Andmete varundamine võimaldab sul neid tõsta mõnda teise seadmesse.</string>
<string name="importSuccessfulTitle">Imporditud</string>
<string name="importFailedTitle">Import ei õnnestunud</string>
<string name="exportSuccessfulTitle">Eksporditud</string>
<string name="exportFailedTitle">Eksportimine ei õnnestunud</string>
<string name="exportFailed">Eksportimist ei õnnestunud teha</string>
<string name="importing">Impordime…</string>
<string name="exporting">Ekspordime…</string>
<string name="storageReadPermissionRequired">Selle tegevuse jaoks on vajalikud õigused andmekandalt lugemiseks…</string>
<string name="importFailed">Importimist ei õnnestunud teha</string>
<string name="cameraPermissionRequired">Selle tegevuse jaoks on vajalikud õigused kaamera kasutamiseks…</string>
<string name="permissionReadCardsLabel">Loe Catima kaarte</string>
<string name="permissionReadCardsDescription">loe kõiki oma Catima kaarte koos nende üksikasjadega, sealhulgas märkuste ja piltidega</string>
<string name="cameraPermissionDeniedTitle">Puudub ligipääs kaamerale</string>
<string name="noCameraPermissionDirectToSystemSetting">Triipkoodide skaneerimiseks vajab Catima õigust asutada kaamerat. Õiguste andmiseks klõpsi siin.</string>
<string name="exportOptionExplanation">Andmed salvestame sinu valitud asukohta.</string>
<string name="importOptionFilesystemTitle">Impordi failisüsteemist</string>
<string name="importOptionFilesystemExplanation">Vali vajalik impordifail failisüsteemist.</string>
<string name="importOptionFilesystemButton">Vali failisüsteemist</string>
<string name="importOptionApplicationTitle">Kasuta muust rakendusest eksporditud andmeid</string>
<string name="importOptionApplicationExplanation">Kasuta faili avamiseks mõnda muud rakendust või sinu lemmikfailihaldurit.</string>
<string name="importOptionApplicationButton">Vali muu rakenduse ekspordifail</string>
<string name="about">Rakenduse teave</string>
<string name="app_copyright_short">Autoriõigused © Sylvia van Os ja kaasautorid</string>
<string name="about_title_fmt">Teave <xliff:g id="app_name">%s</xliff:g> kohta</string>
<string name="debug_version_fmt">Versioon: <xliff:g id="version">%s</xliff:g></string>
<string name="app_libraries">Kolmandate osapoolte avatud lähtekoodiga teegid: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_resources">Kolmandate osapoolte avatud lähtekoodiga materjalid: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="starImage">Lemmikut märkiv täht</string>
<string name="settings">Seadistused</string>
<string name="settings_system_theme">Süsteemi kujundus</string>
<string name="settings_follow_system_orientation">Järgi süsteemset paigutust</string>
<string name="settings_portrait_orientation">Püstvaade</string>
<string name="settings_lock_on_opening_orientation">Kaardivaate avamisel lukusta paigutus</string>
<string name="settings_display_barcode_max_brightness_summary">See on vajalik mõnede skännerite toimimiseks</string>
<string name="expiryStateSentenceExpired">Aegus: <xliff:g>%s</xliff:g></string>
<string name="settings_allow_content_provider_read_summary">Selle valiku sisselülitamisel peavad muud rakendused lisaks küsima õigust vaadata kaartide andmeid</string>
<string name="noGroups">Kui soovid sarnaseid kaarte omavahel liigitada siis + pluss nupuga lisa kaardigruppe.</string>
<string name="group_name_is_empty">Kaardigrupi nimi ei saa jääda tühjaks</string>
<string name="groupsList">Grupid: <xliff:g>%s</xliff:g></string>
<plurals name="groupCardCountWithArchived">
<item quantity="one"><xliff:g>%1$d</xliff:g> kaart (<xliff:g id="archivedCount">%2$d</xliff:g> arhiveeritud)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> kaarti (<xliff:g id="archivedCount">%2$d</xliff:g> arhiveeritud)</item>
</plurals>
<string name="moveUp">Liiguta ülespoole</string>
<string name="moveDown">Liiguta allapoole</string>
<string name="leaveWithoutSaveConfirmation">Kas väljume ilma salvestamata?</string>
<string name="chooseExpiryDate">Vali aegumise kuupäev</string>
<string name="leaveWithoutSaveTitle">Välju</string>
<string name="addManually">Sisesta triipkood käsitsi</string>
<string name="addFromImage">Vali galeriist pilt</string>
<string name="balanceSentence">Maksejääk: <xliff:g>%s</xliff:g></string>
<string name="card">Kaart</string>
<string name="editBarcode">Muuda triipkoodi</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> punkt</item>
<item quantity="other"><xliff:g>%s</xliff:g> punkti</item>
</plurals>
<string name="expiryDate">Aegumise kuupäev</string>
<string name="never">Mitte kunagi</string>
<string name="showMoreInfo">Näita teavet</string>
<string name="importLoyaltyCardKeychainMessage">Importimiseks vali oma <i>LoyaltyCardKeychain.csv</i> Loyalty Card Keychaini ekspordifail. \nSellise faili saad teha rakendusest Loyalty Card Keychain valides menüüst Import/Eksport valiku Eksport.</string>
<string name="unsupportedBarcodeType">Sellist triipkoodi tüüpi pole veel võimalik kuvada, aga mõnes hilisemas rakenduse versioonis võib see võimalik olla.</string>
<string name="wrongValueForBarcodeType">Väärtus ei sobi selle triipkoodi tüübiga</string>
<string name="passwordRequired">Palun sisesta salasõna</string>
<string name="updateBarcodeQuestionTitle">Kas uuendame triipkoodi väärtust?</string>
<string name="yes">Jah</string>
<string name="no">Ei</string>
<string name="settings_theme_color">Kujunduse värv</string>
<string name="settings_pink_theme">Roosa</string>
<string name="barcodeLongPressMessage">Galeriirakenduses saad avada vaid pilte</string>
<string name="sort_by_most_recently_used">Viimati kasutatud</string>
<string name="sort_by_expiry">Aegumine</string>
<string name="reverse">…tagurpidi järjekorras</string>
<string name="sort_by">Järjestuse alus</string>
<string name="version_history">Versioonide ajalugu</string>
<string name="help_translate_this_app">Aita seda rakendust tõlkida</string>
<string name="on_github">GitHubis</string>
<string name="license">Litsents</string>
<string name="source_repository">Lähtekoodi hoidla</string>
<string name="and_data_usage">ja andmekasutus</string>
<string name="options">Valikud</string>
<string name="rate_this_app">Hinda seda rakendust</string>
<string name="on_google_play">Google Play rakendustepoes</string>
<string name="report_error">Teata vigadest</string>
<string name="translate_platform">tõlkerakenduses Weblate</string>
<string name="shortcutSelectCard">Vali kaart</string>
<string name="starred">Tähekesega märgitud</string>
<string name="intent_import_card_from_url_share_multiple_text">Ma soovin sinuga jagada mõnda oma kliendikaarti</string>
<string name="settings_keep_screen_on_summary">Lülitab kaardi vaatamise ajaks välja ekraani energiahalduse</string>
<string name="settings_disable_lockscreen_while_viewing_card">Keela ekraanilukustus</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Lülitab kaardi vaatamise ajaks välja ekraani lukustamise</string>
<string name="settings_allow_content_provider_read_title">Luba teistel rakendustel minu andmeid lugeda</string>
<string name="importSuccessful">Andmed on imporditud</string>
<string name="exportSuccessful">Andmed on eksporditud</string>
<string name="enter_group_name">Sisesta kaardigrupi nimi</string>
<string name="groups">Grupid</string>
<string name="group_edit">Muuda gruppi</string>
<string name="noGroupCards">See grupp on tühi</string>
<plurals name="groupCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> kaart</item>
<item quantity="other"><xliff:g>%d</xliff:g> kaarti</item>
</plurals>
<string name="group_name_already_in_use">Selline kaardigrupi nimi on juba kasutusel</string>
<string name="group_updated">Kaardigrupp on uuendatud</string>
<string name="deleteConfirmationGroup">Kas kustutame grupi?</string>
<string name="all">Kõik</string>
<string name="failedOpeningFileManager">Esmalt paigalda failihaldur.</string>
<string name="intent_import_card_from_url_share_text">Ma soovin sinuga jagada ühte oma kliendikaarti</string>
<string name="editGroup">Muudame gruppi: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Aegub: <xliff:g>%s</xliff:g></string>
<string name="moveBarcodeToTopOfScreen">Tõsta triipkood ekraani ülaossa</string>
<string name="noBarcodeFound">Ühtegi triipkoodi ei leidunud</string>
<string name="errorReadingImage">Pildi lugemine ei õnnestunud</string>
<string name="balance">Maksejääk</string>
<string name="currency">Valuuta</string>
<string name="points">Punkte</string>
<string name="balanceParsingFailed">Vigane maksejääk</string>
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
<string name="privacy_policy">Privaatsuspoliitika</string>
<string name="accept">Nõustu</string>
<string name="importCatima">Impordi Catima varukoopiast</string>
<string name="importCatimaMessage">Importimiseks vali varem tehtud <i>catima.zip</i> Catima ekspordifail. \nSellise faili saad luua mõnes teises seadmes olevast Catima rakendusest Import/Eksport menüüst valikust Eksport.</string>
<string name="importFidme">Impordi FidMe varukoopiast</string>
<string name="importFidmeMessage">Importimiseks vali oma <i>fidme-export-request-xxxxxx.zip</i>, mille oled FidMe rakendusest eksportinud. Peale importi määra triipkoodi tüübid käsistsi. \nSellise faili loomiseks vali oma FidMe profiilist eelistuse Andmekaitse-Paki lahti.</string>
<string name="importLoyaltyCardKeychain">Impordi rakendusest Loyalty Card Keychain</string>
<string name="importStocard">Impordi Stocardist</string>
<string name="importStocardMessage">Importimiseks vali oma <i>***.zip</i> Stocardi ekspordifail. \nSellise faili saad saates kirja aadressile support@stocardapp.com ning küsides oma andmeid.</string>
<string name="chooseImportType">Importimise valikud</string>
<string name="importVoucherVault">Impordi rakendusest Voucher Vault</string>
<string name="importVoucherVaultMessage">Importimiseks vali oma <i>vouchervault.json</i> Voucher Vaulti ekspordifail. \nSellise faili saad teha rakenduses Voucher Vault menüüvalikust Eksport.</string>
<string name="barcodeId">Triipkoodi väärtus</string>
<string name="sameAsCardId">Sama, kui ID</string>
<string name="setBarcodeId">Sisesta triipkoodi väärtus</string>
<string name="frontImageDescription">Esikülje pilt</string>
<string name="backImageDescription">Tagakülje pilt</string>
<string name="photos">Fotod</string>
<string name="setFrontImage">Halda esikülje pilti</string>
<string name="setBackImage">Halda tagakülje pilti</string>
<string name="removeImage">Eemalda pilt</string>
<string name="takePhoto">Pildista</string>
<string name="updateBarcodeQuestionText">Sa muutsid ID väärtust? Kas sa soovid ka triipkoodiväärtuse vastavalt uuendada?</string>
<string name="exportPassword">Sinu eksporditavate andmete turvamiseks palun sisesta salasõna (kui soovid seda)</string>
<string name="exportPasswordHint">Sisesta salasõna</string>
<string name="failedGeneratingShareURL">Jagatava võrguaadressi loomine ei õnnestunud. Palun anna sellest meile teada.</string>
<string name="turn_flashlight_on">Lülita taskulamp sisse</string>
<string name="turn_flashlight_off">Lülita taskulamp välja</string>
<string name="settings_locale">Keel</string>
<string name="settings_oled_dark">Süsimust taust tumeda kujunduse puhul</string>
<string name="settings_oled_dark_summary">OLED-ekraani puhul võimaldab see akukasutust vähendada</string>
<string name="settings_system_locale">Süsteemi keel</string>
<string name="selectColor">Vali värv</string>
<string name="setIcon">Lisa pisipilt</string>
<string name="settings_catima_theme">Catima</string>
<string name="settings_magenta_theme">Fuksiapunane</string>
<string name="settings_violet_theme">Punakassinine</string>
<string name="settings_blue_theme">Sinine</string>
<string name="settings_sky_blue_theme">Taevasinine</string>
<string name="settings_green_theme">Roheline</string>
<string name="settings_brown_theme">Pruun</string>
<string name="app_contributors">Seda rakendust on aidanud teha: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="sort">Järjesta</string>
<string name="updateBalance">Uuenda maksejääki</string>
<string name="failedToRetrieveImageFile">Pildifaili laadimine ei õnnestunud</string>
<string name="sort_by_name">Nimi</string>
<string name="importCards">Impordi kaardid</string>
<string name="updateBalanceTitle">Kui palju sa kulutasid või teenisid?</string>
<string name="updateBalanceHint">Sisesta summa</string>
<string name="currentBalanceSentence">Praegune maksejääk: <xliff:g>%s</xliff:g></string>
<string name="newBalanceSentence">Uus maksejääk: <xliff:g>%s</xliff:g></string>
<string name="show_balance">Näita maksejääki</string>
<string name="credits">Tänuavaldused</string>
<string name="include_if_asking_support">Kasutajatoe päringusse palun lisa alljärgnev teave:</string>
<string name="duplicateCard">Tee koopia</string>
<string name="archive">Arhiveeri</string>
<string name="unarchive">Eemalda arhiivist</string>
<string name="archived">Kaart on arhiveeritud</string>
<string name="unarchived">Kaart on arhiivist eemaldatud</string>
<string name="failedLaunchingPhotoPicker">Ei õnnestunud leida toetatud galeriirakendust</string>
<string name="previousCard">Eelmine</string>
<string name="nextCard">Järgmine</string>
<string name="failedToOpenUrl">Esmalt paigalda veebibrauser</string>
<string name="welcome">Tere tulemast kasutama kliendikaartide haldurit Catima</string>
<string name="validFromDate">Kehtib alates</string>
<string name="anyDate">Ükspuha, mis kuupäev</string>
<string name="chooseValidFromDate">Vali korrektne kehtivuse alguse kuupäev</string>
<string name="validFromSentence">Kehtib alates: <xliff:g>%s</xliff:g></string>
<string name="height">Kõrgus:</string>
<string name="switchToFrontImage">Vaata esikülje pilti</string>
<string name="switchToBackImage">Vaata tagakülje pilti</string>
<string name="switchToBarcode">Vaata triipkoodi</string>
<string name="openFrontImageInGalleryApp">Ava esikülje pilt galeriirakenduses</string>
<string name="openBackImageInGalleryApp">Ava tagakülje pilt galeriirakenduses</string>
<string name="setBarcodeHeight">Määra triipkoodi kõrgus</string>
<string name="donate">Toeta rahaliselt</string>
<string name="icon_header_click_text">Pisipildi muutmiseks vajuta pikalt</string>
<string name="show_name_below_image_thumbnail">Näita pisipildi all nime</string>
<string name="show_note">Näita märkust</string>
<string name="show_validity">Näita kehtivust</string>
<string name="noCameraFoundGuideText">Sinu nutiseadmed ei tundu olema kaamerat. Kui ta siiski on olemas, siis esmalt proovi, kas taaskäivitamine aitab. Lisaks võid nupust „Veel“ leida muid valikuid triipkoodi lisamiseks.</string>
<string name="action_more_options">Lisavalikud</string>
<string name="importCancelled">Import on katkestatud</string>
<string name="settings_category_title_cards">Vahekaartide vaade</string>
<string name="settings_category_title_general">Üldised seadistused</string>
<string name="settings_category_title_privacy">Privaatsus</string>
<string name="action_display_options">Ekraani valikud</string>
<string name="show_archived_cards">Näita arhiveeritud kaarte</string>
<string name="view_online">Vaata võrgus</string>
<string name="addWithoutBarcode">Lisa ilma triipkoodita kaart</string>
<string name="enter_card_id">Sisesta kaardil kuvatav tunnusnumber või -tekst</string>
<string name="card_id_must_not_be_empty">Kaardi tunnus ei tohi olla tühi</string>
<string name="add_a_card_in_a_different_way">Lisa kaart mõnel muul viisil</string>
<string name="field_must_not_be_empty">Väli ei tohi olla tühi</string>
<string name="manually_enter_barcode_instructions">Sisesta sinu kaardil kuvatav tunnusnumber või -tekst ja klõpsi triipkoodi, millelaadset kuvatakse kaardil.</string>
<string name="add_manually_warning_title">Soovitame, et skaneerid triipkoodi</string>
<string name="add_manually_warning_message">Mõnede poodide ja äride puhul triipkoodi väärtus erineb kaardile kirjutatud numbrist. Seetõttu ei pruugi triipkoodi käsitsi lisamine alati toimida. Me tungivalt soovitame, et pigem skaneerid triipkoodi kaameraga. Kas sa siiski soovid jätkata?</string>
<string name="continue_">Jätka</string>
<string name="spend">Kuluta</string>
<string name="receive">Võta vastu</string>
<string name="amountParsingFailed">Vigane summa</string>
<string name="addFromPdfFile">Vali PDF-fail</string>
<string name="errorReadingFile">Faili lugemine ei õnnestunud</string>
<string name="failedLaunchingFileManager">Ei õnnestunud leida toetatud failihaldurit</string>
<string name="multipleBarcodesFoundPleaseChooseOne">Missugust leitud triipkoodidest soovid kasutada?</string>
<string name="pageWithNumber"><xliff:g>%d</xliff:g>. leht</string>
<string name="exportCancelled">Eksport on tühistatud</string>
<string name="useFrontImage">Kasuta esikülje pilti</string>
<string name="useBackImage">Kasuta tagakülje pilti</string>
<string name="settings_use_volume_keys_navigation">Vaheta kaarte helivaljuse nuppudega</string>
<string name="settings_use_volume_keys_navigation_summary">Vaheta kuvatavaid vahekaarte helivaljuse nuppudega</string>
<string name="settings_column_count_1">1</string>
<string name="settings_category_title_cards_overview">Kaartide ülevaade</string>
<string name="settings_column_count_landscape">Veerge rõhtvaates</string>
<string name="settings_automatic_column_count">Automaatne</string>
<string name="settings_column_count_2">2</string>
<string name="settings_column_count_portrait">Veerge püstvaates</string>
<string name="settings_column_count_3">3</string>
<string name="settings_column_count_5">5</string>
<string name="settings_column_count_6">6</string>
<string name="settings_column_count_4">4</string>
<string name="settings_column_count_7">7</string>
<string name="generic_error_please_retry">Vabandust, midagi läks nüüd viltu, palun proovi uuesti...</string>
<string name="unsupportedFile">See fail pole toetatud</string>
<string name="addFromPkpass">Vali Passbooki fail (.pkpass)</string>
<string name="sort_by_valid_from">Kehtib alates</string>
</resources>

View File

@@ -1,2 +1,183 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
<string name="app_name">کاتیما</string>
<string name="action_search">جستجو</string>
<string name="action_add">افزودن</string>
<string name="noGiftCards">برای افزودن کارت دکمه + پلاس را بزنید, یا از ⋮ منو ایمپورت کنید.</string>
<string name="noGiftCardsGroup">تعدادی کارت ایجاد کنید، و سپس آنها را اینجا به گروه بیافزایید.</string>
<string name="noMatchingGiftCards">بدون نتیجه. سعی کنید جستجویتان را تغییر دهید.</string>
<string name="storeName">نام</string>
<string name="note">یادداشت</string>
<string name="cardId">شناسۀ کارت</string>
<string name="barcodeType">نوع بارکد</string>
<string name="noBarcode">بدون بارکد</string>
<string name="star">افزودن به علاقمندی‌ها</string>
<string name="unstar">حذف از علاقمندی‌ها</string>
<string name="cancel">لغو</string>
<string name="save">ذخیره</string>
<string name="edit">ویرایش</string>
<string name="delete">حذف</string>
<string name="confirm">تایید</string>
<string name="deleteTitle">حذف کارت</string>
<plurals name="deleteCardsTitle">
<item quantity="one">حذف <xliff:g>%d</xliff:g> کارت</item>
<item quantity="other">حذف <xliff:g>%d</xliff:g> کارت(ها)</item>
</plurals>
<string name="deleteConfirmation">این کارت برای همیشه حذف شود؟</string>
<string name="ok">تایید</string>
<plurals name="deleteCardsConfirmation">
<item quantity="one">این <xliff:g>%d</xliff:g> کارت برای همیشه حذف شود؟</item>
<item quantity="other">این <xliff:g>%d</xliff:g> کارت برای همیشه حذف شوند؟</item>
</plurals>
<string name="share">همرسانی</string>
<string name="sendLabel">ارسال…</string>
<string name="editCardTitle">ویرایش کارت</string>
<string name="addCardTitle">افزودن کارت</string>
<string name="scanCardBarcode">اسکن بارکد</string>
<string name="cardShortcut">میان‌بر کارت</string>
<string name="noCardsMessage">ابتدا یک کارت بیافزایید</string>
<string name="noCardExistsError">کارت پیدا نشد</string>
<string name="importFailedTitle">ایمپورت ناموفق بود</string>
<string name="importFailed">نمیتوان ایمپورت کرد</string>
<string name="exportSuccessfulTitle">خروجی گرفته شده</string>
<string name="exportFailedTitle">خروجی گرفتن ناموفق بود</string>
<string name="storageReadPermissionRequired">برای این اقدام دسترسی به حافظه مورد نیاز است…</string>
<string name="exportOptionExplanation">داده در محلی که شما انتخاب میکنید نوشته خواهد شد.</string>
<string name="receive">دریافت</string>
<string name="continue_">ادامه</string>
<string name="add_manually_warning_title">اسکن‌کردن توصیه میشود</string>
<string name="field_must_not_be_empty">فیلد نباید خالی باشد</string>
<string name="card_id_must_not_be_empty">شناسۀ کارت نباید خالی باشد</string>
<string name="action_more_options">گزینه‌های بیشتر</string>
<string name="addWithoutBarcode">افزودن کارت بدون بارکد</string>
<string name="enter_card_id">شناسۀ عددی یا متن روی کارت خود را وارد کنید</string>
<string name="view_online">مشاهدۀ آنلاین</string>
<string name="show_archived_cards">مشاهده کارت‌های بایگانی شده</string>
<string name="action_display_options">تنظیمات نمایش</string>
<string name="amountParsingFailed">مقدار نامعتبر</string>
<string name="exportCancelled">خروجی گیری لغو شد</string>
<string name="addFromPdfFile">یک فایل PDF انتخاب کنید</string>
<string name="exportName">خروجی گرفتن</string>
<string name="importExportHelp">پشتیبان‌گیری داده هایتان اجازه میدهد آنها را به دستگاه دیگری منتقل کنید.</string>
<string name="importSuccessfulTitle">ایمپورت شده</string>
<string name="exportFailed">نمیتوان خروجی گرفت</string>
<string name="importing">درحال ایمپورت…</string>
<string name="exporting">درحال خروجی گیری…</string>
<string name="cameraPermissionRequired">دسترسی به دوربین برای این کار نیاز است…</string>
<string name="permissionReadCardsLabel">خواندن کارتهای کاتیما</string>
<string name="permissionReadCardsDescription">کارت های کاتیما و تمام جزئیاتشان از جمله یادداشت‌ها و عکس‌ها را بخوانید</string>
<string name="cameraPermissionDeniedTitle">نمیتوان به دوربین دسترسی پیدا کرد</string>
<string name="noCameraPermissionDirectToSystemSetting">برای اسکن بارکد ها، کاتیما نیاز دارد به دوربین شما دسترسی داشته باشد. اینجا بزنید تا تنظیمات دسترسی خود را تغییر دهید.</string>
<string name="importExport">ایمپورت/خروجی گرفتن</string>
<string name="settings_category_title_privacy">حریم شخصی</string>
<string name="settings_category_title_general">عمومی</string>
<string name="settings_category_title_cards">کارت‌ها</string>
<string name="barcodeImageDescriptionWithType">تصویر بارکد <xliff:g>%s</xliff:g></string>
<string name="importOptionFilesystemButton">از فایل های سیستم</string>
<string name="importOptionApplicationTitle">استفاده از یک برنامه دیگر</string>
<string name="importOptionApplicationButton">استفاده از یک برنامه دیگر</string>
<string name="about">درباره</string>
<string name="importOptionApplicationExplanation">از هر برنامه یا مدیر فایل دلخواه خود برای باز کردن یک فایل استفاده کنید.</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">حق تکثیر © 2019<xliff:g>%d</xliff:g> سیلویا وَن اُس و مشارکت کنندگان</string>
<string name="app_copyright_short">حق نشر © سیلویا وَن اُس و مشارکت کنندگان</string>
<string name="failedParsingImportUriError">تجزیه URI ورودی ناموفق بود</string>
<string name="importOptionFilesystemExplanation">یک فایل مشخص از فایل‌های سیستم انتخاب کنید.</string>
<string name="importOptionFilesystemTitle">ورود از فایل سیستم</string>
<plurals name="selectedCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> انتخاب شد</item>
<item quantity="other"><xliff:g>%d</xliff:g> انتخاب شد</item>
</plurals>
<string name="selectBarcodeTitle">انتخاب بارکد</string>
<string name="starImage">ستاره موردعلاقه</string>
<string name="settings">تنظیمات</string>
<string name="settings_theme">تم</string>
<string name="settings_system_theme">سیستم</string>
<string name="settings_dark_theme">تیره</string>
<string name="settings_card_orientation">جهت صفحه نمایش</string>
<string name="settings_follow_sensor_orientation">همیشه قابل چرخش باشد (بدون در نظر گرفتن تنظیمات سیستم)</string>
<string name="settings_portrait_orientation">عمودی</string>
<string name="settings_keep_screen_on">روشن نگه داشتن صفحه نمایش</string>
<string name="settings_keep_screen_on_summary">غیرفعال سازی مهلت صفحه نمایش هنگام مشاهده کارت</string>
<string name="settings_disable_lockscreen_while_viewing_card">جلوگیری از قفل شدن صفحه</string>
<string name="settings_allow_content_provider_read_title">اجازه به برنامه های دیگر برای دسترسی به داده های من</string>
<string name="settings_allow_content_provider_read_summary">برنامه ها باید برای گرفتن مجوز درخواست کنند</string>
<string name="importSuccessful">داده وارد شد</string>
<string name="thumbnailDescription">تصویر کوچک</string>
<string name="settings_landscape_orientation">افقی</string>
<string name="settings_light_theme">روشن</string>
<string name="settings_display_barcode_max_brightness_summary">برای کارکرد برخی اسکنر ها ضروری است</string>
<string name="settings_display_barcode_max_brightness">روشنایی صفحه</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">جلوگیری از قفل شدن صفحه هنگام مشاهده کارت</string>
<string name="settings_follow_system_orientation">پیروی از سیستم</string>
<string name="intent_import_card_from_url_share_text">میخواهم یک کارت را با تو به اشتراک بگذارم</string>
<string name="settings_use_volume_keys_navigation">جابجایی میان کارت ها با استفاده از کلید های صدا</string>
<string name="settings_use_volume_keys_navigation_summary">از کلید های صدا برای تغیر کارت نمایشی استفاده کنید</string>
<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="chooseExpiryDate">انتخاب تاریخ انقضاء</string>
<string name="app_libraries">کتابخانه های شخص ثالث: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_copyright_old">بر اساس کارت وفاداری Keychain\nکپی رایت © 2016-2020 سازنده : Branden</string>
<string name="app_license">نرم‌افزار آزاد با حقوق کپی‌لفت، تحت مجوز GPLv3+</string>
<string name="groups">گروه‌ها</string>
<string name="noGroupCards">این گروه خالی است</string>
<string name="noGroups">روی دکمه + اضافه کلیک کنید تا گروه‌هایی برای دسته‌بندی اضافه کنید.</string>
<string name="editGroup">ویرایش گروه: <xliff:g>%s</xliff:g></string>
<string name="importCatimaMessage">فایل <i>catima.zip</i> خروجی خود را از Catima برای وارد کردن انتخاب کنید.\nآن را از منوی وارد/صادر کردن در یک اپلیکیشن دیگر Catima با فشردن دکمه صادرکردن ابتدا ایجاد کنید.</string>
<string name="importStocard">واردات از Stocard</string>
<string name="unsupportedBarcodeType">این نوع بارکد هنوز نمی‌تواند نمایش داده شود. ممکن است در نسخه آینده برنامه پشتیبانی شود.</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="importFidmeMessage">فایل خروجی <i>fidme-export-request-xxxxxx.zip</i> خود را از FidMe برای وارد کردن انتخاب کنید، و سپس نوع بارکدها را به صورت دستی مشخص کنید.\nآن را از پروفایل FidMe خود با انتخاب گزینه حفاظت از داده و سپس فشار دادن گزینه استخراج داده من ابتدا ایجاد کنید.</string>
<string name="leaveWithoutSaveTitle">خروج</string>
<string name="balanceSentence">موجودی: <xliff:g>%s</xliff:g></string>
<string name="sameAsCardId">همانند شناسه</string>
<string name="setBarcodeId">تنظیم مقدار بارکد</string>
<string name="exportSuccessful">داده‌ها صادر شدند</string>
<string name="enter_group_name">نام گروه را وارد کنید</string>
<string name="importLoyaltyCardKeychain">وارد کردن از جاکلیدی کارت وفاداری</string>
<string name="importLoyaltyCardKeychainMessage">فایل خروجی <i>LoyaltyCardKeychain.csv</i> خود را از جاسوئیچی کارت وفاداری برای وارد کردن انتخاب کنید.\nآن را از منوی وارد/صادر‌کردن در جاسوئیچی کارت وفاداری با فشردن دکمه صادر‌کردن ابتدا ایجاد کنید.</string>
<string name="app_resources">منابع آزاد از طرف شخص ثالث: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="settings_lock_on_opening_orientation">قفل به جهت استفاده شده در هنگام بازکردن کارت</string>
<plurals name="groupCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> کارت</item>
<item quantity="other"><xliff:g>%d</xliff:g> کارت</item>
</plurals>
<string name="group_name_already_in_use">نام گروه قبلاً استفاده شده</string>
<string name="group_name_is_empty">نام گروه نباید خالی باشد</string>
<string name="group_updated">گروه به روز شد</string>
<string name="all">همه</string>
<string name="deleteConfirmationGroup">حذف گروه؟</string>
<string name="failedOpeningFileManager">ابتدا یک مدیریت فایل نصب کنید.</string>
<string name="moveUp">به بالا حرکت کن</string>
<string name="moveDown">به پایین حرکت کن</string>
<string name="leaveWithoutSaveConfirmation">بدون ذخیره ترک می‌کنید؟</string>
<string name="addManually">بارکد را دستی وارد کنید</string>
<string name="addFromImage">یک تصویر از گالری انتخاب کنید</string>
<string name="groupsList">گروه‌ها: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">تاریخ انقضاء: <xliff:g>%s</xliff:g></string>
<string name="card">کارت</string>
<string name="editBarcode">ویرایش بارکد</string>
<string name="expiryDate">تاریخ انقضا</string>
<string name="never">هرگز</string>
<string name="moveBarcodeToTopOfScreen">بارکد را به بالای صفحه منتقل کنید</string>
<string name="noBarcodeFound">بارکدی پیدا نشد</string>
<string name="errorReadingImage">نمی توان تصویر را خواند</string>
<string name="balance">موجودی</string>
<string name="currency">ارز</string>
<string name="points">امتیاز‌ها</string>
<string name="balanceParsingFailed">موجودی نامعتبر</string>
<string name="chooseImportType">وارد کردن داده ها از</string>
<string name="app_loyalty_card_keychain">جاکلیدی کارت وفاداری</string>
<string name="privacy_policy">خط مشی رازداری</string>
<string name="accept">قبول</string>
<string name="importCatima">واردات از کاتیما</string>
<string name="importFidme">واردات از FidMe</string>
<string name="importStocardMessage">فایل خروجی <i>***.zip</i> خود را از Stocard برای وارد کردن انتخاب کنید.\nاین فایل را با ارسال ایمیل به آدرس support@stocardapp.com و درخواست خروجی داده‌های خود دریافت کنید.</string>
<string name="importVoucherVault">واردات از صندوق کوپن</string>
<string name="importVoucherVaultMessage">فایل خروجی <i>vouchervault.json</i> خود را از صندوق کوپن برای وارد کردن انتخاب کنید.\nآن را ابتدا با فشردن دکمه صادرکردن در صندوق کوپن ایجاد کنید.</string>
<string name="barcodeId">مقدار بارکد</string>
<string name="group_edit">ویرایش گروه‌</string>
<string name="expiryStateSentenceExpired">منقضی شده: <xliff:g>%s</xliff:g></string>
</resources>

View File

@@ -23,9 +23,6 @@
\nLuo se Catima-sovelluksen Tuo/vie-valikosta painamalla siellä ensin Vie.</string>
<string name="importCatima">Tuo Catima varmuuskopiotiedostosta</string>
<string name="accept">Hyväksy</string>
<string name="privacy_policy_popup_text">Tietosuojaseloste (joidenkin sovelluskauppojen vaatimus):
\n
\nMITÄÄN TIETOJA EI KERÄTÄ LAINKAAN, minkä kuka tahansa voi vahvistaa, koska sovelluksemma on vapaa ohjelmisto.</string>
<string name="privacy_policy">Tietosuojakäytäntö</string>
<string name="app_loyalty_card_keychain">Kanta-asiakaskortin avainnippu</string>
<string name="chooseImportType">Tuo tietoja kohteesta</string>
@@ -65,7 +62,7 @@
<string name="intent_import_card_from_url_share_text">Haluan jakaa kortin kanssasi</string>
<string name="settings_disable_lockscreen_while_viewing_card">Estä näytön lukitus</string>
<string name="settings_keep_screen_on">Pidä näyttö päällä</string>
<string name="settings_display_barcode_max_brightness">Kirkasta viivakoodinäkymää</string>
<string name="settings_display_barcode_max_brightness">Kirkasta näyttöä</string>
<string name="settings_dark_theme">Tumma</string>
<string name="settings_light_theme">Vaalea</string>
<string name="settings_system_theme">Järjestelmän oletus</string>
@@ -146,7 +143,7 @@
</plurals>
<plurals name="selectedCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> valittu</item>
<item quantity="other"><xliff:g>%d</xliff:g> valittu</item>
<item quantity="other"><xliff:g>%d</xliff:g> valitut</item>
</plurals>
<string name="importStocard">Tuo Stocardista</string>
<string name="importStocardMessage">Valitse tuotava <i>***.zip</i>-vienti Stocardista.
@@ -157,7 +154,6 @@
<string name="turn_flashlight_off">Sammuta salamavalo</string>
<string name="app_contributors">Mahdollistanut: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="settings_brown_theme">Ruskea</string>
<string name="settings_grey_theme">Harmaa</string>
<string name="settings_green_theme">Vihreä</string>
<string name="settings_sky_blue_theme">Taivaansininen</string>
<string name="settings_blue_theme">Siniset</string>
@@ -185,7 +181,7 @@
<string name="sort_by_expiry">Viimeinen voimassaoloaika</string>
<string name="reverse">...käänteisessä järjestyksessä</string>
<string name="sort_by">Lajitteluperuste</string>
<string name="credits">Krediitit</string>
<string name="credits">Kiitettävää</string>
<string name="help_translate_this_app">Auta kääntämään tämä sovellus</string>
<string name="license">Lisenssi</string>
<string name="source_repository">Lähdekoodivarasto</string>
@@ -214,7 +210,7 @@
<string name="unarchive">Poista arkistosta</string>
<string name="archived">Kortti arkistoitu</string>
<string name="failedLaunchingPhotoPicker">Tuettua galleriasovellusta ei löytynyt</string>
<string name="settings_card_orientation">Viivakoodin suuntaus</string>
<string name="settings_card_orientation">Näytön suunta</string>
<plurals name="groupCardCountWithArchived">
<item quantity="one"><xliff:g>%1$d</xliff:g> kortti (<xliff:g id="archivedCount">%2$d</xliff:g> arkistoitu)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> korttia (<xliff:g id="archivedCount">%2$d</xliff:g> arkistoitu)</item>
@@ -224,10 +220,6 @@
<string name="nextCard">Seuraava</string>
<string name="failedToOpenUrl">Asenna ensin verkkoselain</string>
<string name="welcome">Tervetuloa Catimaan</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="one">Näytä arkisto (<xliff:g>%1$d</xliff:g> kortti)</item>
<item quantity="other">Näytä arkisto (<xliff:g>%1$d</xliff:g> korttia)</item>
</plurals>
<string name="updateBalanceTitle">Kuinka paljon kulutit tai tienasit?</string>
<string name="updateBalanceHint">Syötä summa</string>
<string name="barcodeLongPressMessage">Vain kuvia on mahdollista avata galleriasovelluksessa</string>
@@ -268,7 +260,7 @@
<string name="show_note">Näytä huomautus</string>
<string name="show_balance">Näytä saldo</string>
<string name="show_validity">Näytä kelpoisuus</string>
<string name="settings_category_title_cards">Kortit</string>
<string name="settings_category_title_cards">Korttinäkymä</string>
<string name="settings_category_title_general">Yleiset</string>
<string name="action_display_options">Näyttövalinnat</string>
<string name="app_copyright_short">Tekijänoikeus © Sylvia van Os ja avustajat</string>
@@ -295,4 +287,26 @@
<string name="failedLaunchingFileManager">Tuettua tiedostonhallintasovellusta ei löytynyt</string>
<string name="multipleBarcodesFoundPleaseChooseOne">Mitä löytyneistä viivakoodeista haluat käyttää?</string>
<string name="pageWithNumber">Sivu <xliff:g>%d</xliff:g></string>
</resources>
<string name="noCameraFoundGuideText">Laitteessasi ei näytä olevan kameraa. Jos näin käy, yritä käynnistää laite uudelleen. Muussa tapauksessa käytä alla olevaa Lisää vaihtoehtoja -painiketta lisätäksesi viivakoodin toisella tavalla.</string>
<string name="importCancelled">Tuonti peruttu</string>
<string name="exportCancelled">Vienti peruttu</string>
<string name="useBackImage">Käytä takakuvaa</string>
<string name="useFrontImage">Käytä etukuvaa</string>
<string name="settings_use_volume_keys_navigation">Vaihtele korttien välillä äänenvoimakkuuspainikkeilla</string>
<string name="settings_use_volume_keys_navigation_summary">Käytä äänenvoimakkuuspainikkeita vaihtaaksesi näytettävän kortin</string>
<string name="settings_automatic_column_count">Automaattinen</string>
<string name="settings_column_count_6">6</string>
<string name="settings_category_title_cards_overview">Korttinäkymä</string>
<string name="settings_column_count_portrait">Saraketta pystytilassa</string>
<string name="settings_column_count_landscape">Saraketta vaakatilassa</string>
<string name="settings_column_count_1">1</string>
<string name="settings_column_count_2">2</string>
<string name="settings_column_count_3">3</string>
<string name="settings_column_count_4">4</string>
<string name="settings_column_count_5">5</string>
<string name="settings_column_count_7">7</string>
<string name="addFromPkpass">Valitse Passbook-tiedosto (.pkpass)</string>
<string name="unsupportedFile">Tämä tiedosto ei ole tuettu</string>
<string name="generic_error_please_retry">Pahoittelut, jokin meni pieleen. Yritä uudelleen...</string>
<string name="sort_by_valid_from">Voimassa alkaen</string>
</resources>

View File

@@ -42,7 +42,7 @@
<string name="selectBarcodeTitle">Choisissez le code-barres</string>
<string name="thumbnailDescription">Miniature</string>
<string name="settings">Paramètres</string>
<string name="settings_display_barcode_max_brightness">Augmenter la luminosité du code-barres</string>
<string name="settings_display_barcode_max_brightness">Augmenter la luminosité</string>
<string name="exportSuccessful">Données exportées</string>
<string name="importSuccessful">Données importées</string>
<string name="intent_import_card_from_url_share_text">Je veux partager une carte avec toi</string>
@@ -80,9 +80,6 @@
</plurals>
<string name="groupsList">Groupes : <xliff:g>%s</xliff:g></string>
<string name="accept">Accepter</string>
<string name="privacy_policy_popup_text">Avis sur la politique de confidentialité (exigé par certains magasins dapplications) :
\n
\nAUCUNE DONNÉE NEST COLLECTÉE, ce que tout le monde peut confirmer puisque notre application est un logiciel libre.</string>
<string name="privacy_policy">Politique de confidentialité</string>
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
<string name="chooseImportType">Importer les données depuis</string>
@@ -161,7 +158,6 @@
<string name="settings_system_locale">Système</string>
<string name="settings_locale">Langue</string>
<string name="settings_brown_theme">Marron</string>
<string name="settings_grey_theme">Gris</string>
<string name="settings_green_theme">Vert</string>
<string name="settings_sky_blue_theme">Bleu ciel</string>
<string name="settings_blue_theme">Bleu</string>
@@ -211,7 +207,7 @@
</plurals>
<string name="settings_oled_dark">Fond noir pour le thème sombre</string>
<string name="include_if_asking_support">Si vous voulez demander de l\'aide, incluez les informations suivantes :</string>
<string name="settings_card_orientation">Orientation du code-barres</string>
<string name="settings_card_orientation">Orientation de l\'écran</string>
<string name="settings_follow_system_orientation">Suivre le système</string>
<string name="settings_portrait_orientation">Portrait</string>
<string name="settings_landscape_orientation">Paysage</string>
@@ -230,11 +226,6 @@
<string name="nextCard">Suivant</string>
<string name="previousCard">Précédent</string>
<string name="failedToOpenUrl">Installez d\'abord un navigateur web</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="one">Voir les archives (<xliff:g>%1$d</xliff:g> carte)</item>
<item quantity="many">Voir les archives (<xliff:g>%1$d</xliff:g> cartes)</item>
<item quantity="other">Voir les archives (<xliff:g>%1$d</xliff:g> cartes)</item>
</plurals>
<string name="welcome">Bienvenue dans Catima</string>
<string name="barcodeLongPressMessage">Seules les images peuvent être ouvertes dans lapplication galerie</string>
<string name="failedToRetrieveImageFile">Impossible de récupérer le fichier image</string>
@@ -272,7 +263,7 @@
<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_cards">Vue carte</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>
@@ -303,4 +294,25 @@
<string name="multipleBarcodesFoundPleaseChooseOne">Quel code-barre, parmi ceux trouvés, voulez-vous utiliser?</string>
<string name="pageWithNumber">Page <xliff:g>%d</xliff:g></string>
<string name="noCameraFoundGuideText">Votre appareil ne semble pas disposer d\'une caméra. Si c\'est le cas, veuillez essayer de redémarrer l\'appareil. Sinon, vous pouvez utiliser le bouton \"Plus d\'options\" ci-dessous pour ajouter un code-barre d\'une autre manière.</string>
</resources>
<string name="exportCancelled">Exportation annulée</string>
<string name="importCancelled">Importation annulée</string>
<string name="useFrontImage">Utiliser l\'image de face</string>
<string name="useBackImage">Utiliser l\'image arrière</string>
<string name="settings_use_volume_keys_navigation">Changer de cartes avec les boutons de volume</string>
<string name="settings_use_volume_keys_navigation_summary">Utilisez les boutons de volume pour changer la carte affichée</string>
<string name="settings_category_title_cards_overview">Aperçu des cartes</string>
<string name="settings_column_count_2">2</string>
<string name="settings_column_count_portrait">Colonnes en mode portrait</string>
<string name="settings_column_count_1">1</string>
<string name="settings_column_count_5">5</string>
<string name="settings_column_count_3">3</string>
<string name="settings_column_count_4">4</string>
<string name="settings_column_count_landscape">Colonnes en mode paysage</string>
<string name="settings_automatic_column_count">Automatique</string>
<string name="settings_column_count_6">6</string>
<string name="settings_column_count_7">7</string>
<string name="addFromPkpass">Sélectionner un fichier Cartes / Passbook (.pkpass)</string>
<string name="unsupportedFile">Ce fichier n\'est pas supporté</string>
<string name="generic_error_please_retry">Désolé, un problème est survenu, veuillez réessayer...</string>
<string name="sort_by_valid_from">Valide à partir du</string>
</resources>

View File

@@ -0,0 +1,306 @@
<?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="app_name">Catima</string>
<string name="action_add">Engadir</string>
<string name="noGiftCards">Preme no botón + para engadir unha tarxeta ou desde o menú ⋮.</string>
<string name="noGiftCardsGroup">Crear tarxetas e despois engádeas aquí ao grupo.</string>
<string name="noMatchingGiftCards">Sen resultados. Intenta cambiar a busca.</string>
<string name="storeName">Nome</string>
<string name="barcodeType">Tipo de código de barras</string>
<string name="noBarcode">Sen código de barras</string>
<string name="star">Engadir a favoritas</string>
<string name="save">Gardar</string>
<string name="edit">Editar</string>
<string name="cancel">Desbotar</string>
<string name="delete">Eliminar</string>
<string name="confirm">Confirmar</string>
<plurals name="deleteCardsTitle">
<item quantity="one">Eliminar <xliff:g>%d</xliff:g> tarxeta</item>
<item quantity="other">Eliminar <xliff:g>%d</xliff:g> tarxetas</item>
</plurals>
<string name="deleteConfirmation">Eliminar definitivamente esta tarxeta?</string>
<string name="ok">OK</string>
<string name="share">Compartir</string>
<string name="sendLabel">Enviar…</string>
<string name="editCardTitle">Editar Tarxeta</string>
<string name="addCardTitle">Engadir Tarxeta</string>
<string name="scanCardBarcode">Escanear Código de Barras</string>
<string name="cardShortcut">Atallo á Tarxeta</string>
<string name="noCardsMessage">Primeiro engade a tarxeta</string>
<string name="barcodeImageDescriptionWithType">Imaxe do código de barras de <xliff:g>%s</xliff:g></string>
<string name="failedParsingImportUriError">Non se puido procesar o URI de importación</string>
<string name="importExport">Importar/Exportar</string>
<string name="exportName">Exportar</string>
<string name="importExportHelp">Facendo copia de apoio dos datos podes movelos a outro dispositivo.</string>
<string name="importSuccessfulTitle">Importados</string>
<string name="importFailedTitle">Fallou a importación</string>
<string name="exportSuccessfulTitle">Exportado</string>
<string name="exportFailedTitle">Fallou a exportación</string>
<string name="exportFailed">Non se puido exportar</string>
<string name="importFailed">Non se puido importar</string>
<string name="importing">Importando…</string>
<string name="exporting">Exportando…</string>
<string name="storageReadPermissionRequired">O preciso o permiso de lectura para realizar esta acción…</string>
<string name="cameraPermissionRequired">O preciso o acceso á cámara para realizar esta acción…</string>
<string name="permissionReadCardsLabel">Ler Tarxetas Catima</string>
<string name="permissionReadCardsDescription">ler as tarxetas Catima e os seus detalles, incluíndo notas e imaxes</string>
<string name="cameraPermissionDeniedTitle">Non puido acceder á cámara</string>
<string name="noCameraPermissionDirectToSystemSetting">Catima precisa acceso á cámara para escanear códigos de barras. Toca aquí para cambiar os axustes do permiso.</string>
<string name="exportOptionExplanation">Os datos vanse escribir na localización que elixas.</string>
<string name="importOptionFilesystemTitle">Importar desde o sistema de ficheiros</string>
<string name="importOptionApplicationExplanation">Usa outra app ou o xestor de ficheiros favorito para abrir un ficheiro.</string>
<string name="importOptionApplicationButton">Usar outra app</string>
<string name="about">Sobre</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os e colaboradoras</string>
<string name="app_copyright_short">Copyright © Sylvia van Os e colaboradoras</string>
<string name="app_copyright_old">Baseada en Loyalty Card Keychain\ncopyright © 20162020 Branden Archer</string>
<string name="app_license">Software Libre con Copyleft, licenza GPLv3+</string>
<string name="about_title_fmt">Sobre <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="app_libraries">Bibliotecas libres alleas: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_resources">Recursos alleos libres: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="selectBarcodeTitle">Elixir Código de barras</string>
<string name="settings">Axustes</string>
<string name="settings_theme">Decorado</string>
<string name="settings_follow_sensor_orientation">Rotar sempre (ignora o axuste do sistema)</string>
<string name="settings_portrait_orientation">Retrato</string>
<string name="settings_landscape_orientation">Paisaxe</string>
<string name="settings_lock_on_opening_orientation">Fixar a orientación ao abrir a tarxeta</string>
<string name="settings_display_barcode_max_brightness">Brillo da pantalla</string>
<string name="settings_keep_screen_on_summary">Evita que se apague a pantalla cando se ve unha tarxeta</string>
<string name="settings_disable_lockscreen_while_viewing_card">Evitar bloqueo da pantalla</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Desactiva o bloqueo da pantalla cando se ve unha tarxeta</string>
<string name="settings_allow_content_provider_read_title">Permitir a outras apps acceder aos meus datos</string>
<string name="settings_allow_content_provider_read_summary">As app terán que solicitar igualmente o permiso para acceder aos datos</string>
<string name="settings_use_volume_keys_navigation">Cambiar de tarxeta cos botóns de volume</string>
<string name="settings_use_volume_keys_navigation_summary">Usar os botóns de volume para cambiar a tarxeta que se mostra</string>
<string name="intent_import_card_from_url_share_text">Quero compartir unha tarxeta contigo</string>
<string name="importSuccessful">Datos importados</string>
<string name="exportSuccessful">Datos exportados</string>
<string name="enter_group_name">Escribe o nome do grupo</string>
<string name="groups">Grupos</string>
<string name="group_edit">Editar Grupo</string>
<string name="noGroups">Preme no botón + para engadir grupos por categorías.</string>
<string name="noGroupCards">O grupo está baleiro</string>
<plurals name="groupCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> tarxeta</item>
<item quantity="other"><xliff:g>%d</xliff:g> tarxetas</item>
</plurals>
<string name="group_name_already_in_use">O nome xa se está a usar</string>
<string name="group_name_is_empty">O nome do grupo non pode estar baleiro</string>
<string name="moveUp">Mover arriba</string>
<string name="moveDown">Mover abaixo</string>
<string name="leaveWithoutSaveTitle">Saír</string>
<string name="leaveWithoutSaveConfirmation">Saír antes de gardar?</string>
<string name="addManually">Escribir manualmente o código</string>
<string name="addFromImage">Elixe unha imaxe desde a galería</string>
<string name="groupsList">Grupos: <xliff:g>%s</xliff:g></string>
<string name="editGroup">Editando o Grupo: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Caducidade: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Caducou: <xliff:g>%s</xliff:g></string>
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> punto</item>
<item quantity="other"><xliff:g>%s</xliff:g> puntos</item>
</plurals>
<string name="card">Tarxeta</string>
<string name="editBarcode">Editar código</string>
<string name="expiryDate">Data de caducidade</string>
<string name="never">Nunca</string>
<string name="chooseExpiryDate">Elixir data de caducidade</string>
<string name="moveBarcodeToTopOfScreen">Mover o código de barra á parte superior da pantalla</string>
<string name="noBarcodeFound">Non se atopou un código de barras</string>
<string name="errorReadingImage">Non se puido ler a imaxe</string>
<string name="balance">Saldo</string>
<string name="currency">Divisa</string>
<string name="points">Puntos</string>
<string name="balanceParsingFailed">Saldo non válido</string>
<string name="chooseImportType">Importar datos desde</string>
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
<string name="privacy_policy">Política de Privacidade</string>
<string name="accept">Aceptar</string>
<string name="importCatima">Importar desde Catima</string>
<string name="importCatimaMessage">Selecciona o ficheiro de exportación <i>catima.zip</i> para importalo.\nCréao no menú Importar/Exportar noutra app Catima premendo en Exportar.</string>
<string name="importFidme">Importar desde FidMe</string>
<string name="importFidmeMessage">Elixe o ficheiro exportado <i>fidme-export-request-xxxxxx.zip</i> desde FidMe, e despois elixe manualmente o tipo de código de barras.\nCréao no teu perfil FidMe en Protección de Datos e despois premendo en Extraer os meus datos.</string>
<string name="importLoyaltyCardKeychain">Importar desde Loyalty Card Keychain</string>
<string name="importLoyaltyCardKeychainMessage">Elixe o ficheiro de exportación <i>LoyaltyCardKeychain.csv</i> desde Loyalty Card Keychain \nCréao no menú Importar/Exportar en Loyalty Card Keychain premendo en Exportar.</string>
<string name="importStocard">Importar desde Stocard</string>
<string name="importStocardMessage">Elixe o ficheiro <i>***.zip</i> desde Stocard. \nPodes obtelo escribindo un correo a support@stocardapp.com e pedindo a exportación dos datos.</string>
<string name="importVoucherVault">Importar desde Voucher Vault</string>
<string name="importVoucherVaultMessage">Selecciona o ficheiro de exportación <i>vouchervault.json</i> desde Voucher Vault. \nCréao premendo en Exportar en Voucher Vault.</string>
<string name="barcodeId">Valor do código de barras</string>
<string name="sameAsCardId">Igual que o ID</string>
<string name="setBarcodeId">Establecer valor do código de barras</string>
<string name="unsupportedBarcodeType">Este tipo de código de barras aínda non se pode mostrar. Intentaremos engadir a compatibilidade no futuro.</string>
<string name="wrongValueForBarcodeType">O valor non é válido para o tipo de código de barras seleccionado</string>
<string name="intent_import_card_from_url_share_multiple_text">Quero compartir unhas tarxetas contigo</string>
<string name="frontImageDescription">Imaxe frontal</string>
<string name="backImageDescription">Imaxe posterior</string>
<string name="photos">Fotos</string>
<string name="setFrontImage">Establecer imaxe frontal</string>
<string name="setBackImage">Establecer imaxe posterior</string>
<string name="removeImage">Retirar a imaxe</string>
<string name="takePhoto">Facer unha foto</string>
<string name="updateBarcodeQuestionTitle">Actualizar o valor do código?</string>
<string name="updateBarcodeQuestionText">Cambiaches o ID. Queres cambiar tamén o código de barras para que use o mesmo valor?</string>
<string name="yes">Si</string>
<string name="no">Non</string>
<string name="failedGeneratingShareURL">Non se puido crear un URL para compartir. Informa sobre o fallo.</string>
<string name="turn_flashlight_on">Acender o flash</string>
<string name="turn_flashlight_off">Apagar o flash</string>
<string name="settings_oled_dark">Fondo en negro puro para o decorado escuro</string>
<string name="settings_oled_dark_summary">Diminúe o uso da batería nas pantallas OLED</string>
<string name="settings_system_locale">Sistema</string>
<string name="selectColor">Elixir cor</string>
<string name="settings_theme_color">Cor do decorado</string>
<string name="settings_catima_theme">Catima</string>
<string name="settings_pink_theme">Rosa</string>
<string name="settings_magenta_theme">Maxenta</string>
<string name="settings_violet_theme">Violeta</string>
<string name="settings_sky_blue_theme">Azul celeste</string>
<string name="settings_green_theme">Verde</string>
<string name="settings_brown_theme">Marrón</string>
<string name="app_contributors">Creada grazas a: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="sort">Orde</string>
<string name="showMoreInfo">Ver info</string>
<string name="updateBalance">Actualizar saldo</string>
<string name="failedToRetrieveImageFile">Fallou a obtención do ficheiro de imaxe</string>
<string name="barcodeLongPressMessage">Só imaxes que se abren na app de galería</string>
<string name="sort_by_name">Nome</string>
<string name="sort_by_most_recently_used">Usadas recentemente</string>
<string name="sort_by_expiry">Caducidade</string>
<string name="reverse">…orde inversa</string>
<string name="sort_by">Orde por</string>
<string name="version_history">Historial das versións</string>
<string name="credits">Recoñecementos</string>
<string name="help_translate_this_app">Axuda a traducir a app</string>
<string name="license">Licenza</string>
<string name="source_repository">Repositorio do código</string>
<string name="on_github">en GitHub</string>
<string name="and_data_usage">e uso de datos</string>
<string name="rate_this_app">Valora esta app</string>
<string name="on_google_play">en Google Play</string>
<string name="report_error">Informar de fallo</string>
<string name="translate_platform">en Weblate</string>
<string name="shortcutSelectCard">Elixe unha tarxeta</string>
<string name="options">Opcións</string>
<string name="starred">Con estrela</string>
<string name="include_if_asking_support">Se queres pedir axuda, inclúe esta información:</string>
<string name="duplicateCard">Duplicar</string>
<string name="archive">Arquivar</string>
<string name="unarchive">Sacar do arquivo</string>
<string name="archived">Arquivouse a tarxeta</string>
<string name="unarchived">Sacouse do arquivo</string>
<plurals name="groupCardCountWithArchived">
<item quantity="one"><xliff:g>%1$d</xliff:g> tarxeta (<xliff:g id="archivedCount">%2$d</xliff:g> arquivada)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> tarxetas (<xliff:g id="archivedCount">%2$d</xliff:g> arquivadas)</item>
</plurals>
<string name="previousCard">Anterior</string>
<string name="nextCard">Seguinte</string>
<string name="failedToOpenUrl">Primeiro instala un navegador web</string>
<string name="welcome">Ben vida a Catima</string>
<string name="updateBalanceTitle">Canto gastaches ou recibiches?</string>
<string name="updateBalanceHint">Escribe a cantidade</string>
<string name="currentBalanceSentence">Saldo actual: <xliff:g>%s</xliff:g></string>
<string name="newBalanceSentence">Novo saldo: <xliff:g>%s</xliff:g></string>
<string name="anyDate">Calquera data</string>
<string name="chooseValidFromDate">Elixe data de inicio válida</string>
<string name="validFromSentence">Válida desde: <xliff:g>%s</xliff:g></string>
<string name="height">Alto:</string>
<string name="switchToFrontImage">Cambiar á imaxe frontal</string>
<string name="switchToBackImage">Cambiar á imaxe posterior</string>
<string name="openFrontImageInGalleryApp">Abrir imaxe frontal na app de galería</string>
<string name="openBackImageInGalleryApp">Abrir imaxe posterior na app de galería</string>
<string name="setBarcodeHeight">Establecer altura do código de barras</string>
<string name="icon_header_click_text">Pulsación longa para editar a miniatura</string>
<string name="show_name_below_image_thumbnail">Mostrar nome debaixo da miniatura</string>
<string name="show_note">Ver nota</string>
<string name="show_balance">Ver saldo</string>
<string name="settings_category_title_cards">Vista de tarxeta</string>
<string name="settings_category_title_cards_overview">Vista xeral de tarxetas</string>
<string name="settings_column_count_portrait">Columnas no modo retrato</string>
<string name="settings_automatic_column_count">Automático</string>
<string name="settings_column_count_4">4</string>
<string name="settings_column_count_5">5</string>
<string name="settings_category_title_general">Xeral</string>
<string name="settings_category_title_privacy">Privacidade</string>
<string name="action_display_options">Opcións ao mostrar</string>
<string name="show_archived_cards">Mostrar tarxetas arquivadas</string>
<string name="view_online">Ver en liña</string>
<string name="action_more_options">Máis opcións</string>
<string name="addWithoutBarcode">Engadir unha tarxeta sen código de barras</string>
<string name="enter_card_id">Escribe o número ID ou texto na túa tarxeta</string>
<string name="card_id_must_not_be_empty">O ID da tarxeta non pode estar baleiro</string>
<string name="add_a_card_in_a_different_way">Engadir unha tarxeta doutro xeito</string>
<string name="field_must_not_be_empty">O campo non pode quedar baleiro</string>
<string name="manually_enter_barcode_instructions">Escribe o número ID ou texto na túa tarxeta e preme no código de barras que se pareza ao da túa tarxeta.</string>
<string name="add_manually_warning_title">Recomendamos escanear</string>
<string name="add_manually_warning_message">Nalgunhas tendas o código de barras é diferente ao número escrito na tarxeta. Debido a isto escribir o código de barras manualmente non sempre funciona. Recomendamos que escanees o código de barras coa cámara. Queres continuar igualmente?</string>
<string name="continue_">Continuar</string>
<string name="spend">Gastar</string>
<string name="receive">Recibir</string>
<string name="amountParsingFailed">Cantidade non válida</string>
<string name="failedLaunchingFileManager">Non se atopa un xestor de ficheiros compatible</string>
<string name="multipleBarcodesFoundPleaseChooseOne">Cal destes códigos de barras atopados queres usar?</string>
<string name="pageWithNumber">Páxina <xliff:g>%d</xliff:g></string>
<string name="noCameraFoundGuideText">Parece que o teu dispositivo non ten cámara. Se a ten, intenta reiniciar o dispositivo. Se non, usa o botón inferior de Máis Opcións para engadir o código de barras doutro xeito.</string>
<string name="importCancelled">Cancelouse a importación</string>
<string name="exportCancelled">Cancelouse a exportación</string>
<string name="useFrontImage">Usar imaxe frontal</string>
<string name="useBackImage">Usar imaxe posterior</string>
<plurals name="selectedCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> seleccionado</item>
<item quantity="other"><xliff:g>%d</xliff:g> seleccionados</item>
</plurals>
<string name="action_search">Buscar</string>
<string name="note">Nota</string>
<string name="cardId">ID da tarxeta</string>
<string name="unstar">Retirar das favoritas</string>
<string name="deleteTitle">Eliminar tarxeta</string>
<plurals name="deleteCardsConfirmation">
<item quantity="one">Eliminar definitivamente <xliff:g>%d</xliff:g> tarxeta?</item>
<item quantity="other">Eliminar definitivamente as <xliff:g>%d</xliff:g> tarxetas?</item>
</plurals>
<string name="noCardExistsError">Non atopamos esa tarxeta</string>
<string name="settings_light_theme">Claro</string>
<string name="importOptionFilesystemButton">Desde sistema de ficheiros</string>
<string name="importOptionFilesystemExplanation">Elixe un ficheiro concreto no sistema de ficheiros.</string>
<string name="importOptionApplicationTitle">Usar outra app</string>
<string name="thumbnailDescription">Miniatura</string>
<string name="starImage">Estrela de favorita</string>
<string name="settings_system_theme">Sistema</string>
<string name="settings_follow_system_orientation">Seguir ao sistema</string>
<string name="settings_display_barcode_max_brightness_summary">Preciso para que algúns escáneres funcionen</string>
<string name="settings_keep_screen_on">Manter pantalla acendida</string>
<string name="settings_dark_theme">Escuro</string>
<string name="settings_card_orientation">Orientación da pantalla</string>
<string name="group_updated">Grupo actualizado</string>
<string name="all">Todo</string>
<string name="deleteConfirmationGroup">Eliminar grupo?</string>
<string name="failedOpeningFileManager">Primeiro instala un xestor de ficheiros.</string>
<string name="settings_locale">Idioma</string>
<string name="settings_blue_theme">Azul</string>
<string name="passwordRequired">Escribe o contrasinal</string>
<string name="exportPassword">Establece un contrasinal para protexer a exportación (optativo)</string>
<string name="exportPasswordHint">Escribe o contrasinal</string>
<string name="setIcon">Establecer miniatura</string>
<string name="failedLaunchingPhotoPicker">Non se atopa unha app de galería compatible</string>
<string name="importCards">Importar tarxetas</string>
<string name="validFromDate">Válida desde</string>
<string name="switchToBarcode">Cambiar ao código de barras</string>
<string name="donate">Doar</string>
<string name="show_validity">Ver validez</string>
<string name="settings_column_count_3">3</string>
<string name="settings_column_count_landscape">Columnas no modo paisaxe</string>
<string name="settings_column_count_2">2</string>
<string name="settings_column_count_1">1</string>
<string name="settings_column_count_6">6</string>
<string name="settings_column_count_7">7</string>
<string name="addFromPdfFile">Elixe un ficheiro PDF</string>
<string name="errorReadingFile">Non se puido ler o ficheiro</string>
<string name="unsupportedFile">Este ficheiro non é compatible</string>
<string name="addFromPkpass">Selecciona un ficheiro Passbook (.pkpass)</string>
<string name="generic_error_please_retry">Sentímolo, pero algo fallou, inténtao outra vez…</string>
<string name="sort_by_valid_from">Válido desde</string>
</resources>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<resources>
<string name="action_add">הוספה</string>
<string name="cardId">מזהה כרטיס</string>
<string name="cancel">ביטול</string>
@@ -15,12 +15,6 @@
<string name="barcodeType">סוג ברקוד</string>
<string name="noBarcode">אין ברקוד</string>
<string name="edit">עריכה</string>
<plurals name="selectedCardCount">
<item quantity="one">אחד</item>
<item quantity="two">שניים</item>
<item quantity="many">מעט</item>
<item quantity="other">אחר</item>
</plurals>
<string name="exportFailed">לא ניתן לייצא</string>
<string name="noGiftCardsGroup">צור מספר כרטיסים, ואז שייך אותם לקבוצה פה.</string>
<string name="failedParsingImportUriError">נתיב לא נמצא</string>
@@ -49,16 +43,12 @@
<string name="exportOptionExplanation">המידע יכתב למיקום שאת/ה תבחר/י.</string>
<string name="importOptionFilesystemTitle">יבא ממערכת קבצים</string>
<string name="importOptionFilesystemExplanation">בחר/י קובץ מסויים ממערכת הקבצים.</string>
<plurals name="deleteCardsConfirmation">
<item quantity="one">אחד</item>
<item quantity="two">שניים</item>
<item quantity="many">מעט</item>
<item quantity="other">אחר</item>
</plurals>
<plurals name="deleteCardsTitle">
<item quantity="one">אחד</item>
<item quantity="two">שניים</item>
<item quantity="many">מעט</item>
<item quantity="other">אחר</item>
</plurals>
</resources>
<string name="importCancelled">ייבוא בוטל</string>
<string name="exportCancelled">ייצוא בוטל</string>
<string name="addFromPdfFile">בחר קובץ PDF</string>
<string name="errorReadingFile">לא ניתן לקרוא את הקובץ</string>
<string name="failedLaunchingFileManager">לא נמצא קובץ ניהול נתמך</string>
<string name="multipleBarcodesFoundPleaseChooseOne">באיזה מהברקודים שנמצאו אתה רוצה להשתמש?</string>
<string name="useFrontImage">השתמש בתמונה קדמית</string>
<string name="useBackImage">השתמש בתמונה אחורית</string>
</resources>

View File

@@ -110,9 +110,6 @@
<item quantity="one"><xliff:g>%s</xliff:g> बिंदु</item>
<item quantity="other"><xliff:g>%s</xliff:g> अंक</item>
</plurals>
<string name="privacy_policy_popup_text">निजता नीति नोटिस (कुछ ऐप स्टोर के लिए आवश्यक):
\n
\nकोई भी डेटा एकत्र नहीं किया जाता है, जिसकी पुष्टि कोई भी कर सकता है क्योंकि हमारा ऐप मुफ्त सॉफ्टवेयर है।</string>
<string name="importCatimaMessage">आयात करने के लिए, <i>catima.zip</i> फाइल को चुने जो की Catima से निर्यात किया गया था.
\nदूसरे Catima ऍप के आयात/निर्यात मेनू से निर्यात बटन दबाकर, पहले catima.zip फाइल को बनाये.</string>
<plurals name="selectedCardCount">
@@ -200,7 +197,6 @@
<string name="options">विकल्प</string>
<string name="settings_magenta_theme">मैजेंटा</string>
<string name="failedGeneratingShareURL">साझा करने योग्य यूआरएल जैनरेट नहीं किया जा सकता. कृपया इसकी रिपोर्ट करें।</string>
<string name="settings_grey_theme">स्लेटी</string>
<string name="sort_by_most_recently_used">सबसे हाल ही में उपयोग किया गया</string>
<string name="settings_theme_color">थीम रंग</string>
<string name="settings_sky_blue_theme">आसमानी नीला</string>
@@ -251,10 +247,6 @@
<item quantity="one"><xliff:g>%1$d</xliff:g> कार्ड (<xliff:g id="archivedCount">%2$d</xliff:g> संग्रहीत)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> कार्ड (<xliff:g id="archivedCount">%2$d</xliff:g> संग्रहीत)</item>
</plurals>
<plurals name="viewArchivedCardsWithCount">
<item quantity="one">संग्रह देखें (<xliff:g>%1$d</xliff:g> कार्ड)</item>
<item quantity="other">संग्रह देखें (<xliff:g>%1$d</xliff:g> कार्ड)</item>
</plurals>
<string name="updateBalanceTitle">आपने कितना खर्च या प्राप्त किया?</string>
<string name="chooseValidFromDate">दिनांक से वैध चुनें</string>
<string name="show_name_below_image_thumbnail">छवि थंबनेल के नीचे नाम दिखाएँ</string>
@@ -296,4 +288,8 @@
<string name="errorReadingFile">फाइल को पढ़ा नहीं जा सका</string>
<string name="failedLaunchingFileManager">समर्थित फाइल प्रबंधक नहीं मिल सका</string>
<string name="noCameraFoundGuideText">ऐसा लगता है कि आपके डिवाइस में कैमरा नहीं है। अगर है, तो डिवाइस को रीबूट करने का प्रयास करें। अन्यथा, किसी अन्य तरीके से बारकोड जोड़ने के लिए नीचे दिए गए अधिक विकल्प बटन का उपयोग करें।</string>
<string name="importCancelled">आयात रद्द</string>
<string name="exportCancelled">निर्यात रद्द</string>
<string name="useFrontImage">सामने की छवि का प्रयोग करें</string>
<string name="useBackImage">पीछे की छवि का उपयोग करें</string>
</resources>

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