Compare commits
363 Commits
v2.34.0
...
create-pul
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
98ba87ea56 | ||
|
|
d5c03f9d36 | ||
|
|
6ed2ff849a | ||
|
|
2945450186 | ||
|
|
8944c6d5dc | ||
|
|
97db8ee025 | ||
|
|
777a3cce28 | ||
|
|
91386df0f7 | ||
|
|
9f95812d32 | ||
|
|
361b011205 | ||
|
|
ac45a5cdfe | ||
|
|
e892f5d57c | ||
|
|
a3d24ebe3b | ||
|
|
29ce8e63b3 | ||
|
|
223d6d1d35 | ||
|
|
e712765f0b | ||
|
|
ad68c43857 | ||
|
|
626c25b781 | ||
|
|
0e9366e0ce | ||
|
|
cccffe9543 | ||
|
|
821e81303c | ||
|
|
d3ba0ff93f | ||
|
|
2bf9f58054 | ||
|
|
07ba380c21 | ||
|
|
6e523dff7e | ||
|
|
702cc17bd5 | ||
|
|
6b9c452de7 | ||
|
|
5d9a670225 | ||
|
|
4cb939ab6b | ||
|
|
f14b2dffcd | ||
|
|
55b0ee7a63 | ||
|
|
4adfb0d292 | ||
|
|
948ee26852 | ||
|
|
a652d3fd9a | ||
|
|
18e530f3a0 | ||
|
|
a55dcd760c | ||
|
|
2bbcad03ef | ||
|
|
cc9c50032c | ||
|
|
06cf3e9288 | ||
|
|
a25e91dede | ||
|
|
57086649f4 | ||
|
|
7d2fc03248 | ||
|
|
b2ad30d1ae | ||
|
|
8970a0a031 | ||
|
|
c9e713cf7f | ||
|
|
64e315f0b0 | ||
|
|
f60cf0e674 | ||
|
|
5d2a1b0263 | ||
|
|
77860441ad | ||
|
|
f46ec1ec51 | ||
|
|
e644c347ec | ||
|
|
0b28df9999 | ||
|
|
dddb3e3a11 | ||
|
|
0518821341 | ||
|
|
2eefcf1270 | ||
|
|
93c3705207 | ||
|
|
9fcf9e4dd9 | ||
|
|
392ce9bc79 | ||
|
|
da3eaf36f1 | ||
|
|
0458c501c8 | ||
|
|
632ef8b3a8 | ||
|
|
40e5014cc6 | ||
|
|
ba09eb4ca3 | ||
|
|
2c77dcadb5 | ||
|
|
99eaaebf1c | ||
|
|
f2e77cdf09 | ||
|
|
8f00b17315 | ||
|
|
3a17756532 | ||
|
|
cff3fff971 | ||
|
|
2763635f17 | ||
|
|
1dd1a1273f | ||
|
|
3f5b953c16 | ||
|
|
1539d88d78 | ||
|
|
91ee846054 | ||
|
|
c5cecee7b1 | ||
|
|
1e0a52d780 | ||
|
|
0792bb1407 | ||
|
|
6e9a05389a | ||
|
|
68833a7ff1 | ||
|
|
cc7553850a | ||
|
|
e66277d665 | ||
|
|
caea63ea32 | ||
|
|
1761465532 | ||
|
|
8218cc63c7 | ||
|
|
c2ff763311 | ||
|
|
813287a657 | ||
|
|
66c3046c4d | ||
|
|
acbdf79d79 | ||
|
|
ade3db0902 | ||
|
|
d66066c195 | ||
|
|
0a222ca16a | ||
|
|
48fa369dc3 | ||
|
|
9e861b1b10 | ||
|
|
6b7926ecde | ||
|
|
ccd6e12547 | ||
|
|
c869104e82 | ||
|
|
f430d3071b | ||
|
|
26460753a6 | ||
|
|
2653c7aea3 | ||
|
|
1a892b2de3 | ||
|
|
a9e9ee511d | ||
|
|
7719a2d3fd | ||
|
|
84a6202db1 | ||
|
|
4d8a4fbd6a | ||
|
|
d556e7e0a2 | ||
|
|
5f039c5c3f | ||
|
|
5bf69db296 | ||
|
|
f20cac5d85 | ||
|
|
69976289ca | ||
|
|
8b30f92dfd | ||
|
|
477c70a8e5 | ||
|
|
2e9d1a41f6 | ||
|
|
ff617036c7 | ||
|
|
2b4e8b1f8b | ||
|
|
7bcbdd8358 | ||
|
|
45c212c5cc | ||
|
|
00d7b5e231 | ||
|
|
0314d49b77 | ||
|
|
6335b731df | ||
|
|
c248d1e84c | ||
|
|
94de9829b9 | ||
|
|
0448efd04c | ||
|
|
21f4b9b5cf | ||
|
|
01a30db52e | ||
|
|
01ed9bd30f | ||
|
|
583edb53d9 | ||
|
|
f51cc70d8e | ||
|
|
539d05a603 | ||
|
|
906162ebb4 | ||
|
|
b06203dc8a | ||
|
|
6aec4b93ff | ||
|
|
3ea6f64021 | ||
|
|
51fb01b190 | ||
|
|
01b23109ae | ||
|
|
4e291b58d3 | ||
|
|
1689cf1026 | ||
|
|
a55ce2c952 | ||
|
|
d2ff17a90e | ||
|
|
70c446e88d | ||
|
|
0d6dc40da5 | ||
|
|
a4f3a81d58 | ||
|
|
c64f75ffe4 | ||
|
|
0fdb6ee567 | ||
|
|
9aa40fc88c | ||
|
|
4f4c0171c0 | ||
|
|
e4644b3eb7 | ||
|
|
999cf241f8 | ||
|
|
42b964a324 | ||
|
|
1262bfd502 | ||
|
|
81fe561678 | ||
|
|
9cb989155d | ||
|
|
59587f4a40 | ||
|
|
4dc0d4cd24 | ||
|
|
89598be72e | ||
|
|
1d2359f295 | ||
|
|
026984920b | ||
|
|
03ed289ef9 | ||
|
|
0ccbeb42dd | ||
|
|
3f9b772a11 | ||
|
|
e97c9de471 | ||
|
|
872db6b966 | ||
|
|
724d036df9 | ||
|
|
fc98e6651a | ||
|
|
a70e4aa7a7 | ||
|
|
d542be322c | ||
|
|
d5a977c5b0 | ||
|
|
bac9199974 | ||
|
|
bb92ec2291 | ||
|
|
b155f45b01 | ||
|
|
b2f79f836b | ||
|
|
9ba7e4a92b | ||
|
|
28088beb72 | ||
|
|
25351f4138 | ||
|
|
1ac4db8641 | ||
|
|
5cee4ef497 | ||
|
|
b323c2e5cd | ||
|
|
66be4a8c18 | ||
|
|
dd2bd294ba | ||
|
|
e4db1e931a | ||
|
|
f8b3e9c65b | ||
|
|
880a596621 | ||
|
|
9903b4d955 | ||
|
|
40bc87c772 | ||
|
|
586642c6f6 | ||
|
|
f3847a4a2b | ||
|
|
63352c310e | ||
|
|
e7aac163c2 | ||
|
|
5a3d61d8f0 | ||
|
|
33ba81d3b0 | ||
|
|
6a0956181d | ||
|
|
aca7d3bd9c | ||
|
|
e3e8378f8e | ||
|
|
61d235b497 | ||
|
|
e069d7a956 | ||
|
|
3d8806e38c | ||
|
|
650da3bd6a | ||
|
|
26b7cece35 | ||
|
|
1d3da4d1d1 | ||
|
|
bc3aeed090 | ||
|
|
6606eeb9a7 | ||
|
|
2401a3f8bf | ||
|
|
b3685c0c7e | ||
|
|
868315948e | ||
|
|
19a68719fe | ||
|
|
92570ec75c | ||
|
|
573817f81d | ||
|
|
21da1fed85 | ||
|
|
c23527eb82 | ||
|
|
926b9e0822 | ||
|
|
d32a0b698d | ||
|
|
47bf18f219 | ||
|
|
91096c5839 | ||
|
|
477c16360e | ||
|
|
9a1d7d2e44 | ||
|
|
be54c50786 | ||
|
|
2624924f53 | ||
|
|
724552eaa3 | ||
|
|
bef0d70d09 | ||
|
|
d7201f62ab | ||
|
|
1f229980b7 | ||
|
|
8f08b1989b | ||
|
|
e3c83c0cb0 | ||
|
|
431e380f5e | ||
|
|
5c7b102e08 | ||
|
|
6dc1a1b196 | ||
|
|
6c01d2ffa9 | ||
|
|
3156fd6daf | ||
|
|
6fa4ab3e3b | ||
|
|
9fa67b59c7 | ||
|
|
0935a17fec | ||
|
|
5fdc575485 | ||
|
|
d6bbd16945 | ||
|
|
1110f7ee99 | ||
|
|
d64860a34e | ||
|
|
9fb0da6954 | ||
|
|
12b0f8806b | ||
|
|
5c5a1df39d | ||
|
|
5b0ac65fbe | ||
|
|
e9b542ee6e | ||
|
|
ae6bf5e8f6 | ||
|
|
4dc564ffcf | ||
|
|
49a9ef2f80 | ||
|
|
1907f482eb | ||
|
|
08aad7ce20 | ||
|
|
f555a160d5 | ||
|
|
2d9b7f358e | ||
|
|
db396b5f21 | ||
|
|
018d36c3fd | ||
|
|
e6621244b8 | ||
|
|
29aef64d97 | ||
|
|
cbe243feb3 | ||
|
|
ff02c59f85 | ||
|
|
3895bc1f73 | ||
|
|
cd0cce532a | ||
|
|
3fdf6693d2 | ||
|
|
d2be344700 | ||
|
|
9bd2898678 | ||
|
|
07f2348a6d | ||
|
|
ddd1c1a516 | ||
|
|
8de76e3c52 | ||
|
|
6ea2645e9d | ||
|
|
ed166b1b33 | ||
|
|
2dd53a5300 | ||
|
|
97f9120acf | ||
|
|
dd29be75f2 | ||
|
|
fa87df2ed8 | ||
|
|
1fb94de809 | ||
|
|
0e18e84c8f | ||
|
|
0ba2261033 | ||
|
|
703ebf9418 | ||
|
|
ff08dbe5d5 | ||
|
|
3003a10550 | ||
|
|
f95be6cc71 | ||
|
|
23bc40e630 | ||
|
|
45c47674fb | ||
|
|
cf1d1a8122 | ||
|
|
45d2629863 | ||
|
|
f6b0736bbf | ||
|
|
83f9a2bcc9 | ||
|
|
1b817222f0 | ||
|
|
50db796a47 | ||
|
|
f2f7fe3151 | ||
|
|
90293b90fb | ||
|
|
f1751eaebf | ||
|
|
19a3aa0b86 | ||
|
|
a3b901e357 | ||
|
|
fbe12cfadc | ||
|
|
3ffbf11902 | ||
|
|
5c3b32a6ee | ||
|
|
36267b8255 | ||
|
|
668c9b0d76 | ||
|
|
eebbe6dec8 | ||
|
|
a84ae51a4f | ||
|
|
bdbb977233 | ||
|
|
ac27cc6a1e | ||
|
|
91551bf4e8 | ||
|
|
e8c11debfd | ||
|
|
e29a1c659f | ||
|
|
d66bf0e3fd | ||
|
|
172b71dd00 | ||
|
|
10ce432c97 | ||
|
|
3299a8dca3 | ||
|
|
5dca8bc5d2 | ||
|
|
1b8f8704f5 | ||
|
|
64e801311b | ||
|
|
da8202b4e1 | ||
|
|
72d70f1265 | ||
|
|
660597e89a | ||
|
|
4a48ac8797 | ||
|
|
4c61c19e4f | ||
|
|
bb3b13364c | ||
|
|
b34bb65f79 | ||
|
|
a7cfb4b68f | ||
|
|
8d58a6192d | ||
|
|
1da34ceda4 | ||
|
|
dc31b7e839 | ||
|
|
5c6ee7b787 | ||
|
|
5620a62cad | ||
|
|
429abb4914 | ||
|
|
f90d33daf7 | ||
|
|
baa67cf9f4 | ||
|
|
4054269db3 | ||
|
|
559b8d00dd | ||
|
|
9b9c19586f | ||
|
|
a3407734a7 | ||
|
|
99c579ee51 | ||
|
|
81bc7db43e | ||
|
|
117e08d957 | ||
|
|
89356dac50 | ||
|
|
c7bf1f5f30 | ||
|
|
1a7a2d31f4 | ||
|
|
8fd4335a98 | ||
|
|
6b4b0e846b | ||
|
|
451fa87990 | ||
|
|
2c50c2b48c | ||
|
|
8b9c26ad5a | ||
|
|
ef7db55d8c | ||
|
|
8f2d39d0ec | ||
|
|
3597e3098f | ||
|
|
0702fc579c | ||
|
|
017cf19d27 | ||
|
|
83a3a5b9e2 | ||
|
|
54828c3c93 | ||
|
|
31e517d7ee | ||
|
|
00957ac576 | ||
|
|
852c38d88d | ||
|
|
67314b09a9 | ||
|
|
944e2ca0c0 | ||
|
|
68564864d5 | ||
|
|
19bccc0c82 | ||
|
|
04905edab4 | ||
|
|
179a9adbe5 | ||
|
|
3925a79158 | ||
|
|
71de6f8c99 | ||
|
|
9d81ca5c9b | ||
|
|
75c393af92 | ||
|
|
3e16515b6c | ||
|
|
3e9857f14f | ||
|
|
20ee7c9324 | ||
|
|
fa6ee155ac | ||
|
|
c186e53eab | ||
|
|
75abd6f80c | ||
|
|
0a98e6154c |
76
.github/workflows/android.yml
vendored
@@ -30,39 +30,45 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
api-level: [ 21, 34 ]
|
||||
flavor: [Foss, Gplay]
|
||||
steps:
|
||||
- uses: actions/checkout@v4.2.2
|
||||
- name: Fail on bad translations
|
||||
run: if grep -ri "<xliff" app/src/main/res/values*/strings.xml; then echo "Invalidly escaped translations found"; exit 1; fi
|
||||
- uses: gradle/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 assembleRelease
|
||||
- name: Check lint
|
||||
run: ./gradlew lintRelease
|
||||
- name: Run unit tests
|
||||
run: timeout 5m ./gradlew testReleaseUnitTest || { ./gradlew --stop && timeout 5m ./gradlew testReleaseUnitTest; }
|
||||
- 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
|
||||
uses: ReactiveCircus/android-emulator-runner@v2
|
||||
with:
|
||||
api-level: ${{ matrix.api-level }}
|
||||
arch: x86_64
|
||||
script: ./gradlew connectedCheck
|
||||
- name: SpotBugs
|
||||
run: ./gradlew spotbugsRelease
|
||||
- name: Archive test results
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4.4.3
|
||||
with:
|
||||
name: test-results-api${{ matrix.api-level }}
|
||||
path: app/build/reports
|
||||
- uses: actions/checkout@v4.2.2
|
||||
- name: Fail on bad translations
|
||||
run: if grep -ri "<xliff" app/src/main/res/values*/strings.xml; then echo "Invalidly escaped translations found"; exit 1; fi
|
||||
- uses: gradle/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
|
||||
|
||||
4
.github/workflows/changelog-to-fastlane.yml
vendored
@@ -29,13 +29,13 @@ jobs:
|
||||
id: checkout
|
||||
uses: actions/checkout@v4.2.2
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5.3.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@v7.0.5
|
||||
uses: peter-evans/create-pull-request@v7.0.8
|
||||
with:
|
||||
title: "Update Fastlane changelogs"
|
||||
commit-message: "Update Fastlane changelogs"
|
||||
|
||||
2
.github/workflows/contributors-to-file.yml
vendored
@@ -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@v7.0.5
|
||||
uses: peter-evans/create-pull-request@v7.0.8
|
||||
with:
|
||||
title: "Update contributors"
|
||||
commit-message: "Update contributors"
|
||||
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
- 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
|
||||
@@ -39,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@v7.0.5
|
||||
uses: peter-evans/create-pull-request@v7.0.8
|
||||
with:
|
||||
title: "Update feature graphic"
|
||||
commit-message: "Update feature graphic"
|
||||
|
||||
2
.github/workflows/gradle-update.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
||||
id: gradle-update
|
||||
- uses: gradle/actions/wrapper-validation@v4
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v7.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 }}"
|
||||
|
||||
2
.github/workflows/update-locales.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
- name: Update locales
|
||||
run: .scripts/locales.py
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v7.0.5
|
||||
uses: peter-evans/create-pull-request@v7.0.8
|
||||
with:
|
||||
title: "Update locales"
|
||||
commit-message: "Update locales"
|
||||
|
||||
3
.gitignore
vendored
@@ -25,3 +25,6 @@
|
||||
/.bundle/
|
||||
/vendor/bundle
|
||||
/lib/bundler/man/
|
||||
|
||||
# Catima-specific
|
||||
SHA256SUMS
|
||||
|
||||
@@ -37,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 ;;
|
||||
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
|
||||
|
||||
25
CHANGELOG.md
@@ -1,5 +1,30 @@
|
||||
# Changelog
|
||||
|
||||
## 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
|
||||
|
||||
128
CODE_OF_CONDUCT.md
Normal 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.
|
||||
61
Gemfile.lock
@@ -9,21 +9,22 @@ GEM
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
artifactory (3.0.17)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.3.0)
|
||||
aws-partitions (1.998.0)
|
||||
aws-sdk-core (3.211.0)
|
||||
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.992.0)
|
||||
aws-sigv4 (~> 1.9)
|
||||
base64
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-kms (1.95.0)
|
||||
aws-sdk-core (~> 3, >= 3.210.0)
|
||||
aws-sdk-kms (1.99.0)
|
||||
aws-sdk-core (~> 3, >= 3.216.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sdk-s3 (1.169.0)
|
||||
aws-sdk-core (~> 3, >= 3.210.0)
|
||||
aws-sdk-s3 (1.182.0)
|
||||
aws-sdk-core (~> 3, >= 3.216.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sigv4 (1.10.1)
|
||||
aws-sigv4 (1.11.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
base64 (0.2.0)
|
||||
@@ -33,7 +34,7 @@ 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)
|
||||
@@ -58,8 +59,8 @@ 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-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)
|
||||
@@ -67,8 +68,8 @@ GEM
|
||||
faraday-retry (1.0.3)
|
||||
faraday_middleware (1.2.1)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.3.1)
|
||||
fastlane (2.225.0)
|
||||
fastimage (2.4.0)
|
||||
fastlane (2.227.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
@@ -108,7 +109,7 @@ 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)
|
||||
@@ -129,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.1)
|
||||
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)
|
||||
@@ -150,23 +151,25 @@ GEM
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (>= 0.16, < 2.a)
|
||||
highline (2.0.3)
|
||||
http-cookie (1.0.7)
|
||||
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.5)
|
||||
jwt (2.9.3)
|
||||
json (2.10.2)
|
||||
jwt (2.10.1)
|
||||
base64
|
||||
mini_magick (4.13.2)
|
||||
mini_mime (1.1.5)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.4.1)
|
||||
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)
|
||||
plist (3.7.2)
|
||||
public_suffix (6.0.1)
|
||||
rake (13.2.1)
|
||||
representable (3.2.0)
|
||||
@@ -174,10 +177,10 @@ GEM
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.2)
|
||||
rexml (3.3.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)
|
||||
@@ -199,15 +202,15 @@ GEM
|
||||
uber (0.1.0)
|
||||
unicode-display_width (2.6.0)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.26.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.4.0)
|
||||
rexml (>= 3.3.6, < 4.0)
|
||||
xcpretty (0.3.0)
|
||||
rouge (~> 2.0.7)
|
||||
xcpretty (0.4.0)
|
||||
rouge (~> 3.28.0)
|
||||
xcpretty-travis-formatter (1.0.1)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
|
||||
@@ -218,4 +221,4 @@ DEPENDENCIES
|
||||
fastlane
|
||||
|
||||
BUNDLED WITH
|
||||
2.5.16
|
||||
2.5.22
|
||||
|
||||
@@ -16,21 +16,24 @@ spotbugs {
|
||||
|
||||
android {
|
||||
namespace = "protect.card_locker"
|
||||
compileSdk = 34
|
||||
compileSdk = 35
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "me.hackerchick.catima"
|
||||
minSdk = 21
|
||||
targetSdk = 34
|
||||
versionCode = 142
|
||||
versionName = "2.34.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", "et", "fi", "fr", "gl", "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", "sr", "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 {
|
||||
@@ -51,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
|
||||
@@ -93,14 +111,14 @@ android {
|
||||
dependencies {
|
||||
// AndroidX
|
||||
implementation("androidx.appcompat:appcompat:1.7.0")
|
||||
implementation("androidx.constraintlayout:constraintlayout:2.2.0")
|
||||
implementation("androidx.core:core-ktx:1.13.1")
|
||||
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.3.7")
|
||||
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")
|
||||
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.3")
|
||||
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")
|
||||
|
||||
// Third-party
|
||||
implementation("com.journeyapps:zxing-android-embedded:4.3.0@aar")
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="app_name">Debugar Catima</string>
|
||||
</resources>
|
||||
|
||||
4
app/src/debug/res/values-fa/strings.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">عیبیابی کاتیما</string>
|
||||
</resources>
|
||||
@@ -1,2 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="app_name">Catimaデバーグ</string>
|
||||
</resources>
|
||||
|
||||
@@ -49,6 +49,8 @@
|
||||
<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" />
|
||||
@@ -58,6 +60,8 @@
|
||||
<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
|
||||
@@ -75,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">
|
||||
@@ -119,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"
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
149
app/src/main/java/protect/card_locker/AboutActivity.kt
Normal 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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -70,6 +70,7 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||
public enum LoyaltyCardOrder {
|
||||
Alpha,
|
||||
LastUsed,
|
||||
ValidFrom,
|
||||
Expiry
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -60,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();
|
||||
|
||||
@@ -124,9 +124,9 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
}
|
||||
|
||||
inputHolder.mCardIcon.setContentDescription(loyaltyCard.store);
|
||||
inputHolder.mIconBackgroundColor = Utils.setIconOrTextWithBackground(mContext, loyaltyCard, icon, inputHolder.mCardIcon, inputHolder.mCardText, new Settings(mContext).getPreferredColumnCount());
|
||||
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());
|
||||
@@ -212,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();
|
||||
@@ -232,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());
|
||||
@@ -297,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{
|
||||
@@ -333,11 +304,6 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
} else{
|
||||
mArchived.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
mStarBorder.invalidate();
|
||||
mStarBackground.invalidate();
|
||||
mArchivedBackground.invalidate();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,6 +297,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
super.onCreate(savedInstanceState);
|
||||
binding = LoyaltyCardEditActivityBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
Utils.applyWindowInsets(binding.getRoot());
|
||||
|
||||
viewModel = new ViewModelProvider(this).get(LoyaltyCardEditActivityViewModel.class);
|
||||
|
||||
|
||||
@@ -248,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);
|
||||
|
||||
|
||||
@@ -229,6 +229,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
|
||||
binding = MainActivityBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
Utils.applyWindowInsets(binding.getRoot());
|
||||
setSupportActionBar(binding.toolbar);
|
||||
groupsTabLayout = binding.groups;
|
||||
contentMainBinding = ContentMainBinding.bind(binding.include.getRoot());
|
||||
@@ -500,7 +501,12 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
parseResultList = Utils.retrieveBarcodesFromImage(this, data);
|
||||
} else if (receivedType.equals("application/pdf")) {
|
||||
parseResultList = Utils.retrieveBarcodesFromPdf(this, data);
|
||||
} else if (receivedType.equals("application/vnd.apple.pkpass")) {
|
||||
} 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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -296,30 +296,22 @@ class PkpassParser(context: Context, uri: Uri?) {
|
||||
}
|
||||
|
||||
// Append type-specific info to the pass
|
||||
noteText.append("\n\n")
|
||||
|
||||
// Find the relevant pass type and parse it
|
||||
var hasPassData = false
|
||||
for (passType in listOf("boardingPass", "coupon", "eventTicket", "generic")) {
|
||||
try {
|
||||
noteText.append(
|
||||
parsePassJSONPassFields(
|
||||
jsonObject.getJSONObject(passType),
|
||||
locale
|
||||
)
|
||||
var extraText = parsePassJSONPassFields(
|
||||
jsonObject.getJSONObject(passType),
|
||||
locale
|
||||
)
|
||||
|
||||
hasPassData = true
|
||||
noteText.append("\n\n")
|
||||
noteText.append(extraText)
|
||||
|
||||
break
|
||||
} catch (ignored: JSONException) {}
|
||||
}
|
||||
|
||||
// Failed to parse anything, error out
|
||||
if (!hasPassData) {
|
||||
throw FormatException(mContext.getString(R.string.errorReadingFile))
|
||||
}
|
||||
|
||||
note = noteText.toString()
|
||||
}
|
||||
|
||||
|
||||
@@ -100,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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -27,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;
|
||||
@@ -38,7 +39,10 @@ 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;
|
||||
@@ -180,19 +184,39 @@ public class Utils {
|
||||
if (uri == null) {
|
||||
Log.e(TAG, "Pkpass did not contain any data");
|
||||
Toast.makeText(context, R.string.errorReadingFile, Toast.LENGTH_LONG).show();
|
||||
return null;
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
PkpassParser pkpassParser = new PkpassParser(context, uri);
|
||||
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()) {
|
||||
return Collections.singletonList(new ParseResult(ParseResultType.FULL, pkpassParser.toLoyaltyCard(null)));
|
||||
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 = new ParseResult(ParseResultType.FULL, pkpassParser.toLoyaltyCard(locale));
|
||||
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);
|
||||
}
|
||||
@@ -1025,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);
|
||||
}
|
||||
@@ -1101,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;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
11
app/src/main/res/drawable/loyalty_card_icon_starred.xml
Normal 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>
|
||||
@@ -15,8 +15,7 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/textView"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/ic_baseline_archive_24" />
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -72,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>
|
||||
|
||||
@@ -110,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>
|
||||
|
||||
|
||||
@@ -11,46 +11,53 @@ Katharine Chui
|
||||
SlavekB
|
||||
mondstern
|
||||
IllusiveMan196
|
||||
Altonss
|
||||
大王叫我来巡山
|
||||
Altonss
|
||||
Michael Moroni
|
||||
Eric
|
||||
B o d o
|
||||
GM
|
||||
Petr Novák
|
||||
laralem
|
||||
Petr Novák
|
||||
Joel A
|
||||
Priit Jõerüüt
|
||||
Taco
|
||||
pfaffenrodt
|
||||
Aayush Gupta
|
||||
Scrambled777
|
||||
Максим Горпиніч
|
||||
ikanakova
|
||||
HudobniVolk
|
||||
Giovanni Donisi
|
||||
Nyatsuki
|
||||
Priit Jõerüüt
|
||||
B o d o
|
||||
Edgars Andersons
|
||||
Jiri Grönroos
|
||||
Максим Горпиніч
|
||||
Nyatsuki
|
||||
Silvério Santos
|
||||
Balázs Meskó
|
||||
Milo Ivir
|
||||
Samantaz Fox
|
||||
Cliff Heraldo
|
||||
Sergio Paredes
|
||||
Ankit Tiwari
|
||||
josé m
|
||||
Arno-github
|
||||
Milo Ivir
|
||||
Balázs Meskó
|
||||
Jose Delvani
|
||||
mdvhimself
|
||||
Milan Šalka
|
||||
ikanakova
|
||||
Kachelkaiser
|
||||
Skrripy
|
||||
huuhaa
|
||||
waffshappen
|
||||
Marnick L'Eau
|
||||
Silvério Santos
|
||||
Maksim2005UA
|
||||
ngocanhtve
|
||||
Quentin PAGÈS
|
||||
Projjal Moitra
|
||||
Kachelkaiser
|
||||
Robin
|
||||
JungHee Lee
|
||||
தமிழ் நேரம்
|
||||
Ziad OUALHADJ
|
||||
Vasilis
|
||||
Robin Liu
|
||||
Renko
|
||||
Denis Shilin
|
||||
@@ -59,14 +66,16 @@ Alexander Ivanov
|
||||
Miha Frangež
|
||||
Viet Nguyen Hoang
|
||||
stavpup
|
||||
josé m
|
||||
ehrt74
|
||||
Virginie
|
||||
Tim Trek
|
||||
MisterCosta96
|
||||
arshbeerSingh
|
||||
Augustin LAVILLE
|
||||
Freddo espresso
|
||||
Govind S Nair
|
||||
Kim Seohyun
|
||||
Tim Trek
|
||||
rudy3
|
||||
Ricky Tigg
|
||||
Michael Gangolf
|
||||
Peter Dave Hello
|
||||
|
||||
@@ -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>
|
||||
@@ -277,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>
|
||||
@@ -298,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>
|
||||
@@ -316,4 +316,21 @@
|
||||
<string name="exportCancelled">تم الغاء الاستخراج</string>
|
||||
<string name="useFrontImage">استخدام صورة أمامية</string>
|
||||
<string name="useBackImage">استخدم صورة خلفية</string>
|
||||
</resources>
|
||||
<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>
|
||||
|
||||
@@ -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>
|
||||
@@ -308,4 +308,5 @@
|
||||
<string name="generic_error_please_retry">Съжаляваме, нещо се обърка, опитайте отново…</string>
|
||||
<string name="addFromPkpass">Изберете файл на Passbook (.pkpass)</string>
|
||||
<string name="unsupportedFile">Този вид файлове не се поддържат</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Начало валидност</string>
|
||||
</resources>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -297,7 +297,22 @@
|
||||
<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žijte přední 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>
|
||||
</resources>
|
||||
<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>
|
||||
|
||||
@@ -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>
|
||||
@@ -66,22 +66,22 @@
|
||||
<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>
|
||||
@@ -100,4 +100,58 @@
|
||||
<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>
|
||||
@@ -163,7 +163,7 @@
|
||||
<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>
|
||||
@@ -305,4 +305,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Gültig ab</string>
|
||||
</resources>
|
||||
|
||||
@@ -307,4 +307,5 @@
|
||||
<string name="generic_error_please_retry">Λυπούμαστε, κάτι πήγε στραβά, δοκιμάστε ξανά...</string>
|
||||
<string name="unsupportedFile">Το αρχείο δεν υποστηρίζεται</string>
|
||||
<string name="addFromPkpass">Επιλογή αρχείου Passbook (.pkpass)</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Έναρξη ισχύος</string>
|
||||
</resources>
|
||||
|
||||
@@ -314,4 +314,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Válido desde</string>
|
||||
</resources>
|
||||
|
||||
@@ -199,7 +199,7 @@
|
||||
<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">Tee foto</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>
|
||||
@@ -303,4 +303,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Kehtib alates</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<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>
|
||||
@@ -41,7 +41,7 @@
|
||||
<string name="importFailed">نمیتوان ایمپورت کرد</string>
|
||||
<string name="exportSuccessfulTitle">خروجی گرفته شده</string>
|
||||
<string name="exportFailedTitle">خروجی گرفتن ناموفق بود</string>
|
||||
<string name="storageReadPermissionRequired">دسترسی به خواندن محل ذخیره برای این کار نیاز است…</string>
|
||||
<string name="storageReadPermissionRequired">برای این اقدام دسترسی به حافظه مورد نیاز است…</string>
|
||||
<string name="exportOptionExplanation">داده در محلی که شما انتخاب میکنید نوشته خواهد شد.</string>
|
||||
<string name="receive">دریافت</string>
|
||||
<string name="continue_">ادامه</string>
|
||||
@@ -72,4 +72,112 @@
|
||||
<string name="settings_category_title_privacy">حریم شخصی</string>
|
||||
<string name="settings_category_title_general">عمومی</string>
|
||||
<string name="settings_category_title_cards">کارتها</string>
|
||||
</resources>
|
||||
<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>
|
||||
|
||||
@@ -181,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>
|
||||
@@ -305,4 +305,8 @@
|
||||
<string name="settings_column_count_4">4</string>
|
||||
<string name="settings_column_count_5">5</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
</resources>
|
||||
<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>
|
||||
|
||||
@@ -311,4 +311,8 @@
|
||||
<string name="settings_automatic_column_count">Automatique</string>
|
||||
<string name="settings_column_count_6">6</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
</resources>
|
||||
<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>
|
||||
|
||||
@@ -299,4 +299,8 @@
|
||||
<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>
|
||||
</resources>
|
||||
<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>
|
||||
|
||||
@@ -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,18 +43,6 @@
|
||||
<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>
|
||||
<string name="importCancelled">ייבוא בוטל</string>
|
||||
<string name="exportCancelled">ייצוא בוטל</string>
|
||||
<string name="addFromPdfFile">בחר קובץ PDF</string>
|
||||
@@ -69,4 +51,4 @@
|
||||
<string name="multipleBarcodesFoundPleaseChooseOne">באיזה מהברקודים שנמצאו אתה רוצה להשתמש?</string>
|
||||
<string name="useFrontImage">השתמש בתמונה קדמית</string>
|
||||
<string name="useBackImage">השתמש בתמונה אחורית</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
<string name="settings_theme">Tema</string>
|
||||
<string name="settings_system_theme">Sustav</string>
|
||||
<string name="settings_light_theme">Svijetla</string>
|
||||
<string name="settings_display_barcode_max_brightness">Posvijetli prikaz crtičnog koda</string>
|
||||
<string name="settings_display_barcode_max_brightness">Posvijetli ekran</string>
|
||||
<string name="moveDown">Pomakni prema dolje</string>
|
||||
<string name="addManually">Upiši crtični kod</string>
|
||||
<string name="thumbnailDescription">Sličica</string>
|
||||
@@ -129,7 +129,7 @@
|
||||
<string name="noCameraPermissionDirectToSystemSetting">Za snimanje crtičnih kodova Catima treba pristup tvojoj kameri. Dodirni ovdje za mijenjanje postavki dozvola.</string>
|
||||
<string name="app_libraries">Slobodne biblioteke trećih strana: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="selectBarcodeTitle">Odaberi crtični kod</string>
|
||||
<string name="settings_portrait_orientation">Okomito</string>
|
||||
<string name="settings_portrait_orientation">Uspravno</string>
|
||||
<string name="settings_lock_on_opening_orientation">Odredi orijentaciju koja se koristi prilikom otvaranja kartice</string>
|
||||
<string name="group_edit">Uredi grupu</string>
|
||||
<string name="group_name_already_in_use">Ime grupe se već koristi</string>
|
||||
@@ -169,7 +169,7 @@
|
||||
<string name="storageReadPermissionRequired">Za ovu radnju je potrebna dozvola za čitanje spremljenih podataka …</string>
|
||||
<string name="cameraPermissionRequired">Za ovu radnju je potrebna dozvola za pristup kameri …</string>
|
||||
<string name="app_license">Copylefted libre softver, GPLv3+ licenca</string>
|
||||
<string name="settings_card_orientation">Orijentacija crtičnog koda</string>
|
||||
<string name="settings_card_orientation">Orijentacija ekrana</string>
|
||||
<string name="settings_follow_system_orientation">Slijedi sustav</string>
|
||||
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
|
||||
<string name="importFidmeMessage">Odaberi tvoju iz FidMe izvezenu <i>idme-export-request-xxxxxx.zip</i> datoteku koju želiš uvesti i ručno odaberi vste crtičnog koda nakon toga.
|
||||
@@ -207,7 +207,7 @@
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Autorska prava © 2019. – <xliff:g>%d.</xliff:g> Sylvia van Os i doprinositelji</string>
|
||||
<string name="debug_version_fmt">Verzija: <xliff:g id="version">%s</xliff:g></string>
|
||||
<string name="app_resources">Slobodni resursi trećih strana: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="settings_landscape_orientation">Vodoravno</string>
|
||||
<string name="settings_landscape_orientation">Ležeće</string>
|
||||
<string name="group_name_is_empty">Ime grupe ne smije biti prazno</string>
|
||||
<string name="group_updated">Grupa je aktualizirana</string>
|
||||
<string name="all">Sve</string>
|
||||
@@ -270,7 +270,7 @@
|
||||
<string name="action_display_options">Opcije prikaza</string>
|
||||
<string name="settings_display_barcode_max_brightness_summary">Potrebno za rad nekih čitača</string>
|
||||
<string name="settings_oled_dark_summary">Smanjuje potrošnju baterije OLED ekrana</string>
|
||||
<string name="settings_category_title_cards">Kartice</string>
|
||||
<string name="settings_category_title_cards">Prikaz kartice</string>
|
||||
<string name="addWithoutBarcode">Dodaj karticu bez crtičnog koda</string>
|
||||
<string name="app_copyright_short">Autorska prava © Sylvia van Os i doprinositelji</string>
|
||||
<string name="field_must_not_be_empty">Polje ne smije biti prazno</string>
|
||||
@@ -298,4 +298,21 @@
|
||||
<string name="exportCancelled">Izvoz je prekinut</string>
|
||||
<string name="useBackImage">Koristi stražnju sliku</string>
|
||||
<string name="useFrontImage">Koristi prednju sliku</string>
|
||||
</resources>
|
||||
<string name="settings_column_count_portrait">Stupci u uspravnom modusu</string>
|
||||
<string name="sort_by_valid_from">Vrijedi od</string>
|
||||
<string name="settings_column_count_6">6</string>
|
||||
<string name="settings_category_title_cards_overview">Pregled kartica</string>
|
||||
<string name="settings_column_count_landscape">Stupci u ležećem modusu</string>
|
||||
<string name="settings_automatic_column_count">Automatski</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="generic_error_please_retry">Žao nam je, nešto nije u redu, pokušaj ponovo …</string>
|
||||
<string name="addFromPkpass">Odaberi jednu Passbook datoteku (.pkpass)</string>
|
||||
<string name="unsupportedFile">Ova datoteka nije podržana</string>
|
||||
<string name="settings_use_volume_keys_navigation_summary">Pomoću gumba za glasnoću promijeni koja se kartica prikazuje</string>
|
||||
<string name="settings_use_volume_keys_navigation">Mijenjaj kartice pomoću gumba za glasnoću</string>
|
||||
</resources>
|
||||
|
||||
@@ -298,4 +298,15 @@
|
||||
<string name="settings_column_count_landscape">Oszlopok fekvő módban</string>
|
||||
<string name="settings_automatic_column_count">Automatikus</string>
|
||||
<string name="settings_column_count_portrait">Oszlopok álló módban</string>
|
||||
</resources>
|
||||
<string name="settings_column_count_5">5</string>
|
||||
<string name="settings_column_count_2">2</string>
|
||||
<string name="settings_column_count_6">6</string>
|
||||
<string name="settings_column_count_3">3</string>
|
||||
<string name="settings_column_count_1">1</string>
|
||||
<string name="addFromPkpass">Válassz egy Passbook fájlt (.pkpass)</string>
|
||||
<string name="unsupportedFile">Ez a fájl nem támogatott</string>
|
||||
<string name="generic_error_please_retry">Sajnálom, valami rosszul ment, próbálkozz újra...</string>
|
||||
<string name="settings_column_count_4">4</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<string name="sort_by_valid_from">Érvényesség kezdete</string>
|
||||
</resources>
|
||||
|
||||
@@ -299,4 +299,8 @@
|
||||
<string name="settings_column_count_1">1</string>
|
||||
<string name="settings_column_count_4">4</string>
|
||||
<string name="settings_column_count_5">5</string>
|
||||
</resources>
|
||||
<string name="addFromPkpass">Pilih file Buku Tabungan (.pkpass)</string>
|
||||
<string name="unsupportedFile">File ini tidak didukung</string>
|
||||
<string name="generic_error_please_retry">Maaf, terjadi kesalahan, silakan coba lagi...</string>
|
||||
<string name="sort_by_valid_from">Berlaku dari</string>
|
||||
</resources>
|
||||
|
||||
@@ -314,4 +314,5 @@
|
||||
<string name="unsupportedFile">Questo file non è supportato</string>
|
||||
<string name="generic_error_please_retry">Siamo spiacenti, qualcosa è andato storto, riprova...</string>
|
||||
<string name="addFromPkpass">Seleziona un file Passbook (.pkpass)</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Valido da</string>
|
||||
</resources>
|
||||
|
||||
@@ -230,4 +230,16 @@
|
||||
<string name="settings_oled_dark_summary">有機ELディスプレイでの電池の使用量を削減します</string>
|
||||
<string name="action_more_options">オプション</string>
|
||||
<string name="add_a_card_in_a_different_way">別の方法でカードを追加</string>
|
||||
</resources>
|
||||
<string name="continue_">続</string>
|
||||
<string name="permissionReadCardsLabel">Catimaのカードを読む</string>
|
||||
<string name="settings_column_count_6">6</string>
|
||||
<string name="settings_column_count_3">3</string>
|
||||
<string name="settings_column_count_5">5</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<string name="importCancelled">輸入がキャンセルされた</string>
|
||||
<string name="settings_column_count_1">1</string>
|
||||
<string name="settings_column_count_2">2</string>
|
||||
<string name="settings_column_count_4">4</string>
|
||||
<string name="settings_category_title_privacy">プライバシー</string>
|
||||
<string name="exportCancelled">輸出がキャンセルされた</string>
|
||||
</resources>
|
||||
|
||||
@@ -302,4 +302,5 @@
|
||||
<string name="settings_column_count_landscape">가로 모드의 열</string>
|
||||
<string name="settings_automatic_column_count">자동</string>
|
||||
<string name="settings_column_count_1">1</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">유효 기간</string>
|
||||
</resources>
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
<string name="importLoyaltyCardKeychain">Importuoti iš Loyalty Card Keychain</string>
|
||||
<string name="app_loyalty_card_keychain">Lojalumo kortelės</string>
|
||||
<string name="moveBarcodeToTopOfScreen">Perkelti brūkšninį kodą į ekrano viršų</string>
|
||||
<string name="settings_display_barcode_max_brightness">Šviesinti brūkšninio kodo rodinį</string>
|
||||
<string name="settings_display_barcode_max_brightness">Šviesinti ekraną</string>
|
||||
<string name="failedParsingImportUriError">Nepavyko iššifruoti importo URI</string>
|
||||
<string name="turn_flashlight_off">Išjunkti žibintuvėlį</string>
|
||||
<string name="turn_flashlight_on">Įjunkti žibintuvėlį</string>
|
||||
@@ -196,7 +196,7 @@
|
||||
<string name="noGiftCardsGroup">Sukurkite keletą kortelių ir priskirkite jas grupei čia.</string>
|
||||
<string name="setIcon">Nustatyti piktogramą</string>
|
||||
<string name="selectColor">Pasirinkti spalvą</string>
|
||||
<string name="settings_card_orientation">Brūkšninio kodo orientacija</string>
|
||||
<string name="settings_card_orientation">Ekrano orientacija</string>
|
||||
<string name="failedLaunchingPhotoPicker">Nepavyko rasti palaikomos galerijos programėlės</string>
|
||||
<string name="previousCard">Ankstesnė</string>
|
||||
<string name="nextCard">Kita</string>
|
||||
@@ -264,7 +264,7 @@
|
||||
<string name="enter_card_id">Įveskite ID numerį arba tekstą ant jūsų kortelės</string>
|
||||
<string name="noCameraFoundGuideText">Atrodo, kad jūsų įrenginys neturi kameros. Jei jis turi kamerą, pabandykite perkrauti įrenginį. Naudokite žemiau esantį „Daugiau galimybių“ mygtuką, kad pridėtumėte brūkšninį kodą kitu būdu.</string>
|
||||
<string name="settings_display_barcode_max_brightness_summary">Būtina, kad veiktų kai kurie skeneriai</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card_summary">Išjungti ekrano užraktą kol peržiūrite kortelę</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card_summary">Išjungia ekrano užraktą kol peržiūrite kortelę</string>
|
||||
<string name="settings_allow_content_provider_read_title">Leisti kitoms programoms išrinkti mano informaciją</string>
|
||||
<string name="settings_allow_content_provider_read_summary">Programos vis tiek turės prašyti leidimo, kad gautu informaciją</string>
|
||||
<string name="show_name_below_image_thumbnail">Rodyti pavadinimą po piktogramą</string>
|
||||
@@ -273,7 +273,7 @@
|
||||
<string name="continue_">Tęsti</string>
|
||||
<string name="add_manually_warning_message">Kai kuriuose parduotuvėse brūkšninio kodo vertė gali skirtis nuo kortelėje nurodyto numerio. Dėlto įvedus brūkšninį kodą rankiniu būdu gali nepavykti. Vietoj to, labai rekomenduojama nuskaityti brūkšninį kodą naudojant kamerą. Ar vis tiek norite tęsti?</string>
|
||||
<string name="permissionReadCardsLabel">Skenuoti Catima Korteles</string>
|
||||
<string name="settings_category_title_cards">Kortelės</string>
|
||||
<string name="settings_category_title_cards">Kortelių peržiūra</string>
|
||||
<string name="settings_category_title_general">Bendri</string>
|
||||
<string name="settings_category_title_privacy">Privatumąi</string>
|
||||
<string name="importCancelled">Importas atšauktas</string>
|
||||
@@ -298,4 +298,7 @@
|
||||
<string name="app_copyright_short">Autorių teisės © Sylvia van Os ir Pagalbininkai</string>
|
||||
<string name="useFrontImage">Naudoti priekinį vaizdą</string>
|
||||
<string name="useBackImage">Naudoti galinį vaizdą</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Teisinga forma</string>
|
||||
<string name="settings_use_volume_keys_navigation">Keisti korteles su garso mygtukais</string>
|
||||
<string name="settings_use_volume_keys_navigation_summary">Naudokite garso mygtukus kortelių pakeitimui</string>
|
||||
</resources>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<string name="failedParsingImportUriError">Nevarēja apstrādāt ievietošanas URI</string>
|
||||
<string name="importExport">Ievietot/izgūt</string>
|
||||
<string name="exportName">Izgūt</string>
|
||||
<string name="importExportHelp">Dublējot Jūsu datus, tos var pārnest uz citu ierīci.</string>
|
||||
<string name="importExportHelp">Datu rezerves kopijas izveidošana ļauj tos pārnest uz citu ierīci.</string>
|
||||
<string name="importSuccessfulTitle">Ievietots</string>
|
||||
<string name="importFailedTitle">Ievietošana neizdevās</string>
|
||||
<string name="importFailed">Nevarēja veikt ievietošanu</string>
|
||||
@@ -58,7 +58,7 @@
|
||||
<string name="thumbnailDescription">Sīktēls</string>
|
||||
<string name="starImage">Izlases zvaigzne</string>
|
||||
<string name="settings">Iestatījumi</string>
|
||||
<string name="settings_theme">Tēma</string>
|
||||
<string name="settings_theme">Izskats</string>
|
||||
<string name="settings_system_theme">Sistēmas</string>
|
||||
<string name="settings_light_theme">Gaiša</string>
|
||||
<string name="settings_dark_theme">Tumša</string>
|
||||
@@ -161,10 +161,10 @@
|
||||
<string name="app_libraries">Brīvas trešo pušu programmatūras bibliotēkas: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="app_resources">Brīvi trešo pušu resursi: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="settings_card_orientation">Ekrāna novietojums</string>
|
||||
<string name="settings_follow_system_orientation">Pēc sistēmas</string>
|
||||
<string name="settings_portrait_orientation">Portreta</string>
|
||||
<string name="settings_landscape_orientation">Ainavas</string>
|
||||
<string name="settings_lock_on_opening_orientation">Ievērot to orientāciju, kādā karte atvērta</string>
|
||||
<string name="settings_follow_system_orientation">Izmantot sistēmas</string>
|
||||
<string name="settings_portrait_orientation">Stateniski</string>
|
||||
<string name="settings_landscape_orientation">Līmeniski</string>
|
||||
<string name="settings_lock_on_opening_orientation">Izmantot novietojumu, kāds bija kartes atvēršanas brīdī</string>
|
||||
<string name="enter_group_name">Ievadīt kopas nosaukumu</string>
|
||||
<string name="groups">Kopas</string>
|
||||
<string name="group_edit">Labot kopu</string>
|
||||
@@ -197,11 +197,11 @@
|
||||
<string name="setBackImage">Iestatīt aizmugures attēlu</string>
|
||||
<string name="takePhoto">Fotografēt</string>
|
||||
<string name="passwordRequired">Lūgums ievadīt paroli</string>
|
||||
<string name="exportPassword">Iestatīt paroli, lai aizsargātu savu izguves datni (izvēles)</string>
|
||||
<string name="exportPassword">Iestatīt paroli, lai aizsargātu savu izguves datni (pēc izvēles)</string>
|
||||
<string name="turn_flashlight_on">Ieslēgt zibspuldzi</string>
|
||||
<string name="settings_oled_dark">Tīri melns fons tumšajai tēmai</string>
|
||||
<string name="settings_oled_dark">Tīri melns fons tumšajam izskatam</string>
|
||||
<string name="setIcon">Iestatīt sīktēlu</string>
|
||||
<string name="settings_theme_color">Tēmas krāsa</string>
|
||||
<string name="settings_theme_color">Izskata krāsa</string>
|
||||
<string name="settings_violet_theme">Violeta</string>
|
||||
<string name="settings_blue_theme">Zila</string>
|
||||
<string name="sort">Kārtot</string>
|
||||
@@ -305,8 +305,9 @@
|
||||
<string name="settings_column_count_5">5</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<string name="settings_column_count_portrait">Kolonnas stateniskā novietojumā</string>
|
||||
<string name="settings_column_count_landscape">Kolonnas guleniskā novietojumā</string>
|
||||
<string name="settings_column_count_landscape">Kolonnas līmeniskā novietojumā</string>
|
||||
<string name="unsupportedFile">Šī datne netiek atbalstīta</string>
|
||||
<string name="addFromPkpass">Atlasīt Passbook datni (.pkpass)</string>
|
||||
<string name="generic_error_please_retry">Atvainojamies, kaut kas nogāja greizi. Lūgums mēģināt vēlreiz...</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Derīga no</string>
|
||||
</resources>
|
||||
|
||||
@@ -305,4 +305,8 @@
|
||||
<string name="settings_column_count_2">2</string>
|
||||
<string name="settings_column_count_3">3</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
</resources>
|
||||
<string name="addFromPkpass">Velg en Passbook-fil (.pkpass)</string>
|
||||
<string name="unsupportedFile">Denne filen støttes ikke</string>
|
||||
<string name="generic_error_please_retry">Beklager, men noe gikk galt. Prøv igjen…</string>
|
||||
<string name="sort_by_valid_from">Gyldig fra</string>
|
||||
</resources>
|
||||
|
||||
@@ -308,4 +308,5 @@
|
||||
<string name="addFromPkpass">Kies een Passbook bestand (.pkpass)</string>
|
||||
<string name="unsupportedFile">Dit bestand wordt niet ondersteund</string>
|
||||
<string name="generic_error_please_retry">Sorry, er ging iets mis. Probeer het opnieuw.</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Op geldig vanaf</string>
|
||||
</resources>
|
||||
|
||||
@@ -315,6 +315,10 @@
|
||||
<string name="settings_category_title_cards_overview">Przegląd kart</string>
|
||||
<string name="settings_column_count_portrait">Kolumny w trybie portretu</string>
|
||||
<string name="settings_column_count_landscape">Kolumny w trybie pejzażu</string>
|
||||
<string name="settings_automatic_column_count">Automatyczne</string>
|
||||
<string name="settings_automatic_column_count">Automatycznie</string>
|
||||
<string name="settings_column_count_1">1</string>
|
||||
</resources>
|
||||
<string name="addFromPkpass">Wybierz plik Passbook (.pkpass)</string>
|
||||
<string name="unsupportedFile">Ten plik nie jest obsługiwany</string>
|
||||
<string name="generic_error_please_retry">Coś poszło nie tak, spróbuj ponownie później...</string>
|
||||
<string name="sort_by_valid_from">Poprawna forma</string>
|
||||
</resources>
|
||||
|
||||
@@ -314,4 +314,5 @@
|
||||
<string name="unsupportedFile">Este arquivo não é suportado</string>
|
||||
<string name="addFromPkpass">Selecionar um arquivo do gerenciador de senhas (.pkpass)</string>
|
||||
<string name="generic_error_please_retry">Desculpe, alguma coisa deu errado, por favor tente novamente...</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Válido a partir de</string>
|
||||
</resources>
|
||||
|
||||
@@ -314,4 +314,5 @@
|
||||
<string name="addFromPkpass">Selecionar um ficheiro Passbook (.pkpass)</string>
|
||||
<string name="unsupportedFile">Este ficheiro não é suportado</string>
|
||||
<string name="generic_error_please_retry">Lamento, ocorreu um erro, tente novamente...</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Válido a partir de</string>
|
||||
</resources>
|
||||
|
||||
312
app/src/main/res/values-pt/strings.xml
Normal file
@@ -0,0 +1,312 @@
|
||||
<?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_search">Pesquisa</string>
|
||||
<string name="action_add">Adicionar</string>
|
||||
<plurals name="selectedCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> selecionado</item>
|
||||
<item quantity="many"><xliff:g>%d</xliff:g> selecionado</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> selecionados</item>
|
||||
</plurals>
|
||||
<string name="noGiftCards">Clique no botão + para adicionar um cartão ou importe-o no menu ⋮.</string>
|
||||
<string name="noGiftCardsGroup">Crie alguns cartões e atribua-os depois ao grupo aqui.</string>
|
||||
<string name="noMatchingGiftCards">Sem resultados. Tente alterar a sua pesquisa.</string>
|
||||
<string name="app_name">Catima</string>
|
||||
<string name="addCardTitle">Adicionar cartão</string>
|
||||
<string name="noCardExistsError">Não foi possível encontrar esse cartão</string>
|
||||
<string name="importFailed">Não foi possível importar</string>
|
||||
<string name="exportSuccessfulTitle">Exportado</string>
|
||||
<string name="exportFailedTitle">A exportação falhou</string>
|
||||
<string name="exportFailed">Não foi possível exportar</string>
|
||||
<string name="cameraPermissionDeniedTitle">Não foi possível aceder à câmara</string>
|
||||
<string name="importOptionFilesystemButton">Do sistema de ficheiros</string>
|
||||
<string name="about">Sobre</string>
|
||||
<string name="settings_portrait_orientation">Retrato</string>
|
||||
<string name="settings_display_barcode_max_brightness">Iluminar o ecrã</string>
|
||||
<string name="settings_display_barcode_max_brightness_summary">Necessário para alguns scanners funcionarem</string>
|
||||
<string name="groups">Grupos</string>
|
||||
<string name="group_updated">Grupo atualizado</string>
|
||||
<string name="all">Todos</string>
|
||||
<string name="deleteConfirmationGroup">Eliminar o grupo?</string>
|
||||
<string name="card">Cartão</string>
|
||||
<string name="balance">Saldo</string>
|
||||
<string name="app_loyalty_card_keychain">Chaveiro de cartão de fidelidade</string>
|
||||
<string name="yes">Sim</string>
|
||||
<string name="no">Não</string>
|
||||
<string name="settings_category_title_cards">Vista de cartão</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_6">6</string>
|
||||
<string name="storeName">Nome</string>
|
||||
<string name="note">Nota</string>
|
||||
<string name="cardId">Identificador do cartão</string>
|
||||
<string name="barcodeType">Tipo de código de barras</string>
|
||||
<string name="noBarcode">Sem código de barras</string>
|
||||
<string name="star">Adicionar aos favoritos</string>
|
||||
<string name="unstar">Retirar dos favoritos</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="save">Guardar</string>
|
||||
<string name="edit">Editar</string>
|
||||
<string name="delete">Eliminar</string>
|
||||
<string name="confirm">Confirmar</string>
|
||||
<string name="deleteTitle">Eliminar cartão</string>
|
||||
<plurals name="deleteCardsTitle">
|
||||
<item quantity="one">Eliminar <xliff:g>%d</xliff:g> cartão</item>
|
||||
<item quantity="many">Eliminar <xliff:g>%d</xliff:g> cartões</item>
|
||||
<item quantity="other">Eliminar <xliff:g>%d</xliff:g> cartões</item>
|
||||
</plurals>
|
||||
<string name="deleteConfirmation">Eliminar este cartão permanentemente?</string>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
<item quantity="one">Eliminar o cartão <xliff:g>%d</xliff:g> permanentemente?</item>
|
||||
<item quantity="many">Eliminar os cartões <xliff:g>%d</xliff:g> permanentemente?</item>
|
||||
<item quantity="other">Eliminar os cartões <xliff:g>%d</xliff:g> permanentemente?</item>
|
||||
</plurals>
|
||||
<string name="ok">OK</string>
|
||||
<string name="share">Partilhar</string>
|
||||
<string name="sendLabel">Enviar…</string>
|
||||
<string name="editCardTitle">Editar cartão</string>
|
||||
<string name="scanCardBarcode">Digitalizar código de barras</string>
|
||||
<string name="cardShortcut">Atalho do cartão</string>
|
||||
<string name="noCardsMessage">Adicione um cartão primeiro</string>
|
||||
<string name="barcodeImageDescriptionWithType">Imagem do código de barras <xliff:g>%s</xliff:g></string>
|
||||
<string name="failedParsingImportUriError">Não foi possível analisar o URI de importação</string>
|
||||
<string name="importExport">Importar / Exportar</string>
|
||||
<string name="exportName">Exportar</string>
|
||||
<string name="importExportHelp">A cópia de segurança dos seus dados permite-lhe movê-los para outro dispositivo.</string>
|
||||
<string name="importSuccessfulTitle">Importado</string>
|
||||
<string name="importFailedTitle">A importação falhou</string>
|
||||
<string name="importing">A importar…</string>
|
||||
<string name="exporting">A exportar…</string>
|
||||
<string name="storageReadPermissionRequired">É necessária a permissão para ler o armazenamento para esta ação…</string>
|
||||
<string name="cameraPermissionRequired">É necessária a permissão para aceder à câmara para esta ação…</string>
|
||||
<string name="permissionReadCardsLabel">Ler Cartões Catima</string>
|
||||
<string name="permissionReadCardsDescription">leia os seus cartões do Catima e todos os seus pormenores, incluindo notas e imagens</string>
|
||||
<string name="noCameraPermissionDirectToSystemSetting">Para digitalizar códigos de barras, o Catima tem de aceder à câmara. Clique aqui para mudar as configurações de permissão.</string>
|
||||
<string name="exportOptionExplanation">Os dados serão guardados num local à sua escolha.</string>
|
||||
<string name="importOptionFilesystemTitle">Importar do sistema de ficheiros</string>
|
||||
<string name="importOptionFilesystemExplanation">Escolha um ficheiro específico a partir do sistema de ficheiros.</string>
|
||||
<string name="importOptionApplicationTitle">Usar outra aplicação</string>
|
||||
<string name="importOptionApplicationExplanation">Utilize qualquer aplicação ou o seu gestor de ficheiros favorito para abrir um ficheiro.</string>
|
||||
<string name="importOptionApplicationButton">Utilizar outra aplicação</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019-<xliff:g>%d</xliff:g> Sylvia van Os e contribuidores</string>
|
||||
<string name="app_copyright_short">Copyright © Sylvia van Os e contribuidores</string>
|
||||
<string name="app_copyright_old">Baseado no Loyalty Card Keychain \ndireitos de autor © 2016–2020 Branden Archer</string>
|
||||
<string name="app_license">Software livre de partilha sob a mesma licença e segundo a licença GPLv3+</string>
|
||||
<string name="about_title_fmt">Sobre o <xliff:g id="app_name">%s</xliff:g></string>
|
||||
<string name="debug_version_fmt">Versão: <xliff:g id="version">%s</xliff:g></string>
|
||||
<string name="app_libraries">Bibliotecas livres de terceiros: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="selectBarcodeTitle">Selecionar código de barras</string>
|
||||
<string name="app_resources">Recursos livres de terceiros: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="thumbnailDescription">Miniatura</string>
|
||||
<string name="starImage">Favorito</string>
|
||||
<string name="settings">Configurações</string>
|
||||
<string name="settings_theme">Tema</string>
|
||||
<string name="settings_system_theme">Sistema</string>
|
||||
<string name="settings_light_theme">Claro</string>
|
||||
<string name="settings_dark_theme">Escuro</string>
|
||||
<string name="settings_card_orientation">Orientação do ecrã</string>
|
||||
<string name="settings_follow_system_orientation">Definido no sistema</string>
|
||||
<string name="settings_follow_sensor_orientation">Rodar sempre (ignora as definições do sistema)</string>
|
||||
<string name="settings_landscape_orientation">Paisagem</string>
|
||||
<string name="settings_keep_screen_on">Manter ecrã ligado</string>
|
||||
<string name="settings_keep_screen_on_summary">Desativa o tempo limite do ecrã ao visualizar um cartão</string>
|
||||
<string name="settings_lock_on_opening_orientation">Bloqueio da orientação usada ao abrir o cartão</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Desativar bloqueio do ecrã</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card_summary">Desativa o bloqueio de ecrã ao visualizar um cartão</string>
|
||||
<string name="settings_allow_content_provider_read_title">Permitir que outras apps acessem os meus dados</string>
|
||||
<string name="settings_allow_content_provider_read_summary">Apps ainda terão que solicitar permissão para receber acesso</string>
|
||||
<string name="settings_use_volume_keys_navigation">Mudar de cartão usando os botões de volume</string>
|
||||
<string name="settings_use_volume_keys_navigation_summary">Utilize os botões de volume para alterar o cartão que é apresentado</string>
|
||||
<string name="intent_import_card_from_url_share_text">Quero partilhar um cartão</string>
|
||||
<string name="importSuccessful">Dados importados</string>
|
||||
<string name="exportSuccessful">Dados exportados</string>
|
||||
<string name="enter_group_name">Introduza o nome do grupo</string>
|
||||
<string name="group_edit">Editar grupo</string>
|
||||
<string name="noGroups">Clique no botão + para adicionar grupos para categorização.</string>
|
||||
<string name="noGroupCards">Este grupo está vazio</string>
|
||||
<plurals name="groupCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> cartão</item>
|
||||
<item quantity="many"><xliff:g>%d</xliff:g> cartões</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> cartões</item>
|
||||
</plurals>
|
||||
<string name="group_name_already_in_use">O nome do grupo já está a ser usado</string>
|
||||
<string name="group_name_is_empty">O nome do grupo não pode ser vazio</string>
|
||||
<string name="failedOpeningFileManager">Instalar primeiro um gestor de ficheiros.</string>
|
||||
<string name="moveUp">Subir</string>
|
||||
<string name="moveDown">Descer</string>
|
||||
<string name="leaveWithoutSaveTitle">Sair</string>
|
||||
<string name="leaveWithoutSaveConfirmation">Sair sem guardar?</string>
|
||||
<string name="addManually">Insira o código de barras manualmente</string>
|
||||
<string name="addFromImage">Selecione uma imagem da galeria</string>
|
||||
<string name="groupsList">Grupos: <xliff:g>%s</xliff:g></string>
|
||||
<string name="editGroup">A editar grupo: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Expiram: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Expirados: <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> ponto</item>
|
||||
<item quantity="many"><xliff:g>%s</xliff:g> pontos</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> pontos</item>
|
||||
</plurals>
|
||||
<string name="editBarcode">Editar código de barras</string>
|
||||
<string name="expiryDate">Data de validade</string>
|
||||
<string name="never">Nunca</string>
|
||||
<string name="chooseExpiryDate">Escolher validade</string>
|
||||
<string name="moveBarcodeToTopOfScreen">Mover o código de barras para o topo do ecrã</string>
|
||||
<string name="noBarcodeFound">Não foi encontrado nenhum código de barras</string>
|
||||
<string name="errorReadingImage">Não foi possível ler a imagem</string>
|
||||
<string name="currency">Moeda</string>
|
||||
<string name="points">Pontos</string>
|
||||
<string name="balanceParsingFailed">Saldo inválido</string>
|
||||
<string name="chooseImportType">Importar dados de</string>
|
||||
<string name="privacy_policy">Política de privacidade</string>
|
||||
<string name="accept">Aceitar</string>
|
||||
<string name="importCatima">Importar do Catima</string>
|
||||
<string name="importCatimaMessage">Selecione a exportação <i>catima.zip</i> do Catima a importar. \nPrimeiro crie a exportação no menu \"Importar / exportar\" de outra aplicação Catima pressionando \"Exportar\" nesse menu.</string>
|
||||
<string name="importFidme">Importar do FidMe</string>
|
||||
<string name="importFidmeMessage">Selecione a exportação <i>fidme-export-request-xxxxxx.zip</i> do FidMe para importar e depois selecione os tipos de código de barras manualmente. \nPrimeiro crie a exportação no seu perfil do FidMe escolhendo a opção \"Proteção de dados\" e em seguida pressionando \"Extrair os meus dados\".</string>
|
||||
<string name="importLoyaltyCardKeychain">Importar do Loyalty Card Keychain</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Selecione a exportação <i>LoyaltyCardKeychain.csv</i> do Loyalty Card Keychain para importar. \nPrimeiro crie a exportação no menu \"Importar / exportar\" no Loyalty Card Keychain pressionando \"Exportar\".</string>
|
||||
<string name="importStocard">Importar do Stocard</string>
|
||||
<string name="importStocardMessage">Selecione a exportação <i>***.zip</i> do Stocard para importar. \nObtenha-o através do e-mail support@stocardapp.com solicitando uma exportação dos seus dados.</string>
|
||||
<string name="importVoucherVault">Importar do Voucher Vault</string>
|
||||
<string name="importVoucherVaultMessage">Selecione a exportação <i>vouchervault.json</i> do Voucher Vault para importar. \nCrie-a primeiro pressionando a opção \"Exportar\" no Voucher Vault.</string>
|
||||
<string name="unsupportedBarcodeType">Este tipo de código de barras ainda não pode ser mostrado. Pode vir a ser suportado numa versão posterior da aplicação.</string>
|
||||
<string name="wrongValueForBarcodeType">O valor não é válido para o tipo de código de barras selecionado</string>
|
||||
<string name="barcodeId">Valor do código de barras</string>
|
||||
<string name="sameAsCardId">Igual ao identificador</string>
|
||||
<string name="setBarcodeId">Definir o valor do código de barras</string>
|
||||
<string name="intent_import_card_from_url_share_multiple_text">Quero partilhar alguns cartões</string>
|
||||
<string name="frontImageDescription">Imagem frontal</string>
|
||||
<string name="backImageDescription">Imagem de trás</string>
|
||||
<string name="photos">Fotografias</string>
|
||||
<string name="setFrontImage">Definir imagem frontal</string>
|
||||
<string name="setBackImage">Definir imagem de trás</string>
|
||||
<string name="removeImage">Remover imagem</string>
|
||||
<string name="takePhoto">Tirar uma fotografia</string>
|
||||
<string name="updateBarcodeQuestionTitle">Atualizar o valor do código de barras?</string>
|
||||
<string name="updateBarcodeQuestionText">Alterou o identificador. Também quer atualizar o código de barras para usar o mesmo valor?</string>
|
||||
<string name="passwordRequired">Introduza a palavra-passe</string>
|
||||
<string name="exportPassword">Defina uma palavra-passe para proteger a exportação (opcional)</string>
|
||||
<string name="exportPasswordHint">Digite a palavra-passe</string>
|
||||
<string name="failedGeneratingShareURL">Não foi possível gerar um URL partilhável. Por favor reporte isto aos programadores.</string>
|
||||
<string name="turn_flashlight_on">Ligar lanterna</string>
|
||||
<string name="turn_flashlight_off">Desligar lanterna</string>
|
||||
<string name="settings_locale">Idioma</string>
|
||||
<string name="settings_oled_dark">Fundo preto puro para tema negro</string>
|
||||
<string name="settings_oled_dark_summary">Reduz a utilização da pilha em ecrãs OLED</string>
|
||||
<string name="settings_system_locale">Sistema</string>
|
||||
<string name="selectColor">Selecionar cor</string>
|
||||
<string name="setIcon">Definir miniatura</string>
|
||||
<string name="settings_theme_color">Cor do tema</string>
|
||||
<string name="settings_catima_theme">Catima</string>
|
||||
<string name="settings_pink_theme">Rosa</string>
|
||||
<string name="settings_magenta_theme">Magenta</string>
|
||||
<string name="settings_violet_theme">Violeta</string>
|
||||
<string name="settings_blue_theme">Azul</string>
|
||||
<string name="settings_sky_blue_theme">Azul céu</string>
|
||||
<string name="settings_green_theme">Verde</string>
|
||||
<string name="settings_brown_theme">Castanho</string>
|
||||
<string name="app_contributors">Tornado possível por: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="sort">Ordenar</string>
|
||||
<string name="showMoreInfo">Mostrar informação</string>
|
||||
<string name="updateBalance">Atualizar saldo</string>
|
||||
<string name="failedToRetrieveImageFile">Falha ao recuperar o ficheiro de imagem</string>
|
||||
<string name="barcodeLongPressMessage">Só podem ser abertas imagens na aplicação da galeria</string>
|
||||
<string name="sort_by_name">Nome</string>
|
||||
<string name="sort_by_most_recently_used">Mais usados recentemente</string>
|
||||
<string name="sort_by_valid_from">Válido a partir de</string>
|
||||
<string name="sort_by_expiry">Validade</string>
|
||||
<string name="reverse">…na ordem inversa</string>
|
||||
<string name="sort_by">Ordenar por</string>
|
||||
<string name="version_history">Histórico de versões</string>
|
||||
<string name="credits">Créditos</string>
|
||||
<string name="help_translate_this_app">Ajude a traduzir esta aplicação</string>
|
||||
<string name="license">Licença</string>
|
||||
<string name="source_repository">Repositório do código-fonte</string>
|
||||
<string name="on_github">no GitHub</string>
|
||||
<string name="and_data_usage">e utilização de dados</string>
|
||||
<string name="rate_this_app">Avalie esta aplicação</string>
|
||||
<string name="on_google_play">no Google Play</string>
|
||||
<string name="report_error">Reportar erro</string>
|
||||
<string name="translate_platform">no Weblate</string>
|
||||
<string name="shortcutSelectCard">Selecione um cartão</string>
|
||||
<string name="options">Opções</string>
|
||||
<string name="starred">Estrela</string>
|
||||
<string name="include_if_asking_support">Se quiser pedir ajuda, inclua as seguintes informações:</string>
|
||||
<string name="duplicateCard">Duplicar</string>
|
||||
<string name="archive">Arquivar</string>
|
||||
<string name="unarchive">Desarquivar</string>
|
||||
<string name="archived">Cartão arquivado</string>
|
||||
<string name="unarchived">Cartão desarquivado</string>
|
||||
<string name="failedLaunchingPhotoPicker">Não foi encontrada nenhuma aplicação de galeria de imagens</string>
|
||||
<string name="previousCard">Anterior</string>
|
||||
<plurals name="groupCardCountWithArchived">
|
||||
<item quantity="one"><xliff:g>%1$d</xliff:g> cartão (<xliff:g id="archivedCount">%2$d</xliff:g> arquivado)</item>
|
||||
<item quantity="many"><xliff:g>%1$d</xliff:g> cartões (<xliff:g id="archivedCount">%2$d</xliff:g> arquivados)</item>
|
||||
<item quantity="other"><xliff:g>%1$d</xliff:g> cartões (<xliff:g id="archivedCount">%2$d</xliff:g> arquivados)</item>
|
||||
</plurals>
|
||||
<string name="nextCard">Próximo</string>
|
||||
<string name="failedToOpenUrl">Instale primeiro um navegador de Internet</string>
|
||||
<string name="welcome">Bem-vindo ao Catima</string>
|
||||
<string name="updateBalanceTitle">Quanto gastou ou recebeu?</string>
|
||||
<string name="importCards">Importar cartões</string>
|
||||
<string name="updateBalanceHint">Introduza o valor</string>
|
||||
<string name="currentBalanceSentence">Saldo atual: <xliff:g>%s</xliff:g></string>
|
||||
<string name="newBalanceSentence">Novo saldo: <xliff:g>%s</xliff:g></string>
|
||||
<string name="validFromDate">Válido desde</string>
|
||||
<string name="anyDate">Qualquer data</string>
|
||||
<string name="chooseValidFromDate">Escolha uma data desde válida</string>
|
||||
<string name="validFromSentence">Válido desde: <xliff:g>%s</xliff:g></string>
|
||||
<string name="height">Altura:</string>
|
||||
<string name="switchToFrontImage">Mudar para imagem frontal</string>
|
||||
<string name="switchToBackImage">Mudar para a imagem de trás</string>
|
||||
<string name="switchToBarcode">Mudar para o código de barras</string>
|
||||
<string name="openFrontImageInGalleryApp">Abrir a imagem frontal na aplicação da galeria</string>
|
||||
<string name="openBackImageInGalleryApp">Abrir a imagem traseira na aplicação da galeria</string>
|
||||
<string name="setBarcodeHeight">Definir altura do código de barras</string>
|
||||
<string name="donate">Doar</string>
|
||||
<string name="icon_header_click_text">Pressione e segure para editar o icone</string>
|
||||
<string name="show_name_below_image_thumbnail">Mostrar nome abaixo da miniatura do ícone</string>
|
||||
<string name="show_note">Mostrar nota</string>
|
||||
<string name="show_balance">Mostrar saldo</string>
|
||||
<string name="show_validity">Mostrar validade</string>
|
||||
<string name="settings_category_title_cards_overview">Resumo dos cartões</string>
|
||||
<string name="settings_column_count_portrait">Colunas no modo vertical</string>
|
||||
<string name="settings_column_count_landscape">Colunas no modo horizontal</string>
|
||||
<string name="settings_automatic_column_count">Automático</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<string name="settings_category_title_general">Geral</string>
|
||||
<string name="settings_category_title_privacy">Privacidade</string>
|
||||
<string name="action_display_options">Opções de visualização</string>
|
||||
<string name="show_archived_cards">Mostrar cartões arquivados</string>
|
||||
<string name="view_online">Ver online</string>
|
||||
<string name="action_more_options">Mais opções</string>
|
||||
<string name="addWithoutBarcode">Adicione um cartão sem código de barras</string>
|
||||
<string name="enter_card_id">Digite o número ID ou o texto no seu cartão</string>
|
||||
<string name="card_id_must_not_be_empty">O ID do cartão não pode estar vazio</string>
|
||||
<string name="add_a_card_in_a_different_way">Adicione um cartão de uma forma diferente</string>
|
||||
<string name="field_must_not_be_empty">O campo não pode estar vazio</string>
|
||||
<string name="manually_enter_barcode_instructions">Digite o número ID ou o texto no seu cartão e pressione o código de barras que se parece com o que está no seu cartão.</string>
|
||||
<string name="add_manually_warning_title">Recomenda-se a digitalização</string>
|
||||
<string name="add_manually_warning_message">Em algumas lojas, o valor do código de barras é diferente do número escrito no cartão. Por este motivo, a introdução manual de um código de barras pode nem sempre funcionar. Recomenda-se vivamente que, em vez disso, digitalize o código de barras com a sua câmara. Ainda quer continuar?</string>
|
||||
<string name="continue_">Continuar</string>
|
||||
<string name="spend">Gastar</string>
|
||||
<string name="receive">Receber</string>
|
||||
<string name="amountParsingFailed">Montante inválido</string>
|
||||
<string name="addFromPdfFile">Selecionar um ficheiro PDF</string>
|
||||
<string name="errorReadingFile">Não foi possível ler o ficheiro</string>
|
||||
<string name="failedLaunchingFileManager">Não foi possível encontrar um gestor de ficheiros suportado</string>
|
||||
<string name="multipleBarcodesFoundPleaseChooseOne">Qual dos códigos de barras encontrados pretende utilizar?</string>
|
||||
<string name="pageWithNumber">Página <xliff:g>%d</xliff:g></string>
|
||||
<string name="noCameraFoundGuideText">O seu dispositivo não parece ter uma câmara. Se tiver, tente reiniciar o dispositivo. Caso contrário, utilize o botão \"Mais opções\" abaixo para adicionar um código de barras de outra maneira.</string>
|
||||
<string name="importCancelled">Importação cancelada</string>
|
||||
<string name="exportCancelled">Exportação cancelada</string>
|
||||
<string name="useFrontImage">Utilizar imagem frontal</string>
|
||||
<string name="useBackImage">Utilizar imagem do verso</string>
|
||||
<string name="addFromPkpass">Selecionar um ficheiro Passbook (.pkpass)</string>
|
||||
<string name="unsupportedFile">Este ficheiro não é suportado</string>
|
||||
<string name="generic_error_please_retry">Lamento, ocorreu um erro, tente novamente...</string>
|
||||
</resources>
|
||||
@@ -9,7 +9,7 @@
|
||||
<string name="action_add">Adăugați</string>
|
||||
<string name="action_search">Căutare</string>
|
||||
<string name="sendLabel">Trimiteți…</string>
|
||||
<string name="share">Împărtășiți</string>
|
||||
<string name="share">Partajați</string>
|
||||
<string name="deleteConfirmation">Să șterg definitiv acest card\?</string>
|
||||
<string name="deleteTitle">Ștergeți cardul</string>
|
||||
<string name="confirm">Confirmați</string>
|
||||
@@ -25,7 +25,7 @@
|
||||
<string name="settings_theme">Tema</string>
|
||||
<string name="all">Toate</string>
|
||||
<string name="noCardsMessage">Adăugați mai întâi un card</string>
|
||||
<string name="noCardExistsError">Acel card nu a putut fi găsit</string>
|
||||
<string name="noCardExistsError">Cardul nu a putut fi găsit</string>
|
||||
<string name="failedParsingImportUriError">Nu s-a putut analiza URI-ul de import</string>
|
||||
<string name="importExport">Importă/Exportă</string>
|
||||
<string name="exportName">Exportați</string>
|
||||
@@ -38,7 +38,7 @@
|
||||
<string name="exportOptionExplanation">Datele vor fi scrise într-o locație aleasă de dumneavoastră.</string>
|
||||
<string name="importOptionFilesystemTitle">Import din sistemul de fișiere</string>
|
||||
<string name="importOptionApplicationTitle">Utilizați o altă aplicație</string>
|
||||
<string name="starImage">Steaua preferată</string>
|
||||
<string name="starImage">Stea de preferintă</string>
|
||||
<string name="settings">Setări</string>
|
||||
<string name="intent_import_card_from_url_share_text">Vreau să împărtășesc o carte cu tine</string>
|
||||
<string name="moveUp">Mutarea în sus</string>
|
||||
@@ -49,8 +49,8 @@
|
||||
<string name="about">Despre</string>
|
||||
<string name="app_license">Software liber cu copyleft, licențiat GPLv3+</string>
|
||||
<string name="settings_system_theme">Sistemul</string>
|
||||
<string name="settings_light_theme">Lumină</string>
|
||||
<string name="settings_dark_theme">Întuneric</string>
|
||||
<string name="settings_light_theme">Luminos</string>
|
||||
<string name="settings_dark_theme">Întunecat</string>
|
||||
<string name="noBarcodeFound">Nu a fost găsit niciun cod de bare</string>
|
||||
<string name="settings_display_barcode_max_brightness">Iluminare ecran</string>
|
||||
<string name="settings_keep_screen_on">Păstrați ecranul pornit</string>
|
||||
@@ -71,15 +71,15 @@
|
||||
<string name="addFromImage">Selectați o imagine din galerie</string>
|
||||
<string name="never">Niciodată</string>
|
||||
<string name="groups">Grupuri</string>
|
||||
<string name="leaveWithoutSaveConfirmation">Să pleci fără să salvezi\?</string>
|
||||
<string name="leaveWithoutSaveConfirmation">Ieșiți fără să salvați?</string>
|
||||
<string name="expiryDate">Data expirării</string>
|
||||
<string name="moveBarcodeToTopOfScreen">Mutați codul de bare în partea de sus a ecranului</string>
|
||||
<string name="errorReadingImage">Nu s-a putut citi imaginea</string>
|
||||
<string name="points">Puncte</string>
|
||||
<string name="cardShortcut">Scurtătură de card</string>
|
||||
<string name="scanCardBarcode">Scanați codul de bare</string>
|
||||
<string name="importExportHelp">Copierea de rezervă a datelor vă permite să le mutați pe un alt dispozitiv.</string>
|
||||
<string name="exportSuccessfulTitle">Exportată</string>
|
||||
<string name="importExportHelp">Copia de rezervă a datelor vă permite să le mutați pe un alt dispozitiv.</string>
|
||||
<string name="exportSuccessfulTitle">Exportat</string>
|
||||
<string name="exportFailedTitle">Export eșuat</string>
|
||||
<string name="importOptionFilesystemExplanation">Alegeți un anumit fișier din sistemul de fișiere.</string>
|
||||
<string name="importOptionApplicationButton">Utilizați o altă aplicație</string>
|
||||
@@ -87,7 +87,7 @@
|
||||
<string name="enter_group_name">Introduceți numele grupului</string>
|
||||
<string name="yes">Da</string>
|
||||
<string name="no">Nu</string>
|
||||
<string name="archive">Arhivați</string>
|
||||
<string name="archive">Arhivare</string>
|
||||
<string name="passwordRequired">Vă rugăm, introduceți parola</string>
|
||||
<string name="unsupportedBarcodeType">Acest tip de cod de bare nu poate fi afișat. Este posibil ca acesta să se poată afișa într-o versiune mai nouă a aplicației.</string>
|
||||
<string name="photos">Imagini</string>
|
||||
@@ -97,17 +97,17 @@
|
||||
<string name="intent_import_card_from_url_share_multiple_text">Aș dori să partajez niște carduri cu tine</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Drepturi de autor © 2019–<xliff:g>%d</xliff:g> Sylvia van Os și contribuitorii</string>
|
||||
<string name="translate_platform">pe Weblate</string>
|
||||
<string name="card_id_must_not_be_empty">Identificatorul cardului nu poate fi liber</string>
|
||||
<string name="card_id_must_not_be_empty">Identificatorul cardului nu poate fi gol</string>
|
||||
<string name="duplicateCard">Duplicare</string>
|
||||
<string name="balanceParsingFailed">Sold invalid</string>
|
||||
<string name="exportPasswordHint">Introduceți o parolă</string>
|
||||
<string name="about_title_fmt">Despre <xliff:g id="app_name">%s</xliff:g></string>
|
||||
<string name="barcodeImageDescriptionWithType">Imagine <xliff:g>%s</xliff:g> cod de bare</string>
|
||||
<string name="openFrontImageInGalleryApp">Deschideți imaginea față în aplicația galerie</string>
|
||||
<string name="openFrontImageInGalleryApp">Deschideți imaginea frontală în aplicația galerie</string>
|
||||
<string name="show_name_below_image_thumbnail">Afișați numele sub imaginea miniaturii</string>
|
||||
<string name="removeImage">Ștergeți imaginea</string>
|
||||
<string name="help_translate_this_app">Ajutați la traducerea aplicației</string>
|
||||
<string name="sort_by_expiry">Expirație</string>
|
||||
<string name="sort_by_expiry">Expirare</string>
|
||||
<string name="add_a_card_in_a_different_way">Adăugați un card într-o altă modalitate</string>
|
||||
<string name="settings_portrait_orientation">Portret</string>
|
||||
<string name="takePhoto">Faceți o poză</string>
|
||||
@@ -119,7 +119,7 @@
|
||||
<string name="group_edit">Editați Grup</string>
|
||||
<string name="debug_version_fmt">Versiune: <xliff:g id="version">%s</xliff:g></string>
|
||||
<string name="show_validity">Afișați validitatea</string>
|
||||
<string name="backImageDescription">Imagine spate</string>
|
||||
<string name="backImageDescription">Imagine din spate</string>
|
||||
<string name="view_online">Vizualizați online</string>
|
||||
<string name="noCameraPermissionDirectToSystemSetting">Pentru a scana codurile de bare, Catima necesită acces la cameră. Apăsați aici pentru a schimba setările permisiunilor dvs.</string>
|
||||
<string name="settings_lock_on_opening_orientation">Blocați orientația folosită când deschideți cardul</string>
|
||||
@@ -128,22 +128,21 @@
|
||||
<string name="height">Înălțime:</string>
|
||||
<string name="expiryStateSentence">Expiră: <xliff:g>%s</xliff:g></string>
|
||||
<string name="setIcon">Setați miniatura</string>
|
||||
<string name="barcodeLongPressMessage">Doar imaginile pot vi deschise în aplicația galerie</string>
|
||||
<string name="barcodeLongPressMessage">Doar imagini pot fi deschise în aplicația galerie</string>
|
||||
<string name="settings_category_title_general">General</string>
|
||||
<string name="manually_enter_barcode_instructions">Introduceți numărul de identificare sau textul de pe cardul dumneavoastră iar apoi apăsați codul de bare care arată ca și cel de pe cardul dumneavoastră.</string>
|
||||
<string name="manually_enter_barcode_instructions">Introduceți numărul de identificare sau textul de pe cardul dumneavoastră iar apoi selectați codul de bare ce arată ca și cel de pe cardul dumneavoastră.</string>
|
||||
<string name="balanceSentence">Sold: <xliff:g>%s</xliff:g></string>
|
||||
<string name="switchToBarcode">Schimbați la codul de bare</string>
|
||||
<string name="switchToBarcode">Comutați la codul de bare</string>
|
||||
<string name="importFidme">Importați din FidMe</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card_summary">Dezactivează blocarea ecranului când vizualizați un card</string>
|
||||
<string name="action_more_options">Mai multe opțiuni</string>
|
||||
<string name="app_copyright_old">Bazat pe Loyalty Card Keychain
|
||||
\ndrepturi de autor rezervate © 2016-2020 Branden Archer</string>
|
||||
<string name="importVoucherVaultMessage">Selectați exportul dvs. <i>vouchervault.json</i> din Voucher Vault pentru a-l importa.
|
||||
\nCreați-l prin apăsarea butonului Export în Voucher Vault mai întâi.</string>
|
||||
<string name="importVoucherVaultMessage">Selectați exportul dvs. <i>vouchervault.json</i> din Voucher Vault pentru a-l importa.\nCreați întâi fișierul prin apăsarea butonului Export în Voucher Vault.</string>
|
||||
<string name="chooseImportType">Importați date din</string>
|
||||
<string name="frontImageDescription">Imagine față</string>
|
||||
<string name="frontImageDescription">Imagine frontală</string>
|
||||
<string name="showMoreInfo">Afișați informații</string>
|
||||
<string name="failedToOpenUrl">Instalați un browser web mai întâi</string>
|
||||
<string name="failedToOpenUrl">Mai întâi instalați un browser web</string>
|
||||
<string name="setBackImage">Setați imaginea din spate</string>
|
||||
<string name="permissionReadCardsDescription">citiți cardurile dumneavoastră Catima și toate detaliile lor, inclusiv notițele și imaginile</string>
|
||||
<string name="anyDate">Orice dată</string>
|
||||
@@ -156,7 +155,7 @@
|
||||
<string name="enter_card_id">Introduceți numărul de identificare sau textul de pe cardul dumneavoastră</string>
|
||||
<string name="unarchived">Card dezarhivat</string>
|
||||
<string name="chooseValidFromDate">Alegeți data de început</string>
|
||||
<string name="action_display_options">Opțiuni afisare</string>
|
||||
<string name="action_display_options">Opțiuni afișare</string>
|
||||
<string name="settings_display_barcode_max_brightness_summary">Necesar pentru ca unele scanere să funcționeze</string>
|
||||
<plurals name="deleteCardsTitle">
|
||||
<item quantity="one">Șterge <xliff:g>%d</xliff:g> card</item>
|
||||
@@ -164,7 +163,7 @@
|
||||
<item quantity="other">Ștergere <xliff:g>%d</xliff:g> carduri</item>
|
||||
</plurals>
|
||||
<string name="settings_oled_dark_summary">Reduce utilizarea bateriei pe ecrane OLED</string>
|
||||
<string name="group_name_is_empty">Numele grupului nu poate fi liber</string>
|
||||
<string name="group_name_is_empty">Numele grupului nu poate fi gol</string>
|
||||
<string name="importCards">Importați carduri</string>
|
||||
<string name="icon_header_click_text">Apăsați lung pentru a edita miniatura</string>
|
||||
<string name="settings_category_title_cards">Afișare carduri</string>
|
||||
@@ -172,21 +171,21 @@
|
||||
<string name="ok">OK</string>
|
||||
<string name="unarchive">Dezarhivare</string>
|
||||
<string name="addWithoutBarcode">Adăugați un card fără cod de bare</string>
|
||||
<string name="sort_by">Sortați în</string>
|
||||
<string name="sort_by">Sortați după</string>
|
||||
<string name="on_google_play">pe Google Play</string>
|
||||
<string name="turn_flashlight_off">Opriți lanterna</string>
|
||||
<string name="show_note">Afișați notița</string>
|
||||
<string name="report_error">Raportați o eroare</string>
|
||||
<string name="switchToBackImage">Schimbați la imaginea spate</string>
|
||||
<string name="settings_follow_system_orientation">Urmare sistem</string>
|
||||
<string name="switchToBackImage">Comutați către imaginea din spate</string>
|
||||
<string name="settings_follow_system_orientation">Urmează setările sistemului</string>
|
||||
<string name="reverse">...în ordine inversă</string>
|
||||
<string name="settings_brown_theme">Maro</string>
|
||||
<string name="app_contributors">Făcut posibil de: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="app_copyright_short">Drepturi de autor © Sylvia van Os și contribuabilii</string>
|
||||
<string name="settings_oled_dark">Fundal pur negru pentru tema închisă</string>
|
||||
<string name="app_copyright_short">Drepturi de autor © Sylvia van Os și contribuitorii</string>
|
||||
<string name="settings_oled_dark">Fundal pur negru pentru tema întunecată</string>
|
||||
<string name="starred">Favorite</string>
|
||||
<string name="field_must_not_be_empty">Câmpul nu poate fi liber</string>
|
||||
<string name="switchToFrontImage">Schimbați la imaginea față</string>
|
||||
<string name="field_must_not_be_empty">Câmpul nu poate fi gol</string>
|
||||
<string name="switchToFrontImage">Comutați către imaginea frontală</string>
|
||||
<string name="validFromSentence">Valid de la data de: <xliff:g>%s</xliff:g></string>
|
||||
<string name="settings_catima_theme">Catima</string>
|
||||
<string name="previousCard">Precedent</string>
|
||||
@@ -199,17 +198,16 @@
|
||||
<item quantity="few"><xliff:g>%1$d</xliff:g> carduri (<xliff:g id="archivedCount">%2$d</xliff:g> arhivate)</item>
|
||||
<item quantity="other"><xliff:g>%1$d</xliff:g> de carduri (<xliff:g id="archivedCount">%2$d</xliff:g> arhivate)</item>
|
||||
</plurals>
|
||||
<string name="sameAsCardId">La fel cu identificatorul</string>
|
||||
<string name="sameAsCardId">Acelașil cu identificatorul</string>
|
||||
<string name="options">Opțiuni</string>
|
||||
<string name="settings_magenta_theme">Magenta</string>
|
||||
<string name="failedGeneratingShareURL">Nu s-a putut genera un URL partajabil. Vă rugăm raportați asta.</string>
|
||||
<string name="failedGeneratingShareURL">Nu s-a putut genera un URL partajabil. Vă rugăm să raportați aceasta eroare.</string>
|
||||
<string name="selectColor">Selectați o culoare</string>
|
||||
<string name="setBarcodeHeight">Setați înălțimea codului de bare</string>
|
||||
<string name="settings_landscape_orientation">Orizontal</string>
|
||||
<string name="privacy_policy">Politica de Confidențialitate</string>
|
||||
<string name="importStocardMessage">Selectați exportul dvs. <i>***.zip</i> din Stocard pentru a-l importa.
|
||||
\nLuați-l prin e-mail către support@stocardapp.com cerând un export al datelor dumneavoastră.</string>
|
||||
<string name="openBackImageInGalleryApp">Deschideți imaginea spate în aplicația galerie</string>
|
||||
<string name="importStocardMessage">Selectați exportul dvs. <i>***.zip</i> din Stocard pentru a-l importa.\nGenerați întâi fișierul solicitând prin e-mail către support@stocardapp.com un export al datelor dumneavoastră.</string>
|
||||
<string name="openBackImageInGalleryApp">Deschideți imaginea din spate în aplicația galerie</string>
|
||||
<string name="settings_system_locale">Sistem</string>
|
||||
<string name="updateBalance">Actualizați balanța</string>
|
||||
<string name="sort_by_most_recently_used">Cele mai recent utilizate</string>
|
||||
@@ -219,12 +217,11 @@
|
||||
<string name="settings_locale">Limbă</string>
|
||||
<string name="sort_by_name">Nume</string>
|
||||
<string name="setFrontImage">Setați imaginea din față</string>
|
||||
<string name="settings_sky_blue_theme">Albastru cer</string>
|
||||
<string name="cameraPermissionRequired">Permisiunea pentru a accesa camera este necesară pentru această acțiune…</string>
|
||||
<string name="settings_sky_blue_theme">Albastru ca cerul</string>
|
||||
<string name="cameraPermissionRequired">Pentru această acțiune este necesară permisiunea de acces la camera …</string>
|
||||
<string name="settings_allow_content_provider_read_title">Permiteți altor aplicații să acceseze datele mele</string>
|
||||
<string name="updateBarcodeQuestionText">Ați schimbat identificatorul. Doriți să actualizați codul de bare pentru a utiliza aceeași valoare?</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Selectați exportul dvs. <i>LoyaltyCardKeychain.csv</i> din Loyalty Card Keychain pentru a-l importa.
|
||||
\nCreați-l din meniul Import/Export în Loyalty Card Keychain prin apăsarea butonului Export acolo mai întâi.</string>
|
||||
<string name="updateBarcodeQuestionText">Ați schimbat identificatorul. Doriți să actualizați și codul de bare pentru a utiliza aceeași valoare?</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Selectați exportul dvs. <i>LoyaltyCardKeychain.csv</i> din Loyalty Card Keychain pentru a-l importa. \nCreați întâi fișierul din meniul Import/Export în Loyalty Card Keychain prin apăsarea butonului Export.</string>
|
||||
<string name="currentBalanceSentence">Balanța curentă: <xliff:g>%s</xliff:g></string>
|
||||
<string name="importLoyaltyCardKeychain">Importați din Loyalty Card Keychain</string>
|
||||
<string name="group_updated">Grup actualizat</string>
|
||||
@@ -232,7 +229,7 @@
|
||||
<string name="on_github">pe GitHub</string>
|
||||
<string name="sort">Sortați</string>
|
||||
<string name="permissionReadCardsLabel">Citiți cardurile Catima</string>
|
||||
<string name="storageReadPermissionRequired">Permisiunea pentru a citi stocarea este necesară pentru această acțiune…</string>
|
||||
<string name="storageReadPermissionRequired">Pentru această acțiune este necesară permisiunea de citire a mediului de stocare …</string>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
<item quantity="one">Ștergeți acest <xliff:g>%d</xliff:g> card permanent?</item>
|
||||
<item quantity="few">Ștergeți aceste <xliff:g>%d</xliff:g> carduri permanent?</item>
|
||||
@@ -242,15 +239,15 @@
|
||||
<string name="archived">Card arhivat</string>
|
||||
<string name="failedToRetrieveImageFile">Nu s-a putut recupera fișierul imaginii</string>
|
||||
<string name="donate">Donați</string>
|
||||
<string name="group_name_already_in_use">Numele grupului este deja în uz</string>
|
||||
<string name="settings_violet_theme">Violet</string>
|
||||
<string name="group_name_already_in_use">Acest nume de grup este deja utilizat</string>
|
||||
<string name="settings_violet_theme">Mov</string>
|
||||
<string name="include_if_asking_support">Dacă doriți să cereți ajutor, includeți informațiile următoare:</string>
|
||||
<string name="show_archived_cards">Afișați cardurile arhivate</string>
|
||||
<string name="settings_card_orientation">Orientare ecran</string>
|
||||
<string name="app_libraries">Biblioteci terță deschise: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="app_libraries">Listă de biblioteci libere de la terți: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="updateBalanceTitle">Cât de mult ați cheltuit sau primit?</string>
|
||||
<string name="settings_blue_theme">Albastru</string>
|
||||
<string name="app_resources">Resurse terță deschise: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="app_resources">Listă de resurse gratuite de la terți: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="app_name">Catima</string>
|
||||
<string name="shortcutSelectCard">Selectați un card</string>
|
||||
<string name="accept">Acceptă</string>
|
||||
@@ -268,36 +265,34 @@
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> selectate</item>
|
||||
</plurals>
|
||||
<string name="version_history">Istoric versiuni</string>
|
||||
<string name="importCatimaMessage">Selectați exportul dvs. <i>catima.zip</i> din Catima pentru a importa.
|
||||
\nCreați-l din meniul Import/Export al unei alte aplicații Catima apăsând Export acolo mai întâi.</string>
|
||||
<string name="importCatimaMessage">Selectați exportul dvs. <i>catima.zip</i> din Catima pentru a importa. \nCreați întâi fișierul din meniul Import/Export al unei alte aplicații Catima apăsând acolo butonul de Export.</string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> punct</item>
|
||||
<item quantity="few"><xliff:g>%s</xliff:g> puncte</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> de puncte</item>
|
||||
</plurals>
|
||||
<string name="importFidmeMessage">Selectați exportul dvs. <i>fidme-export-request-xxxxx.zip</i> din FidMe pentru a-l importa, și selectați tipurile de cod de bare manual după.
|
||||
\nCreați-l din profilul dvs. FidMe prin alegerea Protecție Date și apoi apăsând Extrageți datele mele prima dată.</string>
|
||||
<string name="importFidmeMessage">Selectați exportul dvs. <i>fidme-export-request-xxxxx.zip</i> din FidMe pentru a-l importa, și apoi selectați tipurile de cod de bare manual.\nCreați întâi fișierul din profilul dvs. FidMe prin alegerea Protecție Date și apoi apăsând Extrageți datele mele.</string>
|
||||
<string name="updateBarcodeQuestionTitle">Actualizați valoarea codului de bare?</string>
|
||||
<string name="settings_keep_screen_on_summary">Dezactivează temporizatorul de ecran când vizualizați un card</string>
|
||||
<string name="rate_this_app">Acordați o recenzie acestei aplicații</string>
|
||||
<string name="credits">Contribuabili</string>
|
||||
<string name="credits">Contribuitori</string>
|
||||
<string name="settings_follow_sensor_orientation">Rotește întotdeauna (ignora setările de sistem)</string>
|
||||
<string name="continue_">Continua</string>
|
||||
<string name="add_manually_warning_title">Se recomandă scanarea</string>
|
||||
<string name="add_manually_warning_message">Pentru unele magazine, valoarea codului de bare diferă de numărul scris pe card. Din acest motiv, este posibil ca introducerea manuală a unui cod de bare să nu funcționeze întotdeauna. În schimb, este recomandat să scanați codul de bare cu camera dvs. Mai vrei să continui?</string>
|
||||
<string name="spend">Cheltuie</string>
|
||||
<string name="receive">Primește</string>
|
||||
<string name="amountParsingFailed">Sumă nevalidă</string>
|
||||
<string name="amountParsingFailed">Sumă invalidă</string>
|
||||
<string name="addFromPdfFile">Selectați un fișier PDF</string>
|
||||
<string name="errorReadingFile">Nu am putut citi fișierul</string>
|
||||
<string name="failedLaunchingFileManager">Nu s-a găsit un manager de fișiere suportat</string>
|
||||
<string name="multipleBarcodesFoundPleaseChooseOne">Pe care dintre codurile de bare găsite dorești să-l folosești?</string>
|
||||
<string name="multipleBarcodesFoundPleaseChooseOne">Care dintre codurile de bare găsite dorești să-l folosești?</string>
|
||||
<string name="pageWithNumber">Pagina <xliff:g>%d</xliff:g></string>
|
||||
<string name="noCameraFoundGuideText">Dispozitivul dvs. nu pare să aibă o cameră foto/video. Daca are, încercați să vă reporniți dispozitivul. Altfel, folosiți butonul cu opțiunea \'Mai multe\' de mai jos pentru a adăuga un cod de bare prin altă modalitate.</string>
|
||||
<string name="noCameraFoundGuideText">Dispozitivul dvs. nu pare să aibă o cameră foto/video. Daca are, încercați să vă reporniți dispozitivul. Alternativ, folosiți butonul cu opțiunea \'Mai multe\' de mai jos pentru a adăuga un cod de bare prin altă metodă.</string>
|
||||
<string name="importCancelled">Importare anulată</string>
|
||||
<string name="exportCancelled">Exportare anulată</string>
|
||||
<string name="useBackImage">Utilizează imaginea din spate</string>
|
||||
<string name="useFrontImage">Utilizează imaginea din față</string>
|
||||
<string name="useFrontImage">Utilizează imaginea frontală</string>
|
||||
<string name="settings_use_volume_keys_navigation">Schimbă cardurile folosind butoanele de volum</string>
|
||||
<string name="settings_use_volume_keys_navigation_summary">Folosiți butoanele de volum pentru a schimba ce card este afișat</string>
|
||||
<string name="settings_automatic_column_count">Automat</string>
|
||||
@@ -308,4 +303,11 @@
|
||||
<string name="settings_column_count_5">5</string>
|
||||
<string name="settings_column_count_6">6</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
</resources>
|
||||
<string name="settings_column_count_landscape">Coloane in mod orizontal</string>
|
||||
<string name="settings_category_title_cards_overview">Vedere de ansamblu al cardlui</string>
|
||||
<string name="sort_by_valid_from">Forma validă</string>
|
||||
<string name="settings_column_count_portrait">Coloane in mod portret</string>
|
||||
<string name="addFromPkpass">Selectează un fișier de tip Passbook (.pkpass)</string>
|
||||
<string name="unsupportedFile">Acest fișier nu este suportat</string>
|
||||
<string name="generic_error_please_retry">Scuze, ceva nu a funționat. Încearcă din nou ...</string>
|
||||
</resources>
|
||||
|
||||
@@ -294,7 +294,7 @@
|
||||
<string name="spend">Потрачено</string>
|
||||
<string name="receive">Получено</string>
|
||||
<string name="amountParsingFailed">Недопустимая сумма</string>
|
||||
<string name="addFromPdfFile">Выбрать PDF-файл</string>
|
||||
<string name="addFromPdfFile">Выбрать файл PDF</string>
|
||||
<string name="errorReadingFile">Невозможно прочитать файл</string>
|
||||
<string name="pageWithNumber">Страница <xliff:g>%d</xliff:g></string>
|
||||
<string name="failedLaunchingFileManager">Не найден поддерживаемый файловый менеджер</string>
|
||||
@@ -320,4 +320,5 @@
|
||||
<string name="unsupportedFile">Данный файл не поддерживается</string>
|
||||
<string name="addFromPkpass">Выбрать файл Passbook (.pkpass)</string>
|
||||
<string name="generic_error_please_retry">Извините, что-то пошло не так, попробуйте ещё раз…</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Начало действия</string>
|
||||
</resources>
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
<string name="updateBalance">Ažuriraj stanje</string>
|
||||
<string name="failedToRetrieveImageFile">Preuzimanje fotografije nije uspelo</string>
|
||||
<string name="sort_by_name">Ime</string>
|
||||
<string name="sort_by_most_recently_used">Nedevno korišćeno</string>
|
||||
<string name="sort_by_most_recently_used">Nedavno korišćeno</string>
|
||||
<string name="sort_by_expiry">Ističe</string>
|
||||
<string name="reverse">…u obrnutom redosledu</string>
|
||||
<string name="sort_by">Sortiraj po</string>
|
||||
@@ -298,4 +298,5 @@
|
||||
<string name="useBackImage">Koristi zadnju fotografiju</string>
|
||||
<string name="pageWithNumber">Strana <xliff:g>%d</xliff:g></string>
|
||||
<string name="noCameraFoundGuideText">Čini se da tvoj uređaj nema kameru. Ako je ima, pokušaj da ponovo pokreneš uređaj. U suprotnom, koristi dugme Više opcija, koje se nalazi ispod, da bi dodao bar-kod na drugi način.</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Važi od</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?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="settings_display_barcode_max_brightness">Gör streckkodsvyn ljusare</string>
|
||||
<string name="settings_display_barcode_max_brightness">Gör skärmen ljusare</string>
|
||||
<string name="settings_keep_screen_on">Håll skärmen påslagen</string>
|
||||
<string name="importFidmeMessage">Välj den exporterade <i>fidme-export-request-xxxxxx.zip</i> från FidMe som du vill importera och välj streckkodstyper manuellt efteråt.
|
||||
\nSkapa den från din FidMe-profil först genom att välja \"Data Protection\" och sen trycka på \"Extract my data\".</string>
|
||||
|
||||
306
app/src/main/res/values-ta/strings.xml
Normal file
@@ -0,0 +1,306 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">கேடிமா</string>
|
||||
<string name="action_search">தேடல்</string>
|
||||
<string name="action_add">கூட்டு</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="noGiftCards">ஒரு அட்டையைச் சேர்க்க + பிளச் பொத்தானைக் சொடுக்கு செய்க அல்லது ⋮ மெனுவிலிருந்து இறக்குமதி செய்யுங்கள்.</string>
|
||||
<string name="noGiftCardsGroup">சில அட்டைகளை உருவாக்கி, பின்னர் அவற்றை இங்கே குழுவிற்கு ஒதுக்குங்கள்.</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="delete">நீக்கு</string>
|
||||
<string name="confirm">உறுதிப்படுத்தவும்</string>
|
||||
<string name="deleteConfirmation">இந்த அட்டையை நிரந்தரமாக நீக்கவா?</string>
|
||||
<string name="ok">சரி</string>
|
||||
<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="noCardExistsError">அந்த அட்டையை கண்டுபிடிக்க முடியவில்லை</string>
|
||||
<string name="failedParsingImportUriError">இறக்குமதி யூரியை அலச முடியவில்லை</string>
|
||||
<string name="importExport">இறக்குமதி/ஏற்றுமதி</string>
|
||||
<string name="exportName">ஏற்றுமதி</string>
|
||||
<string name="importFailedTitle">இறக்குமதி தோல்வியடைந்தது</string>
|
||||
<string name="importFailed">இறக்குமதியை செய்ய முடியவில்லை</string>
|
||||
<string name="exportSuccessfulTitle">ஏற்றுமதி</string>
|
||||
<string name="exportFailedTitle">ஏற்றுமதி தோல்வியடைந்தது</string>
|
||||
<string name="exportFailed">ஏற்றுமதி செய்ய முடியவில்லை</string>
|
||||
<string name="importing">இறக்குமதி…</string>
|
||||
<string name="exporting">ஏற்றுமதி செய்கிறது…</string>
|
||||
<string name="storageReadPermissionRequired">இந்த செயலுக்கு தேவையான சேமிப்பிடத்தைப் படிக்க அனுமதி…</string>
|
||||
<string name="cameraPermissionRequired">இந்த செயலுக்கு தேவையான கேமராவை அணுக அனுமதி…</string>
|
||||
<string name="intent_import_card_from_url_share_text">நான் உங்களுடன் ஒரு அட்டையைப் பகிர விரும்புகிறேன்</string>
|
||||
<string name="importSuccessful">இறக்குமதி செய்யப்பட்ட தரவு</string>
|
||||
<string name="exportSuccessful">தரவு ஏற்றுமதி செய்யப்பட்டது</string>
|
||||
<string name="enter_group_name">குழு பெயரை உள்ளிடவும்</string>
|
||||
<string name="groups">குழுக்கள்</string>
|
||||
<string name="group_edit">குழு திருத்து</string>
|
||||
<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="leaveWithoutSaveTitle">வெளியேறு</string>
|
||||
<string name="leaveWithoutSaveConfirmation">சேமிக்காமல் விடலாமா?</string>
|
||||
<string name="addManually">பார்கோடு கைமுறையாக உள்ளிடவும்</string>
|
||||
<string name="addFromImage">கேலரியில் இருந்து ஒரு படத்தைத் தேர்ந்தெடுக்கவும்</string>
|
||||
<string name="noBarcodeFound">பார்கோடு எதுவும் கிடைக்கவில்லை</string>
|
||||
<string name="errorReadingImage">படத்தைப் படிக்க முடியவில்லை</string>
|
||||
<string name="balance">இருப்பு</string>
|
||||
<string name="currency">நாணயம்</string>
|
||||
<string name="importFidme">FIDME இலிருந்து இறக்குமதி</string>
|
||||
<string name="barcodeId">பார்கோடு மதிப்பு</string>
|
||||
<string name="backImageDescription">பின் படம்</string>
|
||||
<string name="photos">புகைப்படங்கள்</string>
|
||||
<string name="setFrontImage">முன் படத்தை அமைக்கவும்</string>
|
||||
<string name="setBackImage">படத்தை அமைக்கவும்</string>
|
||||
<string name="removeImage">படத்தை அகற்று</string>
|
||||
<string name="takePhoto">புகைப்படம் எடுக்கவும்</string>
|
||||
<string name="settings_oled_dark_summary">OLED காட்சிகளில் பேட்டரி பயன்பாட்டைக் குறைக்கிறது</string>
|
||||
<string name="settings_system_locale">மண்டலம்</string>
|
||||
<string name="selectColor">வண்ணத்தைத் தேர்ந்தெடுக்கவும்</string>
|
||||
<string name="setIcon">சிறு உருவத்தை அமைக்கவும்</string>
|
||||
<string name="settings_blue_theme">நீலம்</string>
|
||||
<string name="settings_green_theme">பச்சை</string>
|
||||
<string name="sort">வரிசைப்படுத்து</string>
|
||||
<string name="showMoreInfo">தகவலைக் காட்டு</string>
|
||||
<string name="nextCard">அடுத்தது</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="spend">செலவு</string>
|
||||
<string name="unsupportedFile">இந்த கோப்பு ஆதரிக்கப்படவில்லை</string>
|
||||
<string name="generic_error_please_retry">மன்னிக்கவும், ஏதோ தவறு நடந்தது, தயவுசெய்து மீண்டும் முயற்சிக்கவும் ...</string>
|
||||
<string name="noMatchingGiftCards">முடிவுகள் இல்லை. உங்கள் தேடலை மாற்ற முயற்சிக்கவும்.</string>
|
||||
<string name="edit">தொகு</string>
|
||||
<string name="deleteTitle">அட்டையை நீக்கு</string>
|
||||
<string name="unstar">பிடித்தவைகளிலிருந்து அகற்று</string>
|
||||
<string name="cancel">ரத்துசெய்</string>
|
||||
<string name="save">சேமி</string>
|
||||
<string name="noCardsMessage">முதலில் ஒரு அட்டையைச் சேர்க்கவும்</string>
|
||||
<string name="importExportHelp">உங்கள் தரவை காப்புப் பிரதி எடுப்பது அதை மற்றொரு சாதனத்திற்கு நகர்த்த அனுமதிக்கிறது.</string>
|
||||
<string name="importSuccessfulTitle">இறக்குமதி செய்யப்பட்டது</string>
|
||||
<string name="permissionReadCardsLabel">கேடிமா அட்டைகளைப் படியுங்கள்</string>
|
||||
<string name="permissionReadCardsDescription">உங்கள் கேடிமா அட்டைகள் மற்றும் குறிப்புகள் மற்றும் படங்கள் உட்பட அதன் அனைத்து விவரங்களையும் படியுங்கள்</string>
|
||||
<string name="exportOptionExplanation">தரவு உங்கள் விருப்பப்படி இடத்திற்கு எழுதப்படும்.</string>
|
||||
<string name="importOptionFilesystemTitle">கோப்பு முறைமையிலிருந்து இறக்குமதி</string>
|
||||
<string name="importOptionFilesystemExplanation">கோப்பு முறைமையிலிருந்து ஒரு குறிப்பிட்ட கோப்பைத் தேர்வுசெய்க.</string>
|
||||
<string name="importOptionFilesystemButton">கோப்பு முறைமையிலிருந்து</string>
|
||||
<string name="cameraPermissionDeniedTitle">கேமராவை அணுக முடியவில்லை</string>
|
||||
<string name="noCameraPermissionDirectToSystemSetting">பார்கோடுகளை ச்கேன் செய்ய, கேடிமாவுக்கு உங்கள் கேமராவுக்கு அணுகல் தேவைப்படும். உங்கள் இசைவு அமைப்புகளை மாற்ற இங்கே தட்டவும்.</string>
|
||||
<string name="importOptionApplicationTitle">மற்றொரு பயன்பாட்டைப் பயன்படுத்தவும்</string>
|
||||
<string name="importOptionApplicationExplanation">கோப்பைத் திறக்க எந்த பயன்பாடு அல்லது உங்களுக்கு பிடித்த கோப்பு மேலாளரைப் பயன்படுத்தவும்.</string>
|
||||
<string name="about">பற்றி</string>
|
||||
<string name="importOptionApplicationButton">மற்றொரு பயன்பாட்டைப் பயன்படுத்தவும்</string>
|
||||
<string name="app_copyright_short">பதிப்புரிமை © சில்வியா வான் ஓஎச் மற்றும் பங்களிப்பாளர்கள்</string>
|
||||
<string name="app_copyright_old">விசுவாச அட்டை கீச்சின் அடிப்படையில்\n பதிப்புரிமை © 2016–2020 பிராண்டன் ஆர்ச்சர்</string>
|
||||
<string name="app_license">நகலெடுக்கப்பட்ட லிப்ரே மென்பொருள், உரிமம் பெற்ற GPLV3+</string>
|
||||
<string name="selectBarcodeTitle">பார்கோடு தேர்ந்தெடுக்கவும்</string>
|
||||
<string name="thumbnailDescription">சிறுபடம்</string>
|
||||
<string name="starImage">பிடித்த விண்மீன்</string>
|
||||
<string name="settings">அமைப்புகள்</string>
|
||||
<string name="settings_theme">கருப்பொருள்</string>
|
||||
<string name="settings_system_theme">மண்டலம்</string>
|
||||
<string name="settings_light_theme">ஒளி</string>
|
||||
<string name="settings_dark_theme">இருண்ட</string>
|
||||
<string name="settings_card_orientation">திரை நோக்குநிலை</string>
|
||||
<string name="settings_follow_system_orientation">அமைப்பைப் பின்தொடரவும்</string>
|
||||
<string name="settings_keep_screen_on">திரையை தொடர்ந்து வைத்திருங்கள்</string>
|
||||
<string name="settings_follow_sensor_orientation">எப்போதும் சுழற்றுங்கள் (கணினி அமைப்புகளை புறக்கணிக்கிறது)</string>
|
||||
<string name="settings_keep_screen_on_summary">ஒரு அட்டையைப் பார்க்கும்போது திரை நேரத்தை முடக்குகிறது</string>
|
||||
<string name="settings_portrait_orientation">உருவப்படம்</string>
|
||||
<string name="settings_landscape_orientation">நிலப்பரப்பு</string>
|
||||
<string name="settings_lock_on_opening_orientation">அட்டையைத் திறக்கும்போது பயன்படுத்தப்படும் நோக்குநிலைக்கு பூட்டு</string>
|
||||
<string name="settings_display_barcode_max_brightness">திரை ஒளி</string>
|
||||
<string name="settings_display_barcode_max_brightness_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="settings_use_volume_keys_navigation">தொகுதி பொத்தான்களைப் பயன்படுத்தி அட்டைகளை மாற்றவும்</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card_summary">அட்டையைப் பார்க்கும்போது திரை லாக் முடக்குகிறது</string>
|
||||
<string name="noGroups">வகைப்படுத்தலுக்கான குழுக்களைச் சேர்க்க + பிளச் பொத்தானைக் சொடுக்கு செய்க.</string>
|
||||
<string name="settings_use_volume_keys_navigation_summary">எந்த அட்டை காட்டப்படும் என்பதை மாற்ற தொகுதி பொத்தான்களைப் பயன்படுத்தவும்</string>
|
||||
<string name="noGroupCards">இந்த குழு காலியாக உள்ளது</string>
|
||||
<string name="moveUp">மேல்நோக்கி நகர்த்தவும்</string>
|
||||
<string name="moveDown">கீழ்நோக்கி நகர்த்தவும்</string>
|
||||
<string name="card">அட்டை</string>
|
||||
<string name="editBarcode">பார்கோடு திருத்து</string>
|
||||
<string name="expiryDate">காலாவதி தேதி</string>
|
||||
<string name="never">ஒருபோதும்</string>
|
||||
<string name="chooseExpiryDate">காலாவதி தேதியைத் தேர்வுசெய்க</string>
|
||||
<string name="moveBarcodeToTopOfScreen">பார்கோடு திரையின் மேற்பகுதிக்கு நகர்த்தவும்</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="importCatimaMessage">உங்கள் <i> catima.zip </i> இறக்குமதி செய்ய கேடிமாவிலிருந்து ஏற்றுமதி செய்யுங்கள்.\n முதலில் அங்கு ஏற்றுமதியை அழுத்துவதன் மூலம் மற்றொரு கேடிமா பயன்பாட்டின் இறக்குமதி/ஏற்றுமதி மெனுவிலிருந்து அதை உருவாக்கவும்.</string>
|
||||
<string name="importLoyaltyCardKeychain">விசுவாச அட்டை கீச்சினிலிருந்து இறக்குமதி செய்யுங்கள்</string>
|
||||
<string name="importFidmeMessage">உங்கள் <i> fidme-export-request-xxxxxx.zip </i> இறக்குமதி செய்ய FIDME இலிருந்து ஏற்றுமதி செய்து, பின்னர் பார்கோடு வகைகளை கைமுறையாகத் தேர்ந்தெடுக்கவும்.\n தரவு பாதுகாப்பைத் தேர்ந்தெடுப்பதன் மூலம் உங்கள் FIDME சுயவிவரத்திலிருந்து அதை உருவாக்கவும், பின்னர் எனது தரவைப் பிரித்தெடுக்கவும் அழுத்தவும்.</string>
|
||||
<string name="importStocardMessage">உங்கள் <i> ***. சிப் </i> இறக்குமதி செய்ய ஏற்றுமதி.\n உங்கள் தரவை ஏற்றுமதி செய்யக் கேட்கும் support@stocardapp.com என்ற மின்னஞ்சல் மூலம் அதைப் பெறுங்கள்.</string>
|
||||
<string name="importVoucherVault">வவுச்சர் பெட்டகத்திலிருந்து இறக்குமதி</string>
|
||||
<string name="importStocard">ச்டார்ட் இருந்து இறக்குமதி</string>
|
||||
<string name="sameAsCardId">ஐடி அதே</string>
|
||||
<string name="setBarcodeId">பார்கோடு மதிப்பை அமைக்கவும்</string>
|
||||
<string name="unsupportedBarcodeType">இந்த பார்கோடு வகையை இன்னும் காட்ட முடியாது. பயன்பாட்டின் பின்னர் பதிப்பில் இது ஆதரிக்கப்படலாம்.</string>
|
||||
<string name="wrongValueForBarcodeType">தேர்ந்தெடுக்கப்பட்ட பார்கோடு வகைக்கு மதிப்பு செல்லுபடியாகாது</string>
|
||||
<string name="intent_import_card_from_url_share_multiple_text">சில அட்டைகளை உங்களுடன் பகிர்ந்து கொள்ள விரும்புகிறேன்</string>
|
||||
<string name="importVoucherVaultMessage">உங்கள் <i> vouchervault.json </i> வவுச்சர் பெட்டகத்திலிருந்து இறக்குமதி செய்ய ஏற்றுமதி என்பதைத் தேர்ந்தெடுக்கவும்.\n முதலில் வவுச்சர் வால்ட்டில் ஏற்றுமதியை அழுத்துவதன் மூலம் அதை உருவாக்கவும்.</string>
|
||||
<string name="frontImageDescription">முன் படம்</string>
|
||||
<string name="updateBarcodeQuestionTitle">பார்கோடு மதிப்பைப் புதுப்பிக்கவா?</string>
|
||||
<string name="updateBarcodeQuestionText">நீங்கள் ஐடியை மாற்றினீர்கள். அதே மதிப்பைப் பயன்படுத்த பார்கோடு புதுப்பிக்க விரும்புகிறீர்களா?</string>
|
||||
<string name="yes">ஆம்</string>
|
||||
<string name="no">இல்லை</string>
|
||||
<string name="passwordRequired">கடவுச்சொல்லை உள்ளிடவும்</string>
|
||||
<string name="exportPassword">உங்கள் ஏற்றுமதியைப் பாதுகாக்க கடவுச்சொல்லை அமைக்கவும் (விரும்பினால்)</string>
|
||||
<string name="exportPasswordHint">கடவுச்சொல்லை உள்ளிடவும்</string>
|
||||
<string name="failedGeneratingShareURL">பகிரக்கூடிய முகவரி ஐ உருவாக்க முடியவில்லை. இதை புகாரளிக்கவும்.</string>
|
||||
<string name="turn_flashlight_on">ஒளிரும் விளக்கை இயக்கவும்</string>
|
||||
<string name="turn_flashlight_off">ஒளிரும் விளக்கை அணைக்கவும்</string>
|
||||
<string name="settings_locale">மொழி</string>
|
||||
<string name="settings_oled_dark">இருண்ட கருப்பொருளுக்கு தூய கருப்பு பின்னணி</string>
|
||||
<string name="settings_theme_color">கருப்பொருள் நிறம்</string>
|
||||
<string name="settings_catima_theme">கேடிமா</string>
|
||||
<string name="settings_pink_theme">இளஞ்சிவப்பு</string>
|
||||
<string name="settings_magenta_theme">மெசந்தா</string>
|
||||
<string name="settings_violet_theme">கத்தரி</string>
|
||||
<string name="settings_sky_blue_theme">வானம் நீலம்</string>
|
||||
<string name="sort_by_name">பெயர்</string>
|
||||
<string name="sort_by_most_recently_used">மிக அண்மைக் காலத்தில் பயன்படுத்தப்பட்டது</string>
|
||||
<string name="sort_by_expiry">காலாவதியாகும்</string>
|
||||
<string name="reverse">… தலைகீழ் வரிசையில்</string>
|
||||
<string name="settings_brown_theme">பழுப்பு</string>
|
||||
<string name="updateBalance">இருப்பு புதுப்பிக்கவும்</string>
|
||||
<string name="failedToRetrieveImageFile">படக் கோப்பை மீட்டெடுப்பதில் தோல்வி</string>
|
||||
<string name="sort_by">வரிசைப்படுத்தவும்</string>
|
||||
<string name="barcodeLongPressMessage">கேலரி பயன்பாட்டில் படங்களை மட்டுமே திறக்க முடியும்</string>
|
||||
<string name="version_history">பதிப்பு வரலாறு</string>
|
||||
<string name="credits">வரவு</string>
|
||||
<string name="on_google_play">கூகிள் பிளேயில்</string>
|
||||
<string name="help_translate_this_app">இந்த பயன்பாட்டை மொழிபெயர்க்க உதவுங்கள்</string>
|
||||
<string name="license">உரிமம்</string>
|
||||
<string name="source_repository">மூல களஞ்சியம்</string>
|
||||
<string name="on_github">கிட்அப்பில்</string>
|
||||
<string name="and_data_usage">மற்றும் தரவு பயன்பாடு</string>
|
||||
<string name="rate_this_app">இந்த பயன்பாட்டை மதிப்பிடுங்கள்</string>
|
||||
<string name="report_error">பிழையைப் புகாரளிக்கவும்</string>
|
||||
<string name="translate_platform">வெப்லேட்டில்</string>
|
||||
<string name="shortcutSelectCard">ஒரு அட்டையைத் தேர்ந்தெடுக்கவும்</string>
|
||||
<string name="duplicateCard">நகல்</string>
|
||||
<string name="archive">காப்பகம்</string>
|
||||
<string name="options">விருப்பங்கள்</string>
|
||||
<string name="starred">நடித்தார்</string>
|
||||
<string name="include_if_asking_support">நீங்கள் ஆதரவைக் கோர விரும்பினால், பின்வரும் தகவலைச் சேர்க்கவும்:</string>
|
||||
<string name="unarchive">அன்கான்</string>
|
||||
<string name="archived">அட்டை காப்பகப்படுத்தப்பட்டது</string>
|
||||
<string name="unarchived">அட்டை பதிக்கப்படாதது</string>
|
||||
<string name="failedLaunchingPhotoPicker">உதவி கேலரி பயன்பாட்டைக் கண்டுபிடிக்க முடியவில்லை</string>
|
||||
<string name="previousCard">முந்தைய</string>
|
||||
<string name="failedToOpenUrl">முதலில் ஒரு வலை உலாவியை நிறுவவும்</string>
|
||||
<string name="welcome">கேடிமாவுக்கு வருக</string>
|
||||
<string name="importCards">அட்டைகளை இறக்குமதி செய்யுங்கள்</string>
|
||||
<string name="updateBalanceTitle">நீங்கள் எவ்வளவு செலவு செய்தீர்கள் அல்லது பெற்றீர்கள்?</string>
|
||||
<string name="updateBalanceHint">தொகையை உள்ளிடவும்</string>
|
||||
<string name="validFromDate">இருந்து செல்லுபடியாகும்</string>
|
||||
<string name="anyDate">எந்த தேதி</string>
|
||||
<string name="chooseValidFromDate">தேதியிலிருந்து செல்லுபடியாகும் என்பதைத் தேர்வுசெய்க</string>
|
||||
<string name="height">உயரம்:</string>
|
||||
<string name="switchToFrontImage">முன் படத்திற்கு மாறவும்</string>
|
||||
<string name="switchToBackImage">பின் படத்திற்கு மாறவும்</string>
|
||||
<string name="switchToBarcode">பார்கோடு மாறவும்</string>
|
||||
<string name="openFrontImageInGalleryApp">கேலரி பயன்பாட்டில் முன் படத்தைத் திறக்கவும்</string>
|
||||
<string name="openBackImageInGalleryApp">கேலரி பயன்பாட்டில் படத்தைத் திறக்கவும்</string>
|
||||
<string name="setBarcodeHeight">பார்கோடு உயரத்தை அமைக்கவும்</string>
|
||||
<string name="donate">நன்கொடை</string>
|
||||
<string name="icon_header_click_text">சிறுபடத்தைத் திருத்த நீண்ட அழுத்தவும்</string>
|
||||
<string name="show_name_below_image_thumbnail">பட சிறுபடத்திற்கு கீழே உள்ள பெயரைக் காட்டு</string>
|
||||
<string name="show_note">குறிப்பைக் காட்டு</string>
|
||||
<string name="show_balance">சமநிலையைக் காட்டு</string>
|
||||
<string name="show_validity">செல்லுபடியைக் காட்டு</string>
|
||||
<string name="settings_category_title_cards">அட்டை பார்வை</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">1</string>
|
||||
<string name="settings_column_count_2">2</string>
|
||||
<string name="settings_column_count_3">3</string>
|
||||
<string name="settings_category_title_general">பொது</string>
|
||||
<string name="settings_category_title_privacy">தனியுரிமை</string>
|
||||
<string name="show_archived_cards">காப்பகப்படுத்தப்பட்ட அட்டைகளைக் காட்டு</string>
|
||||
<string name="view_online">ஆன்லைனில் காண்க</string>
|
||||
<string name="action_more_options">மேலும் விருப்பங்கள்</string>
|
||||
<string name="addWithoutBarcode">பார்கோடு இல்லாத அட்டையைச் சேர்க்கவும்</string>
|
||||
<string name="action_display_options">காட்சி விருப்பங்கள்</string>
|
||||
<string name="enter_card_id">உங்கள் அட்டையில் அடையாள எண் அல்லது உரையை உள்ளிடவும்</string>
|
||||
<string name="card_id_must_not_be_empty">அட்டை ஐடி காலியாக இருக்கக்கூடாது</string>
|
||||
<string name="add_a_card_in_a_different_way">ஒரு அட்டையை வேறு வழியில் சேர்க்கவும்</string>
|
||||
<string name="field_must_not_be_empty">புலம் காலியாக இருக்கக்கூடாது</string>
|
||||
<string name="manually_enter_barcode_instructions">உங்கள் அட்டையில் அடையாள எண் அல்லது உரையை உள்ளிட்டு, உங்கள் அட்டையில் உள்ளதைப் போல தோற்றமளிக்கும் பார்கோடு அழுத்தவும்.</string>
|
||||
<string name="add_manually_warning_title">ச்கேனிங் பரிந்துரைக்கப்படுகிறது</string>
|
||||
<string name="continue_">தொடரவும்</string>
|
||||
<string name="receive">பெறுங்கள்</string>
|
||||
<string name="amountParsingFailed">தவறான தொகை</string>
|
||||
<string name="add_manually_warning_message">சில கடைகளுக்கு, பார்கோடு மதிப்பு அட்டையில் எழுதப்பட்ட எண்ணிலிருந்து வேறுபடுகிறது. இதன் காரணமாக, ஒரு பார்கோடு கைமுறையாக நுழைவது எப்போதும் வேலை செய்யாது. அதற்கு பதிலாக உங்கள் கேமராவுடன் பார்கோடு ச்கேன் செய்ய கடுமையாக பரிந்துரைக்கப்படுகிறது. நீங்கள் இன்னும் தொடர விரும்புகிறீர்களா?</string>
|
||||
<string name="addFromPdfFile">PDF கோப்பைத் தேர்ந்தெடுக்கவும்</string>
|
||||
<string name="errorReadingFile">கோப்பைப் படிக்க முடியவில்லை</string>
|
||||
<string name="failedLaunchingFileManager">உதவி கோப்பு மேலாளரைக் கண்டுபிடிக்க முடியவில்லை</string>
|
||||
<string name="multipleBarcodesFoundPleaseChooseOne">கண்டுபிடிக்கப்பட்ட பார்கோடுகளில் எது நீங்கள் பயன்படுத்த விரும்புகிறீர்கள்?</string>
|
||||
<string name="noCameraFoundGuideText">உங்கள் சாதனத்தில் கேமரா இருப்பதாகத் தெரியவில்லை. அவ்வாறு செய்தால், சாதனத்தை மறுதொடக்கம் செய்ய முயற்சிக்கவும். இல்லையெனில், பார்கோடு மற்றொரு வழியில் சேர்க்க கீழே உள்ள கூடுதல் விருப்பங்கள் பொத்தானைப் பயன்படுத்தவும்.</string>
|
||||
<string name="importCancelled">இறக்குமதி ரத்து செய்யப்பட்டது</string>
|
||||
<string name="exportCancelled">ஏற்றுமதி ரத்து செய்யப்பட்டது</string>
|
||||
<string name="useBackImage">பின் படத்தைப் பயன்படுத்தவும்</string>
|
||||
<string name="addFromPkpass">பாச் புக் கோப்பைத் தேர்ந்தெடுக்கவும் (.pkpass)</string>
|
||||
<string name="useFrontImage">முன் படத்தைப் பயன்படுத்தவும்</string>
|
||||
<plurals name="deleteCardsTitle">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> அட்டை நீக்கு</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> அட்டைகளை நீக்கு</item>
|
||||
</plurals>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
<item quantity="one">இந்த <xliff:g>%d</xliff:g> அட்டையை நிரந்தரமாக நீக்கவா?</item>
|
||||
<item quantity="other">இந்த <xliff:g>%d</xliff:g> அட்டைகளை நிரந்தரமாக நீக்கவா?</item>
|
||||
</plurals>
|
||||
<string name="editGroup">திருத்துதல் குழு: <xliff:g>%s</xliff:g></string>
|
||||
<string name="debug_version_fmt">பதிப்பு: <xliff:g id="version">%s</xliff:g></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="expiryStateSentenceExpired">காலாவதியானது: <xliff:g>%s</xliff:g></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="importLoyaltyCardKeychainMessage">இறக்குமதி செய்ய உங்கள் <i>LoyaltyCardKeychain.csv</i> விசுவாச அட்டை சாவிக்கொத்திலிருந்து ஏற்றுமதி செய். \nமுதலில் அங்கு ஏற்றுமதியை அழுத்துவதன் மூலம் விசுவாச அட்டை சாவிக்கொத்தில் இறக்குமதி/ஏற்றுமதி பட்டியலிலிருந்து அதை உருவாக்கு.</string>
|
||||
<string name="validFromSentence">இதிலிருந்து செல்லுபடியாகும்: <xliff:g>%s</xliff:g></string>
|
||||
<string name="newBalanceSentence">புதிய இருப்பு: <xliff:g>%s</xliff:g></string>
|
||||
<string name="pageWithNumber">பக்கம் <xliff:g>%d</xliff:g></string>
|
||||
<string name="currentBalanceSentence">தற்போதைய இருப்பு: <xliff:g>%s</xliff:g></string>
|
||||
<string name="app_contributors">வழங்கியவர்: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="about_title_fmt">படம் <xliff:g>%s</xliff:g> பட்டைகுறியீடு</string>
|
||||
<string name="barcodeImageDescriptionWithType">படம் <xliff:g>%s</xliff:g> பட்டை குறியீடு</string>
|
||||
<string name="app_libraries">விடுதலை மூன்றாம் தரப்பு நூலகங்கள்: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">காலாவதியாகிறது: <xliff:g>%s</xliff:g></string>
|
||||
<string name="balanceSentence">இருப்பு: <xliff:g>%s</xliff:g></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>
|
||||
</plurals>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">பதிப்புரிமை © 2019–<xliff:g>%d</xliff:g> சில்வியா வான் ஓஎச் மற்றும் பங்களிப்பாளர்கள்</string>
|
||||
<string name="app_resources">விடுதலை மூன்றாம் தரப்பு வளங்கள்: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="groupsList">குழுக்கள்: <xliff:g>%s</xliff:g></string>
|
||||
<string name="sort_by_valid_from">இருந்து செல்லுபடியாகும்</string>
|
||||
</resources>
|
||||
@@ -305,4 +305,8 @@
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<string name="settings_automatic_column_count">Otomatik</string>
|
||||
<string name="settings_column_count_portrait">Portre modundaki sutunlar</string>
|
||||
</resources>
|
||||
<string name="unsupportedFile">Bu dosya desteklenmiyor</string>
|
||||
<string name="generic_error_please_retry">Üzgünüz, bir şeyler ters gitti, lütfen tekrar deneyin...</string>
|
||||
<string name="addFromPkpass">Bir Passbook dosyası seçin (.pkpass)</string>
|
||||
<string name="sort_by_valid_from">İtibaren Geçerli</string>
|
||||
</resources>
|
||||
|
||||
@@ -319,4 +319,5 @@
|
||||
<string name="unsupportedFile">Цей файл не підтримується</string>
|
||||
<string name="generic_error_please_retry">Вибачте, щось пішло не так, спробуйте ще раз...</string>
|
||||
<string name="addFromPkpass">Виберіть файл Passbook (.pkpass)</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Діє з</string>
|
||||
</resources>
|
||||
|
||||
@@ -302,4 +302,5 @@
|
||||
<string name="addFromPkpass">选择 Passbook 文件(.pkpass)</string>
|
||||
<string name="unsupportedFile">此文件不受支持</string>
|
||||
<string name="generic_error_please_retry">抱歉,某个东西出错了,请再试…</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">有效期开始日</string>
|
||||
</resources>
|
||||
|
||||
@@ -298,4 +298,8 @@
|
||||
<string name="settings_category_title_cards_overview">卡片概覽</string>
|
||||
<string name="settings_column_count_portrait">縱向模式下的列數</string>
|
||||
<string name="settings_column_count_landscape">横向模式下的列數</string>
|
||||
</resources>
|
||||
<string name="addFromPkpass">選擇 Passbook 檔案 (.pkpass)</string>
|
||||
<string name="unsupportedFile">不支援此檔案</string>
|
||||
<string name="generic_error_please_retry">抱歉,似乎出了點錯誤,請您再試一次...</string>
|
||||
<string name="sort_by_valid_from">有效期限開始日</string>
|
||||
</resources>
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
<string-array name="sort_types_array">
|
||||
<item>@string/sort_by_name</item>
|
||||
<item>@string/sort_by_most_recently_used</item>
|
||||
<item>@string/sort_by_valid_from</item>
|
||||
<item>@string/sort_by_expiry</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
@@ -140,6 +140,7 @@
|
||||
<item>nl</item>
|
||||
<item>oc</item>
|
||||
<item>pl</item>
|
||||
<item>pt</item>
|
||||
<item>pt-rBR</item>
|
||||
<item>pt-rPT</item>
|
||||
<item>ro-rRO</item>
|
||||
@@ -148,6 +149,7 @@
|
||||
<item>sl</item>
|
||||
<item>sr</item>
|
||||
<item>sv</item>
|
||||
<item>ta</item>
|
||||
<!-- <item>ti</item> -->
|
||||
<item>tr</item>
|
||||
<item>uk</item>
|
||||
|
||||
@@ -255,6 +255,7 @@
|
||||
<string name="barcodeLongPressMessage">Only images can be opened in the gallery app</string>
|
||||
<string name="sort_by_name">Name</string>
|
||||
<string name="sort_by_most_recently_used">Most Recently Used</string>
|
||||
<string name="sort_by_valid_from">Valid From</string>
|
||||
<string name="sort_by_expiry">Expiry</string>
|
||||
<!-- \"Reversed order\" is also OK. This is an option in the card sorting list -->
|
||||
<string name="reverse">…in reversed order</string>
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
<item name="alertDialogTheme">@style/ThemeOverlay.App.MaterialAlertDialog.Monet</item>
|
||||
|
||||
<item name="windowActionModeOverlay">true</item>
|
||||
|
||||
</style>
|
||||
|
||||
<style name="ThemeOverlay.App.MaterialAlertDialog.Monet" parent="ThemeOverlay.Material3.MaterialAlertDialog">
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
<locale android:name="nl" />
|
||||
<locale android:name="oc" />
|
||||
<locale android:name="pl" />
|
||||
<locale android:name="pt" />
|
||||
<locale android:name="pt-BR" />
|
||||
<locale android:name="pt-PT" />
|
||||
<locale android:name="ro-RO" />
|
||||
@@ -40,6 +41,7 @@
|
||||
<locale android:name="sl" />
|
||||
<locale android:name="sr" />
|
||||
<locale android:name="sv" />
|
||||
<locale android:name="ta" />
|
||||
<locale android:name="tr" />
|
||||
<locale android:name="uk" />
|
||||
<locale android:name="vi" />
|
||||
|
||||
171
app/src/test/java/protect/card_locker/AboutActivityTest.kt
Normal file
@@ -0,0 +1,171 @@
|
||||
package protect.card_locker
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import androidx.core.view.isVisible
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertNotNull
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Assert.fail
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.robolectric.Robolectric
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.Shadows.shadowOf
|
||||
import org.robolectric.shadows.ShadowActivity
|
||||
import org.robolectric.shadows.ShadowLog
|
||||
import java.lang.reflect.Method
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
class AboutActivityTest {
|
||||
private lateinit var activityController: org.robolectric.android.controller.ActivityController<AboutActivity>
|
||||
private lateinit var activity: AboutActivity
|
||||
private lateinit var shadowActivity: ShadowActivity
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
ShadowLog.stream = System.out
|
||||
activityController = Robolectric.buildActivity(AboutActivity::class.java)
|
||||
activity = activityController.get()
|
||||
shadowActivity = shadowOf(activity)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testActivityCreation() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Verify activity title is set correctly
|
||||
assertEquals(activity.title.toString(),
|
||||
activity.getString(R.string.about_title_fmt, activity.getString(R.string.app_name)))
|
||||
|
||||
// Check key elements are initialized
|
||||
assertNotNull(activity.findViewById(R.id.toolbar))
|
||||
assertNotNull(activity.findViewById(R.id.credits_sub))
|
||||
assertNotNull(activity.findViewById(R.id.version_history_sub))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testDisplayOptionsBasedOnConfig() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Test Google Play rate button visibility based on BuildConfig
|
||||
val rateButton = activity.findViewById<View>(R.id.rate)
|
||||
assertEquals(BuildConfig.showRateOnGooglePlay, rateButton.isVisible)
|
||||
|
||||
// Test donate button visibility based on BuildConfig
|
||||
val donateButton = activity.findViewById<View>(R.id.donate)
|
||||
assertEquals(BuildConfig.showDonate, donateButton.isVisible)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testClickListeners() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Test clicking on a link that opens external browser
|
||||
val repoButton = activity.findViewById<View>(R.id.repo)
|
||||
repoButton.performClick()
|
||||
|
||||
val startedIntent = shadowActivity.nextStartedActivity
|
||||
assertEquals(Intent.ACTION_VIEW, startedIntent.action)
|
||||
assertEquals(Uri.parse("https://github.com/CatimaLoyalty/Android/"),
|
||||
startedIntent.data)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testActivityDestruction() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Verify a view exists before destruction
|
||||
assertNotNull(activity.findViewById(R.id.credits_sub))
|
||||
|
||||
activityController.pause().stop().destroy()
|
||||
|
||||
// Verify activity was destroyed
|
||||
assertTrue(activity.isDestroyed)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testDialogContentMethods() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Use reflection to test private methods
|
||||
try {
|
||||
val showCreditsMethod: Method = AboutActivity::class.java.getDeclaredMethod("showCredits")
|
||||
showCreditsMethod.isAccessible = true
|
||||
showCreditsMethod.invoke(activity) // Should not throw exception
|
||||
|
||||
val showHistoryMethod: Method = AboutActivity::class.java.getDeclaredMethod("showHistory", View::class.java)
|
||||
showHistoryMethod.isAccessible = true
|
||||
showHistoryMethod.invoke(activity, activity.findViewById(R.id.version_history)) // Should not throw exception
|
||||
} catch (e: Exception) {
|
||||
fail("Exception when calling dialog methods: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testExternalBrowserWithDifferentURLs() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
try {
|
||||
// Get access to the private method
|
||||
val openExternalBrowserMethod: Method = AboutActivity::class.java.getDeclaredMethod("openExternalBrowser", View::class.java)
|
||||
openExternalBrowserMethod.isAccessible = true
|
||||
|
||||
// Create test URLs
|
||||
val testUrls = arrayOf(
|
||||
"https://hosted.weblate.org/engage/catima/",
|
||||
"https://github.com/CatimaLoyalty/Android/blob/main/LICENSE",
|
||||
"https://catima.app/privacy-policy/",
|
||||
"https://github.com/CatimaLoyalty/Android/issues"
|
||||
)
|
||||
|
||||
for (url in testUrls) {
|
||||
// Create a View with the URL as tag
|
||||
val testView = View(activity)
|
||||
testView.tag = url
|
||||
|
||||
// Call the method directly
|
||||
openExternalBrowserMethod.invoke(activity, testView)
|
||||
|
||||
// Verify the intent
|
||||
val intent = shadowActivity.nextStartedActivity
|
||||
assertNotNull("No intent launched for URL: $url", intent)
|
||||
assertEquals(Intent.ACTION_VIEW, intent.action)
|
||||
assertEquals(Uri.parse(url), intent.data)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
fail("Exception during reflection: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testButtonVisibilityBasedOnBuildConfig() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Get the current values from BuildConfig
|
||||
val showRateOnGooglePlay = BuildConfig.showRateOnGooglePlay
|
||||
val showDonate = BuildConfig.showDonate
|
||||
|
||||
// Test that the visibility matches the BuildConfig values
|
||||
assertEquals(showRateOnGooglePlay, activity.findViewById<View>(R.id.rate).isVisible)
|
||||
assertEquals(showDonate, activity.findViewById<View>(R.id.donate).isVisible)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testAboutScreenTextContent() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Verify that text fields contain the expected content
|
||||
val creditsSub = activity.findViewById<TextView>(R.id.credits_sub)
|
||||
assertNotNull(creditsSub.text)
|
||||
assertFalse(creditsSub.text.toString().isEmpty())
|
||||
|
||||
val versionHistorySub = activity.findViewById<TextView>(R.id.version_history_sub)
|
||||
assertNotNull(versionHistorySub.text)
|
||||
assertFalse(versionHistorySub.text.toString().isEmpty())
|
||||
}
|
||||
}
|
||||
@@ -176,6 +176,69 @@ class PkpassTest {
|
||||
Assert.assertTrue(imageBitmap.sameAs(parser.image))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFakeEmptyEurowingsPassForGitHubIssue2317() {
|
||||
// Prepare
|
||||
val context: Context = ApplicationProvider.getApplicationContext()
|
||||
val pkpass = "pkpass/Eurowings_fake_empty_for_gh_issue_2317/Eurowings.pkpass"
|
||||
val image = "pkpass/Eurowings_fake_empty_for_gh_issue_2317/logo@2x.png"
|
||||
|
||||
val pkpassUri = Uri.parse(pkpass)
|
||||
val imageUri = Uri.parse(image)
|
||||
ShadowContentResolver().registerInputStream(pkpassUri, javaClass.getResourceAsStream(pkpass))
|
||||
ShadowContentResolver().registerInputStream(imageUri, javaClass.getResourceAsStream(image))
|
||||
|
||||
val parser = PkpassParser(context, pkpassUri)
|
||||
val imageBitmap = BitmapFactory.decodeStream(context.contentResolver.openInputStream(imageUri))
|
||||
|
||||
// Confirm this does not have languages
|
||||
Assert.assertEquals(listOf("de", "en"), parser.listLocales())
|
||||
|
||||
// Confirm correct parsing (en)
|
||||
var parsedCard = parser.toLoyaltyCard("de")
|
||||
|
||||
Assert.assertEquals(-1, parsedCard.id)
|
||||
Assert.assertEquals("EUROWINGS", parsedCard.store)
|
||||
Assert.assertEquals("Eurowings Boarding Pass", parsedCard.note)
|
||||
Assert.assertEquals(Date(1567911600000), parsedCard.validFrom)
|
||||
Assert.assertEquals(null, parsedCard.expiry)
|
||||
Assert.assertEquals(BigDecimal(0), parsedCard.balance)
|
||||
Assert.assertEquals(null, parsedCard.balanceType)
|
||||
Assert.assertEquals("M1DOE/JOHN JBZPPP CGNDBVEW 0954 251A012D0073 148>5181W 9250BEW 00000000000002A0000000000000 0 N", parsedCard.cardId)
|
||||
Assert.assertEquals(null, parsedCard.barcodeId)
|
||||
Assert.assertEquals(BarcodeFormat.AZTEC, parsedCard.barcodeType!!.format())
|
||||
Assert.assertEquals(Color.parseColor("#FFFFFF"), parsedCard.headerColor)
|
||||
Assert.assertEquals(0, parsedCard.starStatus)
|
||||
Assert.assertEquals(0, parsedCard.archiveStatus)
|
||||
Assert.assertEquals(0, parsedCard.lastUsed)
|
||||
Assert.assertEquals(DBHelper.DEFAULT_ZOOM_LEVEL, parsedCard.zoomLevel)
|
||||
|
||||
// Confirm correct image is used
|
||||
Assert.assertTrue(imageBitmap.sameAs(parser.image))
|
||||
|
||||
// Confirm correct parsing (en)
|
||||
parsedCard = parser.toLoyaltyCard("en")
|
||||
|
||||
Assert.assertEquals(-1, parsedCard.id)
|
||||
Assert.assertEquals("EUROWINGS", parsedCard.store)
|
||||
Assert.assertEquals("Eurowings Boarding Pass", parsedCard.note)
|
||||
Assert.assertEquals(Date(1567911600000), parsedCard.validFrom)
|
||||
Assert.assertEquals(null, parsedCard.expiry)
|
||||
Assert.assertEquals(BigDecimal(0), parsedCard.balance)
|
||||
Assert.assertEquals(null, parsedCard.balanceType)
|
||||
Assert.assertEquals("M1DOE/JOHN JBZPPP CGNDBVEW 0954 251A012D0073 148>5181W 9250BEW 00000000000002A0000000000000 0 N", parsedCard.cardId)
|
||||
Assert.assertEquals(null, parsedCard.barcodeId)
|
||||
Assert.assertEquals(BarcodeFormat.AZTEC, parsedCard.barcodeType!!.format())
|
||||
Assert.assertEquals(Color.parseColor("#FFFFFF"), parsedCard.headerColor)
|
||||
Assert.assertEquals(0, parsedCard.starStatus)
|
||||
Assert.assertEquals(0, parsedCard.archiveStatus)
|
||||
Assert.assertEquals(0, parsedCard.lastUsed)
|
||||
Assert.assertEquals(DBHelper.DEFAULT_ZOOM_LEVEL, parsedCard.zoomLevel)
|
||||
|
||||
// Confirm correct image is used
|
||||
Assert.assertTrue(imageBitmap.sameAs(parser.image))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testDCBPkPass() {
|
||||
// Prepare
|
||||
|
||||
|
After Width: | Height: | Size: 7.5 KiB |
@@ -1,9 +1,9 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
plugins {
|
||||
id("com.android.application") version "8.7.3" apply false
|
||||
id("com.android.application") version "8.9.1" apply false
|
||||
id("com.github.spotbugs") version "5.1.4" apply false
|
||||
id("org.jetbrains.kotlin.android") version "2.1.0" apply false
|
||||
id("org.jetbrains.kotlin.android") version "2.1.10" apply false
|
||||
}
|
||||
|
||||
allprojects {
|
||||
|
||||
40
build.sh
@@ -3,7 +3,7 @@ set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
### build.sh
|
||||
### Builds Catima the same way F-Droid does for reproducible builds
|
||||
### Builds Catima the same way rbtlog/IzzyOnDroid does for reproducible builds
|
||||
|
||||
if [ -z "${ANDROID_SDK_ROOT:-}" ]; then
|
||||
echo "ANDROID_SDK_ROOT is not set, setting to $HOME/Android/Sdk";
|
||||
@@ -25,7 +25,11 @@ echo "Starting build"
|
||||
./gradlew clean assembleRelease
|
||||
|
||||
echo "Build finished (unsigned)"
|
||||
echo "Your build is at app/build/outputs/apk/release/app-release-unsigned.apk"
|
||||
flavourDirs=$(find app/build/outputs/apk/ -mindepth 1 -maxdepth 1 -type d)
|
||||
for flavourDir in $flavourDirs; do
|
||||
flavourName="$(basename "$flavourDir")"
|
||||
echo "Your $flavourName flavour is at $flavourDir/release/app-$flavourName-release-unsigned.apk"
|
||||
done
|
||||
|
||||
if [ -z "${KEYSTORE:-}" ]; then
|
||||
echo "KEYSTORE not set, skipping signing..."
|
||||
@@ -36,16 +40,26 @@ else
|
||||
fi
|
||||
|
||||
apksigner_version="$(ls -1 "$HOME/Android/Sdk/build-tools/" | tail -n 1)"
|
||||
cp app/build/outputs/apk/release/app-release-unsigned.apk app/build/outputs/apk/release/app-release.apk
|
||||
"$HOME/Android/Sdk/build-tools/$apksigner_version/apksigner" sign -v --ks "$KEYSTORE" --ks-key-alias "$KEYSTORE_ALIAS" app/build/outputs/apk/release/app-release.apk
|
||||
|
||||
echo "Build finished (signed)"
|
||||
echo "Your build is at app/build/outputs/apk/release/app-release.apk"
|
||||
for flavourDir in $flavourDirs; do
|
||||
flavourName="$(basename "$flavourDir")"
|
||||
echo "Signing $flavourName flavour..."
|
||||
cp "$flavourDir/release/app-$flavourName-release-unsigned.apk" "$flavourDir/release/app-$flavourName-release.apk"
|
||||
"$HOME/Android/Sdk/build-tools/$apksigner_version/apksigner" sign -v --ks "$KEYSTORE" --ks-key-alias "$KEYSTORE_ALIAS" "$flavourDir/release/app-$flavourName-release.apk"
|
||||
|
||||
echo "Build finished (signed)"
|
||||
echo "Your $flavourName flavour is at $flavourDir/release/app-$flavourName-release.apk"
|
||||
done
|
||||
|
||||
shasumPath="$(pwd)/SHA256SUMS"
|
||||
echo "" > "$shasumPath"
|
||||
|
||||
for flavourDir in $flavourDirs; do
|
||||
pushd "$flavourDir/release/"
|
||||
sha256sum -- *.apk >> "$shasumPath"
|
||||
popd
|
||||
done
|
||||
|
||||
echo "SHA256SUMS generated"
|
||||
echo "Your SHA256SUMS are at SHA256SUMS"
|
||||
fi
|
||||
|
||||
pushd app/build/outputs/apk/release/
|
||||
sha256sum -- *.apk > SHA256SUMS
|
||||
popd
|
||||
|
||||
echo "SHA256SUMS generated"
|
||||
echo "Your SHA256SUMS is at app/build/outputs/apk/release/SHA256SUMS"
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
3. Update `CHANGELOG.md` with the new version name and the release date
|
||||
4. Update `app/build.gradle.kts` with the new `versionCode` and `versionName`
|
||||
5. Create a commit for the new release: `git add CHANGELOG.md app/build.gradle.kts && git commit -m "Release Catima <VERSION>"`
|
||||
6. Build a new .apk: `KEYSTORE=/path/to/keystore KEYSTORE_ALIAS=catima ./build.sh`
|
||||
7. Upload the APK to Google Play Open Testing
|
||||
6. Build the new .apks: `KEYSTORE=/path/to/keystore KEYSTORE_ALIAS=catima ./build.sh`
|
||||
7. Upload `app/build/outputs/apk/gplay/release/app-gplay-release.apk` to Google Play Open Testing
|
||||
8. Push the version update commit: `git push`
|
||||
9. Create a new release on GitHub and attach the `app-release.apk` and `SHA256SUMS` files
|
||||
9. Create a new release on GitHub and attach the `app/build/outputs/apk/foss/release/app-foss-release.apk` and `SHA256SUMS` files
|
||||
10. After the release has been approved on Google Play Production, update the metadata there: `bundle exec fastlane supply --version_code <VERSION_CODE>`
|
||||
|
||||
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 48 KiB |
3
fastlane/metadata/android/ca/changelogs/10.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Cambiat el nom per defecte en la exportació. (pull #84 (https://github.com/brarcher/loyalty-card-locker/pull/84))
|
||||
- Corregits els literals en la pàgina d'importació/exportació. (pull #87 (https://github.com/brarcher/loyalty-card-locker/pull/87))
|
||||
- Millores en l'estructura de la pàgina de visualització de targetes. El text hauria de ser més senzill de llegir i es pot seleccionar amb un clic llarg. (pull #91 (https://github.com/brarcher/loyalty-card-locker/pull/91))
|
||||
2
fastlane/metadata/android/ca/changelogs/100.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- La cerca s'amaga, els botons expandir i ordenar només es mostren quan hi ha contingut
|
||||
- Arreglos en els temes
|
||||