mirror of
https://github.com/CatimaLoyalty/Android.git
synced 2025-12-24 15:47:53 -05:00
Compare commits
135 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
76
.github/workflows/android.yml
vendored
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 34)
|
||||
uses: ReactiveCircus/android-emulator-runner@v2
|
||||
with:
|
||||
api-level: 34
|
||||
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.0
|
||||
with:
|
||||
name: test-results-flavor${{ matrix.flavor }}
|
||||
path: app/build/reports
|
||||
|
||||
2
.github/workflows/changelog-to-fastlane.yml
vendored
2
.github/workflows/changelog-to-fastlane.yml
vendored
@@ -35,7 +35,7 @@ jobs:
|
||||
- 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.6
|
||||
with:
|
||||
title: "Update Fastlane changelogs"
|
||||
commit-message: "Update Fastlane changelogs"
|
||||
|
||||
2
.github/workflows/contributors-to-file.yml
vendored
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.6
|
||||
with:
|
||||
title: "Update contributors"
|
||||
commit-message: "Update contributors"
|
||||
|
||||
@@ -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.6
|
||||
with:
|
||||
title: "Update feature graphic"
|
||||
commit-message: "Update feature graphic"
|
||||
|
||||
2
.github/workflows/gradle-update.yml
vendored
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.6
|
||||
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
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.6
|
||||
with:
|
||||
title: "Update locales"
|
||||
commit-message: "Update locales"
|
||||
|
||||
3
.gitignore
vendored
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
|
||||
|
||||
10
CHANGELOG.md
10
CHANGELOG.md
@@ -1,5 +1,15 @@
|
||||
# Changelog
|
||||
|
||||
## 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
|
||||
|
||||
128
CODE_OF_CONDUCT.md
Normal file
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.
|
||||
@@ -16,21 +16,24 @@ spotbugs {
|
||||
|
||||
android {
|
||||
namespace = "protect.card_locker"
|
||||
compileSdk = 34
|
||||
compileSdk = 35
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "me.hackerchick.catima"
|
||||
minSdk = 21
|
||||
targetSdk = 34
|
||||
versionCode = 143
|
||||
versionName = "2.34.1"
|
||||
targetSdk = 35
|
||||
versionCode = 145
|
||||
versionName = "2.34.3"
|
||||
|
||||
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-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
|
||||
@@ -94,13 +112,13 @@ 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.core:core-ktx:1.15.0")
|
||||
implementation("androidx.core:core-splashscreen:1.0.1")
|
||||
implementation("androidx.exifinterface:exifinterface:1.3.7")
|
||||
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.4")
|
||||
|
||||
// Third-party
|
||||
implementation("com.journeyapps:zxing-android-embedded:4.3.0@aar")
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -45,11 +45,10 @@ public class AboutActivity extends CatimaAppCompatActivity {
|
||||
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);
|
||||
binding.rate.setVisibility(BuildConfig.showRateOnGooglePlay ? 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);
|
||||
binding.donate.setVisibility(BuildConfig.showDonate ? View.VISIBLE : View.GONE);
|
||||
|
||||
bindClickListeners();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -500,7 +500,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");
|
||||
|
||||
@@ -1032,21 +1032,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);
|
||||
}
|
||||
|
||||
@@ -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
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"
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
android:layout_height="fill_parent"
|
||||
android:fitsSystemWindows="true">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="fill_parent"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true">
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="true">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="true">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
@@ -25,7 +26,8 @@
|
||||
android:layout_marginBottom="100dp"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginStart="0dp"
|
||||
android:layout_marginEnd="0dp">
|
||||
android:layout_marginEnd="0dp"
|
||||
android:fitsSystemWindows="true">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/icon_container"
|
||||
@@ -147,7 +149,8 @@
|
||||
android:id="@+id/fullscreen_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
android:orientation="vertical"
|
||||
android:fitsSystemWindows="false">
|
||||
|
||||
<ImageView
|
||||
android:importantForAccessibility="no"
|
||||
@@ -206,13 +209,13 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:contentInsetLeft="0dp"
|
||||
app:contentInsetStart="0dp"
|
||||
app:contentInsetRight="0dp"
|
||||
app:contentInsetEnd="0dp"
|
||||
app:fabAlignmentMode="center">
|
||||
app:fabAlignmentMode="center"
|
||||
app:fabCradleVerticalOffset="2dp"
|
||||
android:fitsSystemWindows="true">
|
||||
|
||||
<LinearLayout
|
||||
android:paddingTop="12dp"
|
||||
android:paddingBottom="12dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layoutDirection="ltr">
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:context=".ScanActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
|
||||
@@ -21,52 +21,58 @@ laralem
|
||||
Joel A
|
||||
Taco
|
||||
pfaffenrodt
|
||||
Aayush Gupta
|
||||
Scrambled777
|
||||
HudobniVolk
|
||||
Giovanni Donisi
|
||||
Nyatsuki
|
||||
Priit Jõerüüt
|
||||
B o d o
|
||||
Jiri Grönroos
|
||||
Максим Горпиніч
|
||||
Aayush Gupta
|
||||
B o d o
|
||||
Scrambled777
|
||||
Priit Jõerüüt
|
||||
Giovanni Donisi
|
||||
HudobniVolk
|
||||
Nyatsuki
|
||||
Jiri Grönroos
|
||||
ikanakova
|
||||
Samantaz Fox
|
||||
Balázs Meskó
|
||||
Milo Ivir
|
||||
Arno-github
|
||||
Ankit Tiwari
|
||||
Cliff Heraldo
|
||||
Sergio Paredes
|
||||
Ankit Tiwari
|
||||
Arno-github
|
||||
Milo Ivir
|
||||
Balázs Meskó
|
||||
Jose Delvani
|
||||
mdvhimself
|
||||
Milan Šalka
|
||||
ikanakova
|
||||
Skrripy
|
||||
josé m
|
||||
huuhaa
|
||||
Skrripy
|
||||
Edgars Andersons
|
||||
Kachelkaiser
|
||||
Projjal Moitra
|
||||
Quentin PAGÈS
|
||||
ngocanhtve
|
||||
Silvério Santos
|
||||
waffshappen
|
||||
Marnick L'Eau
|
||||
Silvério Santos
|
||||
ngocanhtve
|
||||
Quentin PAGÈS
|
||||
Projjal Moitra
|
||||
Kachelkaiser
|
||||
Robin
|
||||
Ziad OUALHADJ
|
||||
Denis Shilin
|
||||
Robin Liu
|
||||
Renko
|
||||
Denis Shilin
|
||||
しいたけ
|
||||
Alexander Ivanov
|
||||
Miha Frangež
|
||||
Viet Nguyen Hoang
|
||||
தமிழ் நேரம்
|
||||
stavpup
|
||||
josé m
|
||||
ehrt74
|
||||
Virginie
|
||||
MisterCosta96
|
||||
arshbeerSingh
|
||||
Freddo espresso
|
||||
Govind S Nair
|
||||
Kim Seohyun
|
||||
Vasilis
|
||||
Tim Trek
|
||||
rudy3
|
||||
Peter Dave Hello
|
||||
Michael Gangolf
|
||||
rudy3
|
||||
Kim Seohyun
|
||||
Govind S Nair
|
||||
Freddo espresso
|
||||
Augustin LAVILLE
|
||||
arshbeerSingh
|
||||
MisterCosta96
|
||||
|
||||
@@ -14,4 +14,5 @@
|
||||
<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>
|
||||
<string name="app_name">Catima</string>
|
||||
</resources>
|
||||
@@ -300,4 +300,18 @@
|
||||
<string name="useFrontImage">Použijte přední obrázek</string>
|
||||
<string name="settings_use_volume_keys_navigation_summary">Pomocí tlačítek hlasitosti můžete změnit, která karta se zobrazí</string>
|
||||
<string name="settings_use_volume_keys_navigation">Přepínat karty pomocí tlačítek hlasitosti</string>
|
||||
<string name="generic_error_please_retry">Je nám líto, něco se pokazilo, zkuste to prosím znovu...</string>
|
||||
<string name="settings_column_count_portrait">Sloupce v režimu na výšku</string>
|
||||
<string name="settings_automatic_column_count">Automatický</string>
|
||||
<string name="addFromPkpass">Vyberte soubor Passbook (.pkpass)</string>
|
||||
<string name="unsupportedFile">Tento soubor není podporován</string>
|
||||
<string name="settings_category_title_cards_overview">Přehled karet</string>
|
||||
<string name="settings_column_count_landscape">Sloupce v režimu na šířku</string>
|
||||
<string name="settings_column_count_1">1</string>
|
||||
<string name="settings_column_count_2">2</string>
|
||||
<string name="settings_column_count_3">3</string>
|
||||
<string name="settings_column_count_6">6</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<string name="settings_column_count_4">4</string>
|
||||
<string name="settings_column_count_5">5</string>
|
||||
</resources>
|
||||
@@ -305,4 +305,7 @@
|
||||
<string name="settings_column_count_4">4</string>
|
||||
<string name="settings_column_count_5">5</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<string name="addFromPkpass">Valitse Passbook-tiedosto (.pkpass)</string>
|
||||
<string name="unsupportedFile">Tämä tiedosto ei ole tuettu</string>
|
||||
<string name="generic_error_please_retry">Pahoittelut, jokin meni pieleen. Yritä uudelleen...</string>
|
||||
</resources>
|
||||
@@ -311,4 +311,7 @@
|
||||
<string name="settings_automatic_column_count">Automatique</string>
|
||||
<string name="settings_column_count_6">6</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<string name="addFromPkpass">Sélectionner un fichier Cartes / Passbook (.pkpass)</string>
|
||||
<string name="unsupportedFile">Ce fichier n\'est pas supporté</string>
|
||||
<string name="generic_error_please_retry">Désolé, un problème est survenu, veuillez réessayer...</string>
|
||||
</resources>
|
||||
@@ -299,4 +299,7 @@
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<string name="addFromPdfFile">Elixe un ficheiro PDF</string>
|
||||
<string name="errorReadingFile">Non se puido ler o ficheiro</string>
|
||||
<string name="unsupportedFile">Este ficheiro non é compatible</string>
|
||||
<string name="addFromPkpass">Selecciona un ficheiro Passbook (.pkpass)</string>
|
||||
<string name="generic_error_please_retry">Sentímolo, pero algo fallou, inténtao outra vez…</string>
|
||||
</resources>
|
||||
@@ -298,4 +298,14 @@
|
||||
<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>
|
||||
<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>
|
||||
</resources>
|
||||
@@ -299,4 +299,7 @@
|
||||
<string name="settings_column_count_1">1</string>
|
||||
<string name="settings_column_count_4">4</string>
|
||||
<string name="settings_column_count_5">5</string>
|
||||
<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>
|
||||
</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>
|
||||
|
||||
@@ -305,4 +305,7 @@
|
||||
<string name="settings_column_count_2">2</string>
|
||||
<string name="settings_column_count_3">3</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<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>
|
||||
</resources>
|
||||
@@ -315,6 +315,9 @@
|
||||
<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>
|
||||
<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>
|
||||
</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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -1,2 +1,305 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<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>
|
||||
</resources>
|
||||
@@ -285,7 +285,7 @@
|
||||
<string name="enter_card_id">Введіть 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_message">У деяких магазинах значення штрихкоду відрізняється від номера, записаного на картці. Через це введення штрихкоду вручну може не завжди спрацювати. Наполегливо рекомендуємо відсканувати штрихкод за допомогою камери. Ви все ще хочете продовжити?</string>
|
||||
<string name="continue_">Продовжити</string>
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
<string name="setBarcodeHeight">設定條碼高度</string>
|
||||
<string name="app_copyright_short">著作權所有© Sylvia van Os與其他貢獻者</string>
|
||||
<string name="permissionReadCardsLabel">讀取Catima卡片</string>
|
||||
<string name="app_name">Catima</string>
|
||||
<string name="app_name">卡提碼</string>
|
||||
<string name="permissionReadCardsDescription">讀取Catima卡片及卡片資訊,包含註記與圖片</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card_summary">觀看卡片時避免螢幕鎖定</string>
|
||||
<string name="settings_allow_content_provider_read_summary">其他程式仍然需要取得權限</string>
|
||||
@@ -298,4 +298,7 @@
|
||||
<string name="settings_category_title_cards_overview">卡片概覽</string>
|
||||
<string name="settings_column_count_portrait">縱向模式下的列數</string>
|
||||
<string name="settings_column_count_landscape">横向模式下的列數</string>
|
||||
<string name="addFromPkpass">選擇 Passbook 檔案 (.pkpass)</string>
|
||||
<string name="unsupportedFile">不支援此檔案</string>
|
||||
<string name="generic_error_please_retry">抱歉,似乎出了點錯誤,請您再試一次...</string>
|
||||
</resources>
|
||||
@@ -148,7 +148,7 @@
|
||||
<item>sl</item>
|
||||
<item>sr</item>
|
||||
<item>sv</item>
|
||||
<!-- <item>ta</item> -->
|
||||
<item>ta</item>
|
||||
<!-- <item>ti</item> -->
|
||||
<item>tr</item>
|
||||
<item>uk</item>
|
||||
|
||||
@@ -40,6 +40,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" />
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// 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.8.0" apply false
|
||||
id("com.github.spotbugs") version "5.1.4" apply false
|
||||
id("org.jetbrains.kotlin.android") version "2.1.0" apply false
|
||||
}
|
||||
|
||||
40
build.sh
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>`
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
- Možnost navigace po kartách pomocí tlačítek hlasitosti
|
||||
- Možnost procházet kartami pomocí tlačítek hlasitosti
|
||||
- Oprava importu Stocard
|
||||
- Oprava zprávy "Import zrušen" objevující se po úspěšném importu
|
||||
|
||||
1
fastlane/metadata/android/cs-CZ/changelogs/140.txt
Normal file
1
fastlane/metadata/android/cs-CZ/changelogs/140.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Oprava zalamování textu v dialogovém okně Přidat
|
||||
4
fastlane/metadata/android/cs-CZ/changelogs/141.txt
Normal file
4
fastlane/metadata/android/cs-CZ/changelogs/141.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
- Změňte výchozí sloupec na širokoúhlých obrazovkách na 4
|
||||
- Povolit přepsání počtu sloupců pro výšku a na šířku v nastavení
|
||||
- Při otáčení obrazovky nebo otevírání karty ponechejte filtr vyhledávání na hlavní obrazovce
|
||||
- Omezte maximální délku zobrazení poznámky na hlavní obrazovce
|
||||
3
fastlane/metadata/android/cs-CZ/changelogs/142.txt
Normal file
3
fastlane/metadata/android/cs-CZ/changelogs/142.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Přidejte podporu Passbook (.pkpass).
|
||||
- Oprava importu transparentních souborů PDF
|
||||
- Zlepšení zobrazení průhledných miniatur
|
||||
1
fastlane/metadata/android/cs-CZ/changelogs/143.txt
Normal file
1
fastlane/metadata/android/cs-CZ/changelogs/143.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Oprava pádu při otevírání neplatných souborů pkpass
|
||||
1
fastlane/metadata/android/cs-CZ/changelogs/144.txt
Normal file
1
fastlane/metadata/android/cs-CZ/changelogs/144.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Zlepšení zobrazení ikon archivu/hvězdiček
|
||||
1
fastlane/metadata/android/cs-CZ/changelogs/145.txt
Normal file
1
fastlane/metadata/android/cs-CZ/changelogs/145.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Cíl Android 15
|
||||
1
fastlane/metadata/android/de-DE/changelogs/143.txt
Normal file
1
fastlane/metadata/android/de-DE/changelogs/143.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Behebt Absturz beim Öffnen ungültiger pkpass-Dateien
|
||||
1
fastlane/metadata/android/de-DE/changelogs/144.txt
Normal file
1
fastlane/metadata/android/de-DE/changelogs/144.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Verbesserte Anzeige der Symbole Archiv/Favoriten
|
||||
3
fastlane/metadata/android/de-DE/changelogs/145.txt
Normal file
3
fastlane/metadata/android/de-DE/changelogs/145.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Ziel Android 15
|
||||
- Die Tastatur verdeckt jetzt nicht mehr den "Speichern"-Button im Bearbeitungsbildschirm
|
||||
- Einige pkpass-Dateien wurden nicht als pkpass erkannt (Unterstützung des Mime-Typs application/vnd-com.apple.pkpass)
|
||||
@@ -1,7 +1,7 @@
|
||||
Schluss mit der Suche nach Kundenkarten aus Plastik beim Bezahlen im Geschäft oder Webshop.
|
||||
<b>Speichere Barcodes mit der Kamera auf dein Gerät und vergesse deine Karten.</b>
|
||||
<b>Speichere Barcodes mit der Kamera auf dein Gerät und vergiss deine Karten.</b>
|
||||
|
||||
Lass deine Geldbörse daheim, oder schaffe wenigstens viel Platz für die wichtigen Wertsachen.
|
||||
Lass deine Geldbörse daheim oder schaffe zumindest Platz für die wichtigen Wertsachen.
|
||||
|
||||
Mit diesem unverzichtbaren Programm schaffst du Platz für Bargeld statt für nutzloses Plastik.
|
||||
|
||||
@@ -11,12 +11,12 @@ Mit diesem unverzichtbaren Programm schaffst du Platz für Bargeld statt für nu
|
||||
- Importiere Karten und Codes aus Dateien, von Catima, FidMe, Loyalty Card Keychain, Stocard oder Voucher Vault.
|
||||
- Erstelle ein Backup aller deiner Karten und übertrage diese auf ein neues Gerät.
|
||||
- Teile Gutscheine, exklusive Angebote, Werbeaktionscodes oder Karten und sonstige Codes mit allen Apps.
|
||||
- Dunkles Design und Barrierefreiheit für sehbehinderte Nutzer.
|
||||
- Dunkles Design und Barrierefreiheit für Nutzer mit Sehbehinderung.
|
||||
- Von der Freien-Software-Gemeinschaft für alle Menschen gemacht.
|
||||
- Lokalisierte, menschliche Übersetzungen für mehr als 40 Sprachen.
|
||||
- Kostenlos, unterstützt durch Gemeinschaftsbeiträge.
|
||||
- Verwende, prüfe, ändere und teile die App, wie du willst; <i>mit allen</i>.
|
||||
- Nicht nur freie und quelloffene Software. Eine freie, <i>Copylefted</i> Software-Kartenverwaltung (GPLv3+).
|
||||
|
||||
Vereinfache dein Leben und deine Einkäufe, und verliere nie wieder einen Beleg, eine Gutscheinkarte oder ein Flugticket.
|
||||
Habe deine Prämien und Boni immer bei dir, und spare unterwegs.
|
||||
Vereinfache dein Leben und deine Einkäufe – verliere nie wieder einen Beleg, eine Gutscheinkarte oder ein Flugticket.
|
||||
Nimm deine Prämien und Boni mit und spare unterwegs.
|
||||
|
||||
1
fastlane/metadata/android/en-US/changelogs/144.txt
Normal file
1
fastlane/metadata/android/en-US/changelogs/144.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Improve archive/starred icon display
|
||||
3
fastlane/metadata/android/en-US/changelogs/145.txt
Normal file
3
fastlane/metadata/android/en-US/changelogs/145.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- 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)
|
||||
3
fastlane/metadata/android/et/changelogs/139.txt
Normal file
3
fastlane/metadata/android/et/changelogs/139.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Lisasime võimaluse liikuda kaartide vahel helivaljuse nuppudega
|
||||
- Parandasime Stocardi impordi vead
|
||||
- Parandasime "Import on katkestatud" vea peale õnnestunud importi
|
||||
3
fastlane/metadata/android/et/changelogs/142.txt
Normal file
3
fastlane/metadata/android/et/changelogs/142.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Lisasime Passbooki failide (.pkpass) toe
|
||||
- Parandasime läbipaistvate pdf-failide importimise
|
||||
- Parandasime läbipaistvate pisipiltide kuvamist
|
||||
1
fastlane/metadata/android/et/changelogs/143.txt
Normal file
1
fastlane/metadata/android/et/changelogs/143.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Parandasime rakenduse kokkujooksmise vigase pkpass-faili avamisel
|
||||
1
fastlane/metadata/android/et/changelogs/144.txt
Normal file
1
fastlane/metadata/android/et/changelogs/144.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Parandasime arhiveeritud/lemmik ikoonide kuvamise
|
||||
3
fastlane/metadata/android/et/changelogs/145.txt
Normal file
3
fastlane/metadata/android/et/changelogs/145.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Alusplatvorm on nüüd Android 15
|
||||
- Parandasime olukorra, kus klahvistik kattis muutmisvaates salvestusnupu
|
||||
- Parandasime olukorra, kus mõned pkpass failid jäid tuvastamata (application/vnd-com.apple.pkpass mime-tüüpi tugi)
|
||||
1
fastlane/metadata/android/et/changelogs/98.txt
Normal file
1
fastlane/metadata/android/et/changelogs/98.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Parandasime erinevad TalkBacki vead
|
||||
1
fastlane/metadata/android/et/changelogs/99.txt
Normal file
1
fastlane/metadata/android/et/changelogs/99.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Võtsime kasutusele Material You kujunduskeele
|
||||
1
fastlane/metadata/android/fr-FR/changelogs/140.txt
Normal file
1
fastlane/metadata/android/fr-FR/changelogs/140.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Corriger le retour à la ligne sur la fenêtre d'ajout
|
||||
@@ -1,2 +1,4 @@
|
||||
- Modifier la colonne par défaut sur les écrans larges à 4
|
||||
- Modifie la colonne par défaut sur les écrans larges à 4
|
||||
- Permet de surcharger le nombre de colonnes pour le portrait et le paysage dans les paramètres
|
||||
- Conserve le filtre de recherche de l'écran principal lors de la rotation de l'écran ou de l'ouverture d'une carte
|
||||
- Limite la longueur maximale de l'affichage des notes sur l'écran principal
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
- Ajoute le support des fichiers Cartes / Passbook (.pkpass)
|
||||
- Corrige l'import des fiches PDF transparents
|
||||
- Améliorer l'affichage des miniatures transparentes
|
||||
|
||||
1
fastlane/metadata/android/fr-FR/changelogs/143.txt
Normal file
1
fastlane/metadata/android/fr-FR/changelogs/143.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Correction d'un crash lors de l'ouverture de fichiers pkpass invalides
|
||||
1
fastlane/metadata/android/fr-FR/changelogs/144.txt
Normal file
1
fastlane/metadata/android/fr-FR/changelogs/144.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Améliorer l'affichage des icônes d'archive/étoile
|
||||
1
fastlane/metadata/android/gl-ES/changelogs/143.txt
Normal file
1
fastlane/metadata/android/gl-ES/changelogs/143.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Arranxo do problema ao abrir ficheiros pkpass
|
||||
1
fastlane/metadata/android/gl-ES/changelogs/144.txt
Normal file
1
fastlane/metadata/android/gl-ES/changelogs/144.txt
Normal file
@@ -0,0 +1 @@
|
||||
- mellora da aparencia da icona arquivar/estrela
|
||||
3
fastlane/metadata/android/gl-ES/changelogs/145.txt
Normal file
3
fastlane/metadata/android/gl-ES/changelogs/145.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- versión obxectivo Android 15
|
||||
- solución a teclado que tapa o botón gardar na pantalla de edición
|
||||
- solución a que non detectaba algúns ficheiros .pkpass como tales (compatibilidade co tipo mime application/vnd-com.apple.pkpass)
|
||||
4
fastlane/metadata/android/gl-ES/changelogs/91.txt
Normal file
4
fastlane/metadata/android/gl-ES/changelogs/91.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
- mellora na xestión dos grupos
|
||||
- pódense recortar as imaxes
|
||||
- solución da perda de datos da imaxe ao gardar despois de rotar na edición
|
||||
- pódese poñer unha imaxe persoal como icona da tarxeta
|
||||
2
fastlane/metadata/android/gl-ES/changelogs/92.txt
Normal file
2
fastlane/metadata/android/gl-ES/changelogs/92.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- nova disposición da pantalla principal
|
||||
- arranxo do tamaño da parte inferior cando se entraba e saía de pantalla completa
|
||||
2
fastlane/metadata/android/gl-ES/changelogs/93.txt
Normal file
2
fastlane/metadata/android/gl-ES/changelogs/93.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Engadir Catima a Quick Access Device Controls (https://developer.android.com/guide/topics/ui/device-control)
|
||||
- Arranxo de algúns grupos que non se mostran correctamente na pantalla de xestión dos grupos
|
||||
3
fastlane/metadata/android/gl-ES/changelogs/94.txt
Normal file
3
fastlane/metadata/android/gl-ES/changelogs/94.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- arranxo da borrosidade nas iconas de letras na pantalla principal
|
||||
- arranxo da desaparición puntual de iconas despois da selección
|
||||
- arranxo das iconas na barra de estado non visibles en Android 5
|
||||
1
fastlane/metadata/android/gl-ES/changelogs/95.txt
Normal file
1
fastlane/metadata/android/gl-ES/changelogs/95.txt
Normal file
@@ -0,0 +1 @@
|
||||
- solución ao problema na tarxeta compartir
|
||||
2
fastlane/metadata/android/gl-ES/changelogs/96.txt
Normal file
2
fastlane/metadata/android/gl-ES/changelogs/96.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- engadida compatibilidade con CODE 93
|
||||
- arranxos menores e melloras
|
||||
4
fastlane/metadata/android/gl-ES/changelogs/97.txt
Normal file
4
fastlane/metadata/android/gl-ES/changelogs/97.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
- solución a crear múltiples entradas a premer varias veces o botón gardar
|
||||
- menor tamaño da cabeceira das tarxetas en ocultar detalles para que se vexan aínda máis tarxetas
|
||||
- reorganización da pantalla de edición
|
||||
- mellora do contraste da icona da estrela na pantalla principal
|
||||
1
fastlane/metadata/android/gl-ES/changelogs/98.txt
Normal file
1
fastlane/metadata/android/gl-ES/changelogs/98.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Arranxo de varios problemas relacionados con TallBack
|
||||
1
fastlane/metadata/android/gl-ES/changelogs/99.txt
Normal file
1
fastlane/metadata/android/gl-ES/changelogs/99.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Redeseño Material You
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 22 KiB |
3
fastlane/metadata/android/lv/changelogs/139.txt
Normal file
3
fastlane/metadata/android/lv/changelogs/139.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Iespēja pārslēgties starp kartēm ar skaļuma pogām
|
||||
- Salabota Stocard ievietošana
|
||||
- Novērsta ziņojuma "Ievietošana atcelta" parādīšanās pēc sekmīgas ievietošanas
|
||||
1
fastlane/metadata/android/lv/changelogs/143.txt
Normal file
1
fastlane/metadata/android/lv/changelogs/143.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Novērsta avārija, kad tika atvērtas nederīgas pkpass datnes
|
||||
1
fastlane/metadata/android/lv/changelogs/144.txt
Normal file
1
fastlane/metadata/android/lv/changelogs/144.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Uzlabota arhivēšanas/izlasē ikonas attēlošana
|
||||
3
fastlane/metadata/android/lv/changelogs/145.txt
Normal file
3
fastlane/metadata/android/lv/changelogs/145.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Android 15 atbalsts
|
||||
- Labošanas ekrānā novērsta saglabāšanas pogas aizsegšana ar tastatūru
|
||||
- Novērsta atsevišķu pkpass datņu neatpazīšana kā pkpass (application/vnd-com.apple.pkpass MIME veida atbalsts)
|
||||
@@ -1 +1 @@
|
||||
Jūsu svītrkodiem, biedru kartēm, lojalitātes programmām, kuponiem un biļetēm.
|
||||
Svītrkodiem, biedru kartēm, lojalitātes programmām, kuponiem un biļetēm.
|
||||
|
||||
1
fastlane/metadata/android/ru-RU/changelogs/143.txt
Normal file
1
fastlane/metadata/android/ru-RU/changelogs/143.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Исправлен сбой при открытии неправильных файлов pkpass
|
||||
1
fastlane/metadata/android/ru-RU/changelogs/144.txt
Normal file
1
fastlane/metadata/android/ru-RU/changelogs/144.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Улучшено отображение значка архивированных/избранных карт
|
||||
3
fastlane/metadata/android/ru-RU/changelogs/145.txt
Normal file
3
fastlane/metadata/android/ru-RU/changelogs/145.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Ориентация на Android 15
|
||||
- Исправлено перекрывание клавиатурой кнопки сохранения на экране редактирования
|
||||
- Исправлено нераспознавание некоторых файлов pkpass (поддержка mime-типа application/vnd-com.apple.pkpass)
|
||||
1
fastlane/metadata/android/uk/changelogs/143.txt
Normal file
1
fastlane/metadata/android/uk/changelogs/143.txt
Normal file
@@ -0,0 +1 @@
|
||||
— Виправлено збій під час відкриття недійсних файлів pkpass
|
||||
1
fastlane/metadata/android/uk/changelogs/144.txt
Normal file
1
fastlane/metadata/android/uk/changelogs/144.txt
Normal file
@@ -0,0 +1 @@
|
||||
— Покращено відображення піктограм архіву/зірочки
|
||||
3
fastlane/metadata/android/uk/changelogs/145.txt
Normal file
3
fastlane/metadata/android/uk/changelogs/145.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Цільова версія Android 15
|
||||
— Виправлено клавіатуру, яка закриває кнопку збереження на екрані редагування
|
||||
— Виправлено деякі файли pkpass, які не виявлялися як pkpass (підтримка типу mime у додатку/vnd-com.apple.pkpass)
|
||||
1
fastlane/metadata/android/vi/changelogs/143.txt
Normal file
1
fastlane/metadata/android/vi/changelogs/143.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Sửa lỗi văng khi mở tệp tin pkpass không hợp lệ
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user