Compare commits

..

1 Commits

Author SHA1 Message Date
Sylvia van Os
7f64449167 Codedump 2023-09-27 22:54:03 +02:00
608 changed files with 1537 additions and 3724 deletions

View File

@@ -2,29 +2,9 @@ version: 2
updates: updates:
- package-ecosystem: "gradle" - package-ecosystem: "gradle"
directory: "/" directory: "/"
registries:
- google
- gradlePluginPortal
- jitpack
- mavenCentral
schedule: schedule:
interval: "daily" interval: "daily"
- package-ecosystem: "github-actions" - package-ecosystem: "github-actions"
directory: "/" directory: "/"
schedule: schedule:
interval: "weekly" interval: "weekly"
# Workaround for https://github.com/dependabot/dependabot-core/issues/6888
registries:
google:
type: maven-repository
url: "https://dl.google.com/dl/android/maven2/"
gradlePluginPortal:
type: maven-repository
url: "https://plugins.gradle.org/m2/"
jitpack:
type: maven-repository
url: "https://jitpack.io/"
mavenCentral:
type: maven-repository
url: "https://repo1.maven.org/maven2/"

View File

@@ -29,7 +29,7 @@ jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4.1.1 - uses: actions/checkout@v4.0.0
- name: Fail on bad translations - 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 run: if grep -ri "<xliff" app/src/main/res/values*/strings.xml; then echo "Invalidly escaped translations found"; exit 1; fi
- uses: gradle/wrapper-validation-action@v1 - uses: gradle/wrapper-validation-action@v1
@@ -48,7 +48,7 @@ jobs:
run: ./gradlew spotbugsRelease run: ./gradlew spotbugsRelease
- name: Archive test results - name: Archive test results
if: always() if: always()
uses: actions/upload-artifact@v4.3.0 uses: actions/upload-artifact@v3.1.3
with: with:
name: test-results name: test-results
path: app/build/reports path: app/build/reports

View File

@@ -27,9 +27,9 @@ jobs:
steps: steps:
- name: Checkout repo - name: Checkout repo
id: checkout id: checkout
uses: actions/checkout@v4.1.1 uses: actions/checkout@v4.0.0
- name: Setup Python - name: Setup Python
uses: actions/setup-python@v5.0.0 uses: actions/setup-python@v4.7.0
with: with:
python-version: '3.x' python-version: '3.x'
- name: Run converter script - name: Run converter script

View File

@@ -25,13 +25,12 @@ jobs:
steps: steps:
- name: Checkout repo - name: Checkout repo
id: checkout id: checkout
uses: actions/checkout@v4.1.1 uses: actions/checkout@v4.0.0
- name: Update contributors - name: Update contributors
id: update_contributors id: update_contributors
uses: TheLastProject/contributors-to-file-action@v3.2.0 uses: TheLastProject/contributors-to-file-action@v3.0.1
with: with:
file_in_repo: app/src/main/res/raw/contributors.txt file_in_repo: app/src/main/res/raw/contributors.txt
min_commit_count: 5
- name: Create Pull Request - name: Create Pull Request
uses: peter-evans/create-pull-request@v5.0.2 uses: peter-evans/create-pull-request@v5.0.2
with: with:

View File

@@ -24,7 +24,7 @@ jobs:
generate-feature-graphic: generate-feature-graphic:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4.1.1 - uses: actions/checkout@v4.0.0
- name: Install requirements - name: Install requirements
run: | run: |
sudo apt-get update sudo apt-get update
@@ -36,7 +36,39 @@ jobs:
find .scripts/generate_feature_graphic/fonts -name '*.ttf' -exec cp {} "$HOME/.fonts" \; find .scripts/generate_feature_graphic/fonts -name '*.ttf' -exec cp {} "$HOME/.fonts" \;
fc-cache fc-cache
- name: Generate featureGraphic.png for each language - name: Generate featureGraphic.png for each language
run: .scripts/generate_feature_graphic/generate_feature_graphic.sh run: |
for lang in fastlane/metadata/android/*; do
pushd "$lang"
# Place temporary copy for editing if needed
cp ../../../../.scripts/generate_feature_graphic/featureGraphic.svg featureGraphic.svg
# Extract text after 'Catima - '
export subtext="$(grep -oP '(?<=Catima \S ).*' title.txt || true)"
# If there is subtext, change the .svg accordingly
if [ -n "$subtext" ]; then
perl -pi -e 's/Loyalty Card Wallet/$ENV{subtext}/' featureGraphic.svg
# Set correct font for language if needed (Lexend Deca has limited support)
# 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 ;;
ja-JP) sed -i "s/Lexend Deca/Noto Serif CJK JP/" 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 ;;
*) ;;
esac
fi
# Ensure images directory exists
mkdir -p images
# Generate .png
convert featureGraphic.svg images/featureGraphic.png
# Optimize .png
optipng images/featureGraphic.png
# Remove metadata (timestamps) from .png
mat2 --inplace images/featureGraphic.png
# Remove temporary .svg
rm featureGraphic.svg
popd
done
- name: Create Pull Request - name: Create Pull Request
uses: peter-evans/create-pull-request@v5.0.2 uses: peter-evans/create-pull-request@v5.0.2
with: with:

View File

@@ -1,33 +0,0 @@
name: Gradle update
on:
workflow_dispatch:
schedule:
- cron: '3 6 * * *'
permissions:
actions: none
checks: none
contents: write
deployments: none
discussions: none
id-token: none
issues: none
packages: none
pages: none
pull-requests: write
repository-projects: none
security-events: none
statuses: none
jobs:
gradle-update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1
- uses: obfusk/gradle-update-action@v2.0.0
id: gradle-update
- uses: gradle/wrapper-validation-action@v1
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5.0.2
with:
title: "Update Gradle to ${{ steps.gradle-update.outputs.version }}"
commit-message: "Update Gradle to ${{ steps.gradle-update.outputs.version }}"
branch-suffix: timestamp

View File

@@ -5,7 +5,6 @@ on:
branches: branches:
- main - main
paths: paths:
- app/src/main/res/values-*/strings.xml
- app/src/main/res/values/settings.xml - app/src/main/res/values/settings.xml
permissions: permissions:
actions: none actions: none
@@ -25,9 +24,7 @@ jobs:
update-locales: update-locales:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4.1.1 - uses: actions/checkout@v4.0.0
- name: Add new locales
run: .scripts/new-locales.py
- name: Update locales - name: Update locales
run: .scripts/locales.py run: .scripts/locales.py
- name: Create Pull Request - name: Create Pull Request

26
.gitignore vendored
View File

@@ -1,25 +1,13 @@
# Android Studio generated (superseded/unused rules commented out)
*.iml *.iml
.gradle .gradle
/local.properties local.properties
#/.idea/caches .idea/
#/.idea/libraries
#/.idea/modules.xml
#/.idea/workspace.xml
#/.idea/navEditor.xml
#/.idea/assetWizardSettings.xml
.DS_Store .DS_Store
/build build/
/captures captures/
.externalNativeBuild **/release
.cxx **/debug
#local.properties app/*.log
# Android extras
/app/*.log
/app/build
/app/release
/.idea
# Bundle # Bundle
/.bundle/ /.bundle/

View File

@@ -1,47 +0,0 @@
#!/bin/bash
set -euo pipefail
script_location="$(dirname "$(readlink -f "$0")")"
for lang in "$script_location/../../fastlane/metadata/android/"*; do
pushd "$lang"
# Place temporary copy for editing if needed
cp "$script_location/featureGraphic.svg" featureGraphic.svg
if grep -q — title.txt; then
# Try splitting title.txt on — (em dash)
IFS='—' read -r appname subtext < title.txt
else
# No result, try splitting on - (dash)
IFS='-' read -r appname subtext < title.txt
fi
export appname=${appname%% }
export subtext=${subtext## }
# If there is subtext, change the .svg accordingly
if [ -n "$subtext" ]; then
perl -pi -e 's/Catima/$ENV{appname}/' featureGraphic.svg
perl -pi -e 's/Loyalty Card Wallet/$ENV{subtext}/' featureGraphic.svg
# Set correct font or font size for language if needed
# (Lexend Deca has limited support and some characters are big)
# 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 ;;
ja-JP) sed -i "s/Lexend Deca/Noto Serif CJK JP/" featureGraphic.svg ;;
ko) sed -i "s/Lexend Deca/Noto Serif CJK KR/" featureGraphic.svg ;;
kn-IN) sed -i -e 's/font-size="150"/font-size="100"/' -e 's/y="285.511"/y="235.511"/' featureGraphic.svg ;;
zh-CN) sed -i "s/Lexend Deca/Noto Serif CJK SC/" featureGraphic.svg ;;
zh-TW) sed -i "s/Lexend Deca/Noto Serif CJK TC/" featureGraphic.svg ;;
*) ;;
esac
fi
# Ensure images directory exists
mkdir -p images
# Generate .png
convert featureGraphic.svg images/featureGraphic.png
# Optimize .png
optipng images/featureGraphic.png
# Remove metadata (timestamps) from .png
mat2 --inplace images/featureGraphic.png
# Remove temporary .svg
rm featureGraphic.svg
popd
done

View File

@@ -19,8 +19,8 @@ res = ", ".join(f'"{loc}"' for loc in locales)
sed = [ sed = [
"sed", "sed",
"-i", "-i",
f"s/resourceConfigurations .*/resourceConfigurations += listOf({res})/", f"s/resourceConfigurations .*/resourceConfigurations += [{res}]/",
"app/build.gradle.kts" "app/build.gradle"
] ]
subprocess.run(sed, check=True) subprocess.run(sed, check=True)

View File

@@ -1,120 +0,0 @@
#!/usr/bin/python3
import glob
import re
from typing import Iterator, List, Tuple
import requests
MIN_PERCENT = 90
NOT_LANGS = ("night", "w600dp")
REPLACE_CODES = {
"el": "el-rGR",
"id": "in-rID",
"ro": "ro-rRO",
"zh_Hans": "zh-rCN",
"zh_Hant": "zh-rTW",
}
STATS_URL = "https://hosted.weblate.org/api/components/catima/catima/statistics/"
def get_weblate_langs() -> List[Tuple[str, int]]:
r = requests.get(STATS_URL, timeout=5)
r.raise_for_status()
results = []
for lang in r.json()["results"]:
if lang["code"] != "en":
code = REPLACE_CODES.get(lang["code"], lang["code"]).replace("_", "-r")
results.append((code, round(lang["translated_percent"])))
return sorted(results)
def get_dir_langs() -> List[str]:
results = []
for d in glob.glob("app/src/main/res/values-*"):
code = d.split("-", 1)[1]
if code not in NOT_LANGS:
results.append(code)
return sorted(results)
def get_xml_langs() -> List[Tuple[str, bool]]:
results = []
in_section = False
with open("app/src/main/res/values/settings.xml") as fh:
for line in fh:
if not in_section and 'name="locale_values"' in line:
in_section = True
elif in_section:
if "string-array" in line:
break
disabled = "<!--" in line
if m := re.search(r">(.*)<", line):
if m[1] != "en":
results.append((m[1], disabled))
return sorted(results)
def update_xml_langs(langs: List[Tuple[str, bool]]) -> None:
lines: List[str] = []
in_section = False
with open("app/src/main/res/values/settings.xml") as fh:
for line in fh:
if not in_section and 'name="locale_values"' in line:
in_section = True
elif in_section:
if "string-array" in line:
in_section = False
lines.extend(_lang_lines(langs))
else:
continue
lines.append(line)
with open("app/src/main/res/values/settings.xml", "w") as fh:
for line in lines:
fh.write(line)
def _lang_lines(langs: List[Tuple[str, bool]]) -> Iterator[str]:
yield " <item />\n"
for lang, disabled in sorted(langs + [("en", False)]):
if disabled:
yield f" <!-- <item>{lang}</item> -->\n"
else:
yield f" <item>{lang}</item>\n"
def main() -> None:
web_langs = get_weblate_langs()
dir_langs = get_dir_langs()
xml_langs = get_xml_langs()
web_codes = set(code for code, _ in web_langs)
dir_codes = set(dir_langs)
xml_codes = set(code for code, _ in xml_langs)
if diff := web_codes - dir_codes:
print(f"WARNING: Weblate codes w/o dir: {diff}")
if diff := xml_codes - dir_codes:
print(f"WARNING: XML codes w/o dir: {diff}")
percentages = dict(web_langs)
all_langs = xml_langs[:]
# add new langs as disabled
for code in dir_codes - xml_codes:
all_langs.append((code, True))
# enable disabled langs if they are at least MIN_PERCENT translated now
updated_langs = sorted(
(code, percentages[code] < MIN_PERCENT if disabled else disabled)
for code, disabled in all_langs
)
if updated_langs != xml_langs:
print("Updating...")
update_xml_langs(updated_langs)
if __name__ == "__main__":
main()

View File

@@ -1,17 +1,9 @@
# Changelog # Changelog
## Unreleased - 133 ## Unreleased - 132
- Target Android 14
## v2.27.0 - 132 (2024-01-30)
- Refine "Add card" workflow - Refine "Add card" workflow
- Validation flow improvements - Validation flow improvements
- Fix edge case causing invalid UI state when toggling showing archive
- Use theme or card colour for navigation bar (Android 8.1+)
- Updated validity and expiry date selector
- Add option to always rotate (ignoring system settings)
## v2.26.0 - 131 (2023-09-14) ## v2.26.0 - 131 (2023-09-14)

View File

@@ -1,15 +1,13 @@
# How to Submit Patches to the Catima Project How to Submit Patches to the Catima Project
===============================================================================
https://github.com/TheLastProject/Catima
This document is intended to act as a guide to help you contribute to the This document is intended to act as a guide to help you contribute to the
Catima project. It is not perfect, and there will always be exceptions Catima project. It is not perfect, and there will always be exceptions
to the rules described here, but by following the instructions below you to the rules described here, but by following the instructions below you
should have a much easier time getting your work merged with the upstream should have a much easier time getting your work merged with the upstream
project. project.
When contributing, you certify that you agree to and have the rights to submit
your contribution under the project's license and understand that git will
store your name and email address in project history indefinitely.
## Translation Changes ## Translation Changes
Translation changes are managed through [Weblate](https://hosted.weblate.org/projects/catima/). Translation changes are managed through [Weblate](https://hosted.weblate.org/projects/catima/).
@@ -59,6 +57,44 @@ if you can describe/include a reproducer for the problem in the description as
well as instructions on how to test for the bug and verify that it has been well as instructions on how to test for the bug and verify that it has been
fixed. fixed.
### Sign Your Work
The sign-off is a simple line at the end of the patch description, which
certifies that you wrote it or otherwise have the right to pass it on as an
open-source patch. The "Developer's Certificate of Origin" pledge is taken
from the Linux Kernel and the rules are pretty simple:
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
... then you just add a line to the bottom of your patch description, with
your real name, saying:
Signed-off-by: Random J Developer <random@developer.example.org>
### Submit Patch(es) for Review ### Submit Patch(es) for Review
Finally, you will need to submit your patches so that they can be reviewed Finally, you will need to submit your patches so that they can be reviewed

View File

@@ -3,25 +3,25 @@ GEM
specs: specs:
CFPropertyList (3.0.6) CFPropertyList (3.0.6)
rexml rexml
addressable (2.8.6) addressable (2.8.5)
public_suffix (>= 2.0.2, < 6.0) public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15) artifactory (3.0.15)
atomos (0.1.3) atomos (0.1.3)
aws-eventstream (1.3.0) aws-eventstream (1.2.0)
aws-partitions (1.884.0) aws-partitions (1.824.0)
aws-sdk-core (3.191.0) aws-sdk-core (3.181.1)
aws-eventstream (~> 1, >= 1.3.0) aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0) aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8) aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1) jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.77.0) aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.191.0) aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1) aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.143.0) aws-sdk-s3 (1.134.0)
aws-sdk-core (~> 3, >= 3.191.0) aws-sdk-core (~> 3, >= 3.181.0)
aws-sdk-kms (~> 1) aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.8) aws-sigv4 (~> 1.6)
aws-sigv4 (1.8.0) aws-sigv4 (1.6.0)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4) babosa (1.0.4)
claide (1.1.0) claide (1.1.0)
@@ -32,10 +32,11 @@ GEM
declarative (0.0.20) declarative (0.0.20)
digest-crc (0.6.5) digest-crc (0.6.5)
rake (>= 12.0.0, < 14.0.0) rake (>= 12.0.0, < 14.0.0)
domain_name (0.6.20240107) domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.8.1) dotenv (2.8.1)
emoji_regex (3.2.3) emoji_regex (3.2.3)
excon (0.109.0) excon (0.103.0)
faraday (1.10.3) faraday (1.10.3)
faraday-em_http (~> 1.0) faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0) faraday-em_synchrony (~> 1.0)
@@ -64,8 +65,8 @@ GEM
faraday-retry (1.0.3) faraday-retry (1.0.3)
faraday_middleware (1.2.0) faraday_middleware (1.2.0)
faraday (~> 1.0) faraday (~> 1.0)
fastimage (2.3.0) fastimage (2.2.7)
fastlane (2.219.0) fastlane (2.215.1)
CFPropertyList (>= 2.3, < 4.0.0) CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0) addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0) artifactory (~> 3.0)
@@ -84,7 +85,6 @@ GEM
gh_inspector (>= 1.1.2, < 2.0.0) gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3) google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1) google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-env (>= 1.6.0, < 2.0.0)
google-cloud-storage (~> 1.31) google-cloud-storage (~> 1.31)
highline (~> 2.0) highline (~> 2.0)
http-cookie (~> 1.0.5) http-cookie (~> 1.0.5)
@@ -93,7 +93,7 @@ GEM
mini_magick (>= 4.9.4, < 5.0.0) mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0) multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2) naturally (~> 2.2)
optparse (>= 0.1.1) optparse (~> 0.1.1)
plist (>= 3.1.0, < 4.0.0) plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0) rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3) security (= 0.1.3)
@@ -107,9 +107,9 @@ GEM
xcpretty (~> 0.3.0) xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3) xcpretty-travis-formatter (>= 0.0.3)
gh_inspector (1.1.3) gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.54.0) google-apis-androidpublisher_v3 (0.49.0)
google-apis-core (>= 0.11.0, < 2.a) google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.3) google-apis-core (0.11.1)
addressable (~> 2.5, >= 2.5.1) addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a) googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a) httpclient (>= 2.8.1, < 3.a)
@@ -117,27 +117,28 @@ GEM
representable (~> 3.0) representable (~> 3.0)
retriable (>= 2.0, < 4.a) retriable (>= 2.0, < 4.a)
rexml rexml
webrick
google-apis-iamcredentials_v1 (0.17.0) google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a) google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0) google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a) google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.31.0) google-apis-storage_v1 (0.19.0)
google-apis-core (>= 0.11.0, < 2.a) google-apis-core (>= 0.9.0, < 2.a)
google-cloud-core (1.6.1) google-cloud-core (1.6.0)
google-cloud-env (>= 1.0, < 3.a) google-cloud-env (~> 1.0)
google-cloud-errors (~> 1.0) google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0) google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0) faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.1) google-cloud-errors (1.3.1)
google-cloud-storage (1.47.0) google-cloud-storage (1.44.0)
addressable (~> 2.8) addressable (~> 2.8)
digest-crc (~> 0.4) digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1) google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.31.0) google-apis-storage_v1 (~> 0.19.0)
google-cloud-core (~> 1.6) google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a) googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0) mini_mime (~> 1.0)
googleauth (1.8.1) googleauth (1.8.0)
faraday (>= 0.17.3, < 3.a) faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0) jwt (>= 1.4, < 3.0)
multi_json (~> 1.11) multi_json (~> 1.11)
@@ -148,7 +149,7 @@ GEM
domain_name (~> 0.5) domain_name (~> 0.5)
httpclient (2.8.3) httpclient (2.8.3)
jmespath (1.6.2) jmespath (1.6.2)
json (2.7.1) json (2.6.3)
jwt (2.7.1) jwt (2.7.1)
mini_magick (4.12.0) mini_magick (4.12.0)
mini_mime (1.1.5) mini_mime (1.1.5)
@@ -156,11 +157,11 @@ GEM
multipart-post (2.3.0) multipart-post (2.3.0)
nanaimo (0.3.0) nanaimo (0.3.0)
naturally (2.2.1) naturally (2.2.1)
optparse (0.4.0) optparse (0.1.1)
os (1.1.4) os (1.1.4)
plist (3.7.1) plist (3.7.0)
public_suffix (5.0.4) public_suffix (5.0.3)
rake (13.1.0) rake (13.0.6)
representable (3.2.0) representable (3.2.0)
declarative (< 0.1.0) declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0) trailblazer-option (>= 0.1.1, < 0.2.0)
@@ -184,13 +185,17 @@ GEM
unicode-display_width (>= 1.1.1, < 3) unicode-display_width (>= 1.1.1, < 3)
trailblazer-option (0.1.2) trailblazer-option (0.1.2)
tty-cursor (0.7.1) tty-cursor (0.7.1)
tty-screen (0.8.2) tty-screen (0.8.1)
tty-spinner (0.9.3) tty-spinner (0.9.3)
tty-cursor (~> 0.7) tty-cursor (~> 0.7)
uber (0.1.0) uber (0.1.0)
unicode-display_width (2.5.0) unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (2.4.2)
webrick (1.8.1)
word_wrap (1.0.0) word_wrap (1.0.0)
xcodeproj (1.24.0) xcodeproj (1.22.0)
CFPropertyList (>= 2.3.3, < 4.0) CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3) atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0) claide (>= 1.0.2, < 2.0)

165
app/build.gradle Normal file
View File

@@ -0,0 +1,165 @@
import com.github.spotbugs.snom.SpotBugsTask
plugins {
id 'com.android.application'
id 'com.github.spotbugs'
}
spotbugs {
ignoreFailures = false
effort = 'max'
excludeFilter = file("./config/spotbugs/exclude.xml")
reportsDir = file("$buildDir/reports/spotbugs/")
}
android {
compileSdk 33
defaultConfig {
applicationId "me.hackerchick.catima"
minSdk 21
targetSdk 33
versionCode 131
versionName "2.26.0"
vectorDrawables.useSupportLibrary true
multiDexEnabled true
resourceConfigurations += ["ar", "bg", "bn", "bn-rIN", "bs", "cs", "da", "de", "el-rGR", "en", "eo", "es", "es-rAR", "fi", "fr", "he-rIL", "hi", "hr", "hu", "in-rID", "is", "it", "ja", "ko", "lt", "lv", "nb-rNO", "nl", "oc", "pl", "pt", "ro-rRO", "ru", "sk", "sl", "sv", "tr", "uk", "zh-rTW", "zh-rCN"]
//testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
flavorDimensions "version"
productFlavors {
fdroid {
dimension "version"
}
screengrab {
dimension "version"
applicationIdSuffix = ".screengrab"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
resValue "string", "app_name", "Catima"
}
debug {
applicationIdSuffix ".debug"
resValue "string", "app_name", "Catima Debug"
}
}
buildFeatures {
viewBinding true
}
bundle {
language {
enableSplit = false
}
}
compileOptions {
encoding "UTF-8"
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
sourceSets {
test {
resources.srcDirs += ['src/test/res']
}
}
// Starting with Android Studio 3 Robolectric is unable to find resources.
// The following allows it to find the resources.
testOptions {
unitTests {
all {
testLogging {
events 'started', 'passed', 'skipped', 'failed'
}
}
includeAndroidResources true
}
}
lint {
lintConfig file('lint.xml')
}
namespace 'protect.card_locker'
}
dependencies {
// AndroidX
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.exifinterface:exifinterface:1.3.6'
implementation 'androidx.palette:palette:1.0.0'
implementation 'androidx.preference:preference:1.2.0'
implementation 'com.google.android.material:material:1.9.0'
implementation 'com.github.yalantis:ucrop:2.2.8'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
// Splash Screen
implementation 'androidx.core:core-splashscreen:1.0.1'
// Third-party
implementation 'com.journeyapps:zxing-android-embedded:4.3.0@aar'
implementation 'com.google.zxing:core:3.5.2'
implementation 'org.apache.commons:commons-csv:1.9.0'
implementation 'com.jaredrummler:colorpicker:1.1.0'
implementation 'net.lingala.zip4j:zip4j:2.11.5'
// SpotBugs
implementation 'io.wcm.tooling.spotbugs:io.wcm.tooling.spotbugs.annotations:1.0.0'
// Testing
testImplementation 'androidx.test:core:1.5.0'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.robolectric:robolectric:4.10.3'
// Screenshots
testImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
testImplementation 'com.android.support.test:rules:1.0.2'
testImplementation 'com.android.support.test:runner:1.0.2'
testImplementation 'tools.fastlane:screengrab:2.1.1'
}
tasks.withType(SpotBugsTask) {
description 'Run spotbugs'
group 'verification'
//classes = fileTree('build/intermediates/javac/debug/compileDebugJavaWithJavac/classes')
//source = fileTree('src/main/java')
//classpath = files()
reports {
xml.enabled = false
html.enabled = true
}
}
tasks.register('copyRawResFiles', Copy) {
from layout.projectDirectory.file("../CHANGELOG.md"),
layout.projectDirectory.file("../PRIVACY.md")
into layout.projectDirectory.dir("src/main/res/raw")
rename { String fileName -> fileName.toLowerCase() }
}
project.afterEvaluate {
tasks.each { task ->
if (task != copyRawResFiles) {
task.dependsOn(copyRawResFiles)
}
}
}

View File

@@ -1,145 +0,0 @@
import com.android.build.gradle.internal.tasks.factory.dependsOn
import com.github.spotbugs.snom.SpotBugsTask
plugins {
id("com.android.application")
id("com.github.spotbugs")
}
spotbugs {
ignoreFailures.set(false)
setEffort("max")
excludeFilter.set(file("./config/spotbugs/exclude.xml"))
reportsDir.set(layout.buildDirectory.file("reports/spotbugs/").get().asFile)
}
android {
namespace = "protect.card_locker"
compileSdk = 34
defaultConfig {
applicationId = "me.hackerchick.catima"
minSdk = 21
targetSdk = 34
versionCode = 132
versionName = "2.27.0"
vectorDrawables.useSupportLibrary = true
multiDexEnabled = true
resourceConfigurations += listOf("ar", "bg", "bn", "bn-rIN", "bs", "cs", "da", "de", "el-rGR", "en", "eo", "es", "es-rAR", "fi", "fr", "he-rIL", "hi", "hr", "hu", "in-rID", "is", "it", "ja", "ko", "lt", "lv", "nb-rNO", "nl", "oc", "pl", "pt-rPT", "ro-rRO", "ru", "sk", "sl", "sv", "tr", "uk", "vi", "zh-rCN", "zh-rTW")
}
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android.txt"),
"proguard-rules.pro"
)
}
debug {
applicationIdSuffix = ".debug"
}
}
buildFeatures {
buildConfig = true
viewBinding = true
}
bundle {
language {
enableSplit = false
}
}
compileOptions {
encoding = "UTF-8"
// Flag to enable support for the new language APIs
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
sourceSets {
getByName("test") {
resources.srcDirs("src/test/res")
}
}
// Starting with Android Studio 3 Robolectric is unable to find resources.
// The following allows it to find the resources.
testOptions.unitTests.isIncludeAndroidResources = true
tasks.withType<Test>().configureEach {
testLogging {
events("started", "passed", "skipped", "failed")
}
}
lint {
lintConfig = file("lint.xml")
}
}
dependencies {
// AndroidX
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
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.11.0")
implementation("com.github.yalantis:ucrop:2.2.8")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
// Splash Screen
implementation("androidx.core:core-splashscreen:1.0.1")
// Third-party
implementation("com.journeyapps:zxing-android-embedded:4.3.0@aar")
implementation("com.google.zxing:core:3.5.3")
implementation("org.apache.commons:commons-csv:1.9.0")
implementation("com.jaredrummler:colorpicker:1.1.0")
implementation("net.lingala.zip4j:zip4j:2.11.5")
// SpotBugs
implementation("io.wcm.tooling.spotbugs:io.wcm.tooling.spotbugs.annotations:1.0.0")
// Testing
testImplementation("androidx.test:core:1.5.0")
testImplementation("junit:junit:4.13.2")
testImplementation("org.robolectric:robolectric:4.11.1")
}
tasks.withType<SpotBugsTask>().configureEach {
description = "Run spotbugs"
group = "verification"
//classes = fileTree("build/intermediates/javac/debug/compileDebugJavaWithJavac/classes")
//source = fileTree("src/main/java")
//classpath = files()
reports.maybeCreate("xml").required.set(false)
reports.maybeCreate("html").required.set(true)
}
tasks.register("copyRawResFiles", Copy::class) {
from(
layout.projectDirectory.file("../CHANGELOG.md"),
layout.projectDirectory.file("../PRIVACY.md")
)
into(layout.projectDirectory.dir("src/main/res/raw"))
rename { it.lowercase() }
}.also {
tasks.preBuild.dependsOn(it)
tasks.getByName<Delete>("clean") {
val filesNamesToDelete = listOf("CHANGELOG", "PRIVACY")
filesNamesToDelete.forEach { fileName ->
delete(layout.projectDirectory.file("src/main/res/raw/${fileName.lowercase()}.md"))
}
}
}

View File

@@ -2,7 +2,7 @@
# By default, the flags in this file are appended to flags specified # By default, the flags in this file are appended to flags specified
# in /Users/brarcher/Library/Android/sdk/tools/proguard/proguard-android.txt # in /Users/brarcher/Library/Android/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles # You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.kts. # directive in build.gradle.
# #
# For more details, see # For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html # http://developer.android.com/guide/developing/tools/proguard.html

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

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

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

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

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

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

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

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

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">कैटिमा डीबग</string>
</resources>

View File

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

View File

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

View File

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

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

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

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ಕ್ಯಾಟಿಮಾ ಡೀಬಗ್</string>
</resources>

View File

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

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

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

View File

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

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

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

View File

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

View File

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

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Отладка Catima</string>
</resources>

View File

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

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -24,7 +24,6 @@
<application <application
android:name=".LoyaltyCardLockerApplication" android:name=".LoyaltyCardLockerApplication"
android:allowBackup="true" android:allowBackup="true"
android:enableOnBackInvokedCallback="true"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:supportsRtl="true" android:supportsRtl="true"
@@ -33,6 +32,7 @@
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.App.Starting"> android:theme="@style/Theme.App.Starting">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

View File

@@ -7,7 +7,6 @@ import android.view.View;
import android.widget.ScrollView; import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -44,7 +43,7 @@ public class AboutActivity extends CatimaAppCompatActivity {
binding.privacy.setTag("https://catima.app/privacy-policy/"); binding.privacy.setTag("https://catima.app/privacy-policy/");
binding.reportError.setTag("https://github.com/CatimaLoyalty/Android/issues"); binding.reportError.setTag("https://github.com/CatimaLoyalty/Android/issues");
binding.rate.setTag("https://play.google.com/store/apps/details?id=me.hackerchick.catima"); binding.rate.setTag("https://play.google.com/store/apps/details?id=me.hackerchick.catima");
binding.donate.setTag("https://catima.app/donate"); binding.donate.setTag("https://catima.app/contribute/#donating");
boolean installedFromGooglePlay = Utils.installedFromGooglePlay(this); boolean installedFromGooglePlay = Utils.installedFromGooglePlay(this);
// Hide Google Play rate button if not on Google Play // Hide Google Play rate button if not on Google Play
@@ -99,7 +98,11 @@ public class AboutActivity extends CatimaAppCompatActivity {
} }
private void showCredits() { private void showCredits() {
showHTML(R.string.credits, content.getContributorInfo(), null); new MaterialAlertDialogBuilder(this)
.setTitle(R.string.credits)
.setMessage(content.getContributorInfo())
.setPositiveButton(R.string.ok, null)
.show();
} }
private void showHistory(View view) { private void showHistory(View view) {
@@ -114,7 +117,7 @@ public class AboutActivity extends CatimaAppCompatActivity {
showHTML(R.string.privacy_policy, content.getPrivacyInfo(), view); showHTML(R.string.privacy_policy, content.getPrivacyInfo(), view);
} }
private void showHTML(@StringRes int title, final Spanned text, @Nullable View view) { private void showHTML(@StringRes int title, final Spanned text, View view) {
int dialogContentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding); int dialogContentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
TextView textView = new TextView(this); TextView textView = new TextView(this);
textView.setText(text); textView.setText(text);
@@ -122,21 +125,12 @@ public class AboutActivity extends CatimaAppCompatActivity {
ScrollView scrollView = new ScrollView(this); ScrollView scrollView = new ScrollView(this);
scrollView.addView(textView); scrollView.addView(textView);
scrollView.setPadding(dialogContentPadding, dialogContentPadding / 2, dialogContentPadding, 0); scrollView.setPadding(dialogContentPadding, dialogContentPadding / 2, dialogContentPadding, 0);
new MaterialAlertDialogBuilder(this)
// Create dialog
MaterialAlertDialogBuilder materialAlertDialogBuilder = new MaterialAlertDialogBuilder(this);
materialAlertDialogBuilder
.setTitle(title) .setTitle(title)
.setView(scrollView) .setView(scrollView)
.setPositiveButton(R.string.ok, null); .setPositiveButton(R.string.ok, null)
.setNeutralButton(R.string.view_online, (dialog, which) -> openExternalBrowser(view))
// Add View online button if an URL is linked to this view .show();
if (view != null && view.getTag() != null) {
materialAlertDialogBuilder.setNeutralButton(R.string.view_online, (dialog, which) -> openExternalBrowser(view));
}
// Show dialog
materialAlertDialogBuilder.show();
} }
private void openExternalBrowser(View view) { private void openExternalBrowser(View view) {

View File

@@ -129,19 +129,19 @@ public class AboutContent {
return result.toString(); return result.toString();
} }
public Spanned getContributorInfo() { public String getContributorInfo() {
StringBuilder contributorInfo = new StringBuilder(); StringBuilder contributorInfo = new StringBuilder();
contributorInfo.append(getCopyright()); contributorInfo.append(getCopyright());
contributorInfo.append("<br/><br/>"); contributorInfo.append("\n\n");
contributorInfo.append(context.getString(R.string.app_copyright_old)); contributorInfo.append(context.getString(R.string.app_copyright_old));
contributorInfo.append("<br/><br/>"); contributorInfo.append("\n\n");
contributorInfo.append(String.format(context.getString(R.string.app_contributors), getContributors())); contributorInfo.append(HtmlCompat.fromHtml(String.format(context.getString(R.string.app_contributors), getContributors()), HtmlCompat.FROM_HTML_MODE_COMPACT));
contributorInfo.append("<br/><br/>"); contributorInfo.append("\n\n");
contributorInfo.append(String.format(context.getString(R.string.app_libraries), getThirdPartyLibraries())); contributorInfo.append(HtmlCompat.fromHtml(String.format(context.getString(R.string.app_libraries), getThirdPartyLibraries()), HtmlCompat.FROM_HTML_MODE_COMPACT));
contributorInfo.append("<br/><br/>"); contributorInfo.append("\n\n");
contributorInfo.append(String.format(context.getString(R.string.app_resources), getUsedThirdPartyAssets())); contributorInfo.append(HtmlCompat.fromHtml(String.format(context.getString(R.string.app_resources), getUsedThirdPartyAssets()), HtmlCompat.FROM_HTML_MODE_COMPACT));
return HtmlCompat.fromHtml(contributorInfo.toString(), HtmlCompat.FROM_HTML_MODE_COMPACT); return contributorInfo.toString();
} }
public Spanned getHistoryInfo() { public Spanned getHistoryInfo() {

View File

@@ -5,7 +5,6 @@ import android.graphics.Color;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.view.Window;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@@ -14,8 +13,6 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.WindowInsetsControllerCompat; import androidx.core.view.WindowInsetsControllerCompat;
public class CatimaAppCompatActivity extends AppCompatActivity { public class CatimaAppCompatActivity extends AppCompatActivity {
protected boolean activityOverridesNavBarColor = false;
@Override @Override
protected void attachBaseContext(Context base) { protected void attachBaseContext(Context base) {
// Apply chosen language // Apply chosen language
@@ -33,31 +30,20 @@ public class CatimaAppCompatActivity extends AppCompatActivity {
super.onPostCreate(savedInstanceState); super.onPostCreate(savedInstanceState);
// material 3 designer does not consider status bar colors // material 3 designer does not consider status bar colors
// XXX changing this in onCreate causes issues with the splash screen activity, so doing this here // XXX changing this in onCreate causes issues with the splash screen activity, so doing this here
Window window = getWindow(); boolean darkMode = Utils.isDarkModeEnabled(this);
if (window != null) { if (Build.VERSION.SDK_INT >= 23) {
boolean darkMode = Utils.isDarkModeEnabled(this); View decorView = getWindow().getDecorView();
if (Build.VERSION.SDK_INT >= 23) { WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(getWindow(), decorView);
View decorView = window.getDecorView(); wic.setAppearanceLightStatusBars(!darkMode);
WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(window, decorView); getWindow().setStatusBarColor(Color.TRANSPARENT);
wic.setAppearanceLightStatusBars(!darkMode); } else {
window.setStatusBarColor(Color.TRANSPARENT); // icons are always white back then
} else { getWindow().setStatusBarColor(darkMode ? Color.TRANSPARENT : Color.argb(127, 0, 0, 0));
// icons are always white back then
window.setStatusBarColor(darkMode ? Color.TRANSPARENT : Color.argb(127, 0, 0, 0));
}
} }
// XXX android 9 and below has a nasty rendering bug if the theme was patched earlier // XXX android 9 and below has a nasty rendering bug if the theme was patched earlier
Utils.postPatchColors(this); Utils.postPatchColors(this);
} }
@Override
protected void onResume() {
super.onResume();
if (!activityOverridesNavBarColor) {
Utils.setNavigationBarColor(this, null, Utils.resolveBackgroundColor(this), !Utils.isDarkModeEnabled(this));
}
}
protected void enableToolbarBackButton() { protected void enableToolbarBackButton() {
ActionBar actionBar = getSupportActionBar(); ActionBar actionBar = getSupportActionBar();
if (actionBar != null) { if (actionBar != null) {

View File

@@ -2,6 +2,8 @@ package protect.card_locker;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.ActivityNotFoundException; import android.content.ActivityNotFoundException;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -27,34 +29,33 @@ import android.view.WindowManager;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView; import android.widget.AutoCompleteTextView;
import android.widget.Button; import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText; import android.widget.EditText;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.activity.OnBackPressedCallback;
import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts; import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.AppCompatTextView;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider; import androidx.core.content.FileProvider;
import androidx.exifinterface.media.ExifInterface; import androidx.exifinterface.media.ExifInterface;
import androidx.fragment.app.DialogFragment;
import com.google.android.material.chip.Chip; import com.google.android.material.chip.Chip;
import com.google.android.material.chip.ChipGroup; import com.google.android.material.chip.ChipGroup;
import com.google.android.material.color.MaterialColors; import com.google.android.material.color.MaterialColors;
import com.google.android.material.datepicker.CalendarConstraints;
import com.google.android.material.datepicker.DateValidatorPointBackward;
import com.google.android.material.datepicker.DateValidatorPointForward;
import com.google.android.material.datepicker.MaterialDatePicker;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import com.jaredrummler.android.colorpicker.ColorPickerDialog; import com.jaredrummler.android.colorpicker.ColorPickerDialog;
import com.jaredrummler.android.colorpicker.ColorPickerDialogListener; import com.jaredrummler.android.colorpicker.ColorPickerDialogListener;
@@ -73,6 +74,7 @@ import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Currency; import java.util.Currency;
import java.util.Date; import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
@@ -92,7 +94,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
private final String STATE_TAB_INDEX = "savedTab"; private final String STATE_TAB_INDEX = "savedTab";
private final String STATE_TEMP_CARD = "tempLoyaltyCard"; private final String STATE_TEMP_CARD = "tempLoyaltyCard";
private final String STATE_TEMP_CARD_FIELD = "tempLoyaltyCardField";
private final String STATE_REQUESTED_IMAGE = "requestedImage"; private final String STATE_REQUESTED_IMAGE = "requestedImage";
private final String STATE_FRONT_IMAGE_UNSAVED = "frontImageUnsaved"; private final String STATE_FRONT_IMAGE_UNSAVED = "frontImageUnsaved";
private final String STATE_BACK_IMAGE_UNSAVED = "backImageUnsaved"; private final String STATE_BACK_IMAGE_UNSAVED = "backImageUnsaved";
@@ -104,9 +105,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
private final String STATE_ICON_REMOVED = "iconRemoved"; private final String STATE_ICON_REMOVED = "iconRemoved";
private final String STATE_OPEN_SET_ICON_MENU = "openSetIconMenu"; private final String STATE_OPEN_SET_ICON_MENU = "openSetIconMenu";
private static final String PICK_DATE_REQUEST_KEY = "pick_date_request";
private static final String NEWLY_PICKED_DATE_ARGUMENT_KEY = "newly_picked_date";
private final String TEMP_CAMERA_IMAGE_NAME = LoyaltyCardEditActivity.class.getSimpleName() + "_camera_image.jpg"; private final String TEMP_CAMERA_IMAGE_NAME = LoyaltyCardEditActivity.class.getSimpleName() + "_camera_image.jpg";
private final String TEMP_CROP_IMAGE_NAME = LoyaltyCardEditActivity.class.getSimpleName() + "_crop_image.png"; private final String TEMP_CROP_IMAGE_NAME = LoyaltyCardEditActivity.class.getSimpleName() + "_crop_image.png";
private final Bitmap.CompressFormat TEMP_CROP_IMAGE_FORMAT = Bitmap.CompressFormat.PNG; private final Bitmap.CompressFormat TEMP_CROP_IMAGE_FORMAT = Bitmap.CompressFormat.PNG;
@@ -184,7 +182,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
HashMap<String, String> currencySymbols = new HashMap<>(); HashMap<String, String> currencySymbols = new HashMap<>();
LoyaltyCard tempLoyaltyCard; LoyaltyCard tempLoyaltyCard;
LoyaltyCardField tempLoyaltyCardField;
ActivityResultLauncher<Uri> mPhotoTakerLauncher; ActivityResultLauncher<Uri> mPhotoTakerLauncher;
ActivityResultLauncher<Intent> mPhotoPickerLauncher; ActivityResultLauncher<Intent> mPhotoPickerLauncher;
@@ -270,7 +267,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
tabs = binding.tabs; tabs = binding.tabs;
savedInstanceState.putInt(STATE_TAB_INDEX, tabs.getSelectedTabPosition()); savedInstanceState.putInt(STATE_TAB_INDEX, tabs.getSelectedTabPosition());
savedInstanceState.putParcelable(STATE_TEMP_CARD, tempLoyaltyCard); savedInstanceState.putParcelable(STATE_TEMP_CARD, tempLoyaltyCard);
savedInstanceState.putSerializable(STATE_TEMP_CARD_FIELD, tempLoyaltyCardField);
savedInstanceState.putInt(STATE_REQUESTED_IMAGE, mRequestedImage); savedInstanceState.putInt(STATE_REQUESTED_IMAGE, mRequestedImage);
Object cardImageFrontObj = cardImageFront.getTag(); Object cardImageFrontObj = cardImageFront.getTag();
@@ -306,7 +302,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) { public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
onRestoring = true; onRestoring = true;
tempLoyaltyCard = savedInstanceState.getParcelable(STATE_TEMP_CARD); tempLoyaltyCard = savedInstanceState.getParcelable(STATE_TEMP_CARD);
tempLoyaltyCardField = (LoyaltyCardField) savedInstanceState.getSerializable(STATE_TEMP_CARD_FIELD);
super.onRestoreInstanceState(savedInstanceState); super.onRestoreInstanceState(savedInstanceState);
tabs = binding.tabs; tabs = binding.tabs;
tabs.selectTab(tabs.getTabAt(savedInstanceState.getInt(STATE_TAB_INDEX))); tabs.selectTab(tabs.getTabAt(savedInstanceState.getInt(STATE_TAB_INDEX)));
@@ -392,7 +387,20 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
addDateFieldTextChangedListener(expiryField, R.string.never, R.string.chooseExpiryDate, LoyaltyCardField.expiry); addDateFieldTextChangedListener(expiryField, R.string.never, R.string.chooseExpiryDate, LoyaltyCardField.expiry);
setMaterialDatePickerResultListener(); DatePickerFragment.registerDatePickListener(this, (textFieldToEdit, newDate) -> {
switch (textFieldToEdit) {
case validFrom:
formatDateField(this, validFromField, newDate);
updateTempState(LoyaltyCardField.validFrom, newDate);
break;
case expiry:
formatDateField(this, expiryField, newDate);
updateTempState(LoyaltyCardField.expiry, newDate);
break;
default:
throw new AssertionError("Unexpected field: " + textFieldToEdit);
}
});
balanceField.setOnFocusChangeListener((v, hasFocus) -> { balanceField.setOnFocusChangeListener((v, hasFocus) -> {
if (!hasFocus && !onResuming && !onRestoring) { if (!hasFocus && !onResuming && !onRestoring) {
@@ -697,13 +705,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
}); });
mCropperOptions = new UCrop.Options(); mCropperOptions = new UCrop.Options();
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
askBeforeQuitIfChanged();
}
});
} }
// ucrop 2.2.6 initial aspect ratio is glitched when 0x0 is used as the initial ratio option // ucrop 2.2.6 initial aspect ratio is glitched when 0x0 is used as the initial ratio option
@@ -777,7 +778,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
@SuppressLint("DefaultLocale") @SuppressLint("DefaultLocale")
@Override @Override
protected void onResume() { public void onResume() {
super.onResume(); super.onResume();
Log.i(TAG, "To view card: " + loyaltyCardId); Log.i(TAG, "To view card: " + loyaltyCardId);
@@ -1015,14 +1016,14 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
if (!lastValue.toString().equals(getString(chooseDateOptionStringId))) { if (!lastValue.toString().equals(getString(chooseDateOptionStringId))) {
dateField.setText(lastValue); dateField.setText(lastValue);
} }
showDatePicker( DialogFragment datePickerFragment = DatePickerFragment.newInstance(
loyaltyCardField, loyaltyCardField,
(Date) dateField.getTag(), (Date) dateField.getTag(),
// if the expiry date is being set, set date picker's minDate to the 'valid from' date // if the expiry date is being set, set date picker's minDate to the 'valid from' date
loyaltyCardField == LoyaltyCardField.expiry ? (Date) validFromField.getTag() : null, loyaltyCardField == LoyaltyCardField.expiry ? (Date) validFromField.getTag() : null,
// if the 'valid from' date is being set, set date picker's maxDate to the expiry date // if the 'valid from' date is being set, set date picker's maxDate to the expiry date
loyaltyCardField == LoyaltyCardField.validFrom ? (Date) expiryField.getTag() : null loyaltyCardField == LoyaltyCardField.validFrom ? (Date) expiryField.getTag() : null);
); datePickerFragment.show(getSupportFragmentManager(), "datePicker");
} }
} }
@@ -1063,6 +1064,11 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
} }
} }
@Override
public void onBackPressed() {
askBeforeQuitIfChanged();
}
@Override @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults); super.onRequestPermissionsResult(requestCode, permissions, grantResults);
@@ -1373,106 +1379,103 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
// Nothing to do, no change made // Nothing to do, no change made
} }
private void showDatePicker( public static class DatePickerFragment extends DialogFragment
LoyaltyCardField loyaltyCardField, implements DatePickerDialog.OnDateSetListener {
@Nullable Date selectedDate,
@Nullable Date minDate,
@Nullable Date maxDate
) {
// Create a new instance of MaterialDatePicker and return it
long startDate = minDate != null ? minDate.getTime() : getDefaultMinDateOfDatePicker();
long endDate = maxDate != null ? maxDate.getTime() : getDefaultMaxDateOfDatePicker();
CalendarConstraints.DateValidator dateValidator; public interface OnDatePickListener {
switch (loyaltyCardField) { void onDatePicked(@NonNull LoyaltyCardField textFieldToEdit, @NonNull Date newDate);
case validFrom:
dateValidator = DateValidatorPointBackward.before(endDate);
break;
case expiry:
dateValidator = DateValidatorPointForward.from(startDate);
break;
default:
throw new AssertionError("Unexpected field: " + loyaltyCardField);
} }
CalendarConstraints calendarConstraints = new CalendarConstraints.Builder() private static final String TEXT_FIELD_TO_EDIT_ARGUMENT_KEY = "text_field_to_edit";
.setValidator(dateValidator) private static final String CURRENT_DATE_ARGUMENT_KEY = "current_date";
.setStart(startDate) private static final String MIN_DATE_ARGUMENT_KEY = "min_date";
.setEnd(endDate) private static final String MAX_DATE_ARGUMENT_KEY = "max_date";
.build(); private static final String PICK_DATE_REQUEST_KEY = "pick_date_request";
private static final String NEWLY_PICKED_DATE_ARGUMENT_KEY = "newly_picked_date";
// Use the selected date as the default date in the picker LoyaltyCardField textFieldEdit;
final Calendar calendar = Calendar.getInstance(); @Nullable
if (selectedDate != null) { Date minDate;
calendar.setTime(selectedDate); @Nullable
Date maxDate;
public static DatePickerFragment newInstance(@NonNull LoyaltyCardField textField, @Nullable Date currentDate, @Nullable Date minDate, @Nullable Date maxDate) {
Bundle args = new Bundle();
args.putSerializable(TEXT_FIELD_TO_EDIT_ARGUMENT_KEY, textField);
args.putSerializable(CURRENT_DATE_ARGUMENT_KEY, currentDate);
args.putSerializable(MIN_DATE_ARGUMENT_KEY, minDate);
args.putSerializable(MAX_DATE_ARGUMENT_KEY, maxDate);
DatePickerFragment fragment = new DatePickerFragment();
fragment.setArguments(args);
return fragment;
} }
MaterialDatePicker<Long> materialDatePicker = MaterialDatePicker.Builder.datePicker() public static void registerDatePickListener(@NonNull AppCompatActivity activity, @NonNull OnDatePickListener listener) {
.setSelection(calendar.getTimeInMillis()) activity.getSupportFragmentManager().setFragmentResultListener(
.setCalendarConstraints(calendarConstraints) PICK_DATE_REQUEST_KEY,
.build(); activity,
(requestKey, result) -> listener.onDatePicked(
(LoyaltyCardField) Objects.requireNonNull(result.getSerializable(TEXT_FIELD_TO_EDIT_ARGUMENT_KEY)),
(Date) Objects.requireNonNull(result.getSerializable(NEWLY_PICKED_DATE_ARGUMENT_KEY))));
}
// Required to handle configuration changes @NonNull
// See https://github.com/material-components/material-components-android/issues/1688 @Override
tempLoyaltyCardField = loyaltyCardField; public Dialog onCreateDialog(Bundle savedInstanceState) {
getSupportFragmentManager().addFragmentOnAttachListener((fragmentManager, fragment) -> { Bundle args = requireArguments();
if (fragment instanceof MaterialDatePicker && Objects.equals(fragment.getTag(), PICK_DATE_REQUEST_KEY)) { textFieldEdit = (LoyaltyCardField) args.getSerializable(TEXT_FIELD_TO_EDIT_ARGUMENT_KEY);
((MaterialDatePicker<Long>) fragment).addOnPositiveButtonClickListener(selection -> { minDate = (Date) args.getSerializable(MIN_DATE_ARGUMENT_KEY);
Bundle args = new Bundle(); maxDate = (Date) args.getSerializable(MAX_DATE_ARGUMENT_KEY);
args.putLong(NEWLY_PICKED_DATE_ARGUMENT_KEY, selection); // Use the current date as the default date in the picker
getSupportFragmentManager().setFragmentResult(PICK_DATE_REQUEST_KEY, args); final Calendar c = Calendar.getInstance();
});
Date date = (Date) args.getSerializable(CURRENT_DATE_ARGUMENT_KEY);
if (date != null) {
c.setTime(date);
} }
});
materialDatePicker.show(getSupportFragmentManager(), PICK_DATE_REQUEST_KEY); int year = c.get(Calendar.YEAR);
} int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Required to handle configuration changes // Create a new instance of DatePickerDialog and return it
// See https://github.com/material-components/material-components-android/issues/1688 DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
private void setMaterialDatePickerResultListener() { datePickerDialog.getDatePicker().setMinDate(minDate != null ? minDate.getTime() : getDefaultMinDateOfDatePicker());
MaterialDatePicker<Long> fragment = (MaterialDatePicker<Long>) getSupportFragmentManager().findFragmentByTag(PICK_DATE_REQUEST_KEY); datePickerDialog.getDatePicker().setMaxDate(maxDate != null ? maxDate.getTime() : getDefaultMaxDateOfDatePicker());
if (fragment != null) { return datePickerDialog;
fragment.addOnPositiveButtonClickListener(selection -> {
Bundle args = new Bundle();
args.putLong(NEWLY_PICKED_DATE_ARGUMENT_KEY, selection);
getSupportFragmentManager().setFragmentResult(PICK_DATE_REQUEST_KEY, args);
});
} }
getSupportFragmentManager().setFragmentResultListener( private long getDefaultMinDateOfDatePicker() {
PICK_DATE_REQUEST_KEY, Calendar minDateCalendar = Calendar.getInstance();
this, minDateCalendar.set(1970, 0, 1);
(requestKey, result) -> { return minDateCalendar.getTimeInMillis();
long selection = result.getLong(NEWLY_PICKED_DATE_ARGUMENT_KEY); }
Date newDate = new Date(selection); private long getDefaultMaxDateOfDatePicker() {
switch (tempLoyaltyCardField) { Calendar maxDateCalendar = Calendar.getInstance();
case validFrom: maxDateCalendar.set(2100, 11, 31);
formatDateField(LoyaltyCardEditActivity.this, validFromField, newDate); return maxDateCalendar.getTimeInMillis();
updateTempState(LoyaltyCardField.validFrom, newDate); }
break;
case expiry:
formatDateField(LoyaltyCardEditActivity.this, expiryField, newDate);
updateTempState(LoyaltyCardField.expiry, newDate);
break;
default:
throw new AssertionError("Unexpected field: " + tempLoyaltyCardField);
}
}
);
}
private long getDefaultMinDateOfDatePicker() { public void onDateSet(DatePicker view, int year, int month, int day) {
Calendar minDateCalendar = Calendar.getInstance(); Calendar c = new GregorianCalendar();
minDateCalendar.set(1970, 0, 1); c.set(Calendar.YEAR, year);
return minDateCalendar.getTimeInMillis(); c.set(Calendar.MONTH, month);
} c.set(Calendar.DAY_OF_MONTH, day);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
private long getDefaultMaxDateOfDatePicker() { long unixTime = c.getTimeInMillis();
Calendar maxDateCalendar = Calendar.getInstance();
maxDateCalendar.set(2100, 11, 31); Date date = new Date(unixTime);
return maxDateCalendar.getTimeInMillis();
Bundle result = new Bundle();
result.putSerializable(TEXT_FIELD_TO_EDIT_ARGUMENT_KEY, textFieldEdit);
result.putSerializable(NEWLY_PICKED_DATE_ARGUMENT_KEY, date);
getParentFragmentManager().setFragmentResult(PICK_DATE_REQUEST_KEY, result);
}
} }
private void doSave() { private void doSave() {

View File

@@ -20,6 +20,7 @@ import android.text.method.DigitsKeyListener;
import android.text.style.ForegroundColorSpan; import android.text.style.ForegroundColorSpan;
import android.text.util.Linkify; import android.text.util.Linkify;
import android.util.Log; import android.util.Log;
import android.util.TypedValue;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
@@ -37,17 +38,19 @@ import android.widget.SeekBar;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import androidx.core.content.FileProvider; import androidx.core.content.FileProvider;
import androidx.core.graphics.BlendModeColorFilterCompat; import androidx.core.graphics.BlendModeColorFilterCompat;
import androidx.core.graphics.BlendModeCompat; import androidx.core.graphics.BlendModeCompat;
import androidx.core.graphics.ColorUtils; import androidx.core.graphics.ColorUtils;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.core.widget.TextViewCompat;
import com.google.android.material.color.MaterialColors; import com.google.android.material.color.MaterialColors;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -225,9 +228,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
settings = new Settings(this); settings = new Settings(this);
String cardOrientation = settings.getCardViewOrientation(); String cardOrientation = settings.getCardViewOrientation();
if (cardOrientation.equals(getString(R.string.settings_key_follow_sensor_orientation))) { if (cardOrientation.equals(getString(R.string.settings_key_lock_on_opening_orientation))) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
} else if (cardOrientation.equals(getString(R.string.settings_key_lock_on_opening_orientation))) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
} else if (cardOrientation.equals(getString(R.string.settings_key_portrait_orientation))) { } else if (cardOrientation.equals(getString(R.string.settings_key_portrait_orientation))) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
@@ -321,17 +322,6 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
return true; return true;
}); });
binding.fullscreenImage.setOnClickListener(view -> onMainImageTap()); binding.fullscreenImage.setOnClickListener(view -> onMainImageTap());
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
if (isFullscreen) {
setFullscreen(false);
} else {
finish();
}
}
});
} }
private SpannableStringBuilder padSpannableString(SpannableStringBuilder spannableStringBuilder) { private SpannableStringBuilder padSpannableString(SpannableStringBuilder spannableStringBuilder) {
@@ -554,8 +544,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
@Override @Override
protected void onResume() { public void onResume() {
activityOverridesNavBarColor = true;
super.onResume(); super.onResume();
Log.i(TAG, "To view card: " + loyaltyCardId); Log.i(TAG, "To view card: " + loyaltyCardId);
@@ -633,11 +622,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
int darkenedColor = ColorUtils.blendARGB(backgroundHeaderColor, Color.BLACK, 0.1f); int darkenedColor = ColorUtils.blendARGB(backgroundHeaderColor, Color.BLACK, 0.1f);
binding.barcodeScaler.setProgressTintList(ColorStateList.valueOf(darkenedColor)); binding.barcodeScaler.setProgressTintList(ColorStateList.valueOf(darkenedColor));
binding.barcodeScaler.setThumbTintList(ColorStateList.valueOf(darkenedColor)); binding.barcodeScaler.setThumbTintList(ColorStateList.valueOf(darkenedColor));
// Set bottomAppBar and system navigation bar color
binding.bottomAppBar.setBackgroundColor(darkenedColor); binding.bottomAppBar.setBackgroundColor(darkenedColor);
Utils.setNavigationBarColor(null, window, darkenedColor, Utils.needsDarkForeground(darkenedColor));
int complementaryColor = Utils.getComplementaryColor(darkenedColor); int complementaryColor = Utils.getComplementaryColor(darkenedColor);
binding.fabEdit.setBackgroundTintList(ColorStateList.valueOf(complementaryColor)); binding.fabEdit.setBackgroundTintList(ColorStateList.valueOf(complementaryColor));
Drawable editButtonIcon = binding.fabEdit.getDrawable(); Drawable editButtonIcon = binding.fabEdit.getDrawable();
@@ -719,6 +704,16 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
imageButton.setColorFilter(BlendModeColorFilterCompat.createBlendModeColorFilterCompat(backgroundNeedsDarkIcons ? Color.BLACK : Color.WHITE, BlendModeCompat.SRC_ATOP)); imageButton.setColorFilter(BlendModeColorFilterCompat.createBlendModeColorFilterCompat(backgroundNeedsDarkIcons ? Color.BLACK : Color.WHITE, BlendModeCompat.SRC_ATOP));
} }
@Override
public void onBackPressed() {
if (isFullscreen) {
setFullscreen(false);
return;
}
super.onBackPressed();
}
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.card_view_menu, menu); getMenuInflater().inflate(R.menu.card_view_menu, menu);
@@ -1060,14 +1055,10 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
// Set Android to fullscreen mode // Set Android to fullscreen mode
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
Window window = getWindow(); getWindow().setDecorFitsSystemWindows(false);
if (window != null) { if (getWindow().getInsetsController() != null) {
window.setDecorFitsSystemWindows(false); getWindow().getInsetsController().hide(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
WindowInsetsController wic = window.getInsetsController(); getWindow().getInsetsController().setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
if (wic != null) {
wic.hide(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
wic.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
}
} }
} else { } else {
setFullscreenModeSdkLessThan30(); setFullscreenModeSdkLessThan30();
@@ -1094,14 +1085,10 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
// Unset fullscreen mode // Unset fullscreen mode
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
Window window = getWindow(); getWindow().setDecorFitsSystemWindows(true);
if (window != null) { if (getWindow().getInsetsController() != null) {
window.setDecorFitsSystemWindows(true); getWindow().getInsetsController().show(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
WindowInsetsController wic = window.getInsetsController(); getWindow().getInsetsController().setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_DEFAULT);
if (wic != null) {
wic.show(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
wic.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_DEFAULT);
}
} }
} else { } else {
unsetFullscreenModeSdkLessThan30(); unsetFullscreenModeSdkLessThan30();
@@ -1113,25 +1100,19 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
private void unsetFullscreenModeSdkLessThan30() { private void unsetFullscreenModeSdkLessThan30() {
Window window = getWindow(); getWindow().getDecorView().setSystemUiVisibility(
if (window != null) { getWindow().getDecorView().getSystemUiVisibility()
window.getDecorView().setSystemUiVisibility( & ~View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
window.getDecorView().getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_FULLSCREEN
& ~View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY );
& ~View.SYSTEM_UI_FLAG_FULLSCREEN
);
}
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
private void setFullscreenModeSdkLessThan30() { private void setFullscreenModeSdkLessThan30() {
Window window = getWindow(); getWindow().getDecorView().setSystemUiVisibility(
if (window != null) { getWindow().getDecorView().getSystemUiVisibility()
window.getDecorView().setSystemUiVisibility( | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
window.getDecorView().getSystemUiVisibility() | View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY );
| View.SYSTEM_UI_FLAG_FULLSCREEN
);
}
} }
} }

View File

@@ -2,6 +2,8 @@ package protect.card_locker;
import android.app.Activity; import android.app.Activity;
import android.app.SearchManager; import android.app.SearchManager;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
@@ -20,7 +22,6 @@ import android.view.View;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.Toast; import android.widget.Toast;
import androidx.activity.OnBackPressedCallback;
import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts; import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
@@ -69,7 +70,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
private View mNoGroupCardsText; private View mNoGroupCardsText;
private TabLayout groupsTabLayout; private TabLayout groupsTabLayout;
private Runnable mUpdateLoyaltyCardListRunnable; private Runnable mSwapLoyaltyCardListCursor;
private ActivityResultLauncher<Intent> mBarcodeScannerLauncher; private ActivityResultLauncher<Intent> mBarcodeScannerLauncher;
private ActivityResultLauncher<Intent> mSettingsLauncher; private ActivityResultLauncher<Intent> mSettingsLauncher;
@@ -88,7 +89,35 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
@Override @Override
public boolean onActionItemClicked(ActionMode inputMode, MenuItem inputItem) { public boolean onActionItemClicked(ActionMode inputMode, MenuItem inputItem) {
if (inputItem.getItemId() == R.id.action_share) { if (inputItem.getItemId() == R.id.action_copy_to_clipboard) {
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
String clipboardData;
int cardCount = mAdapter.getSelectedItemCount();
if (cardCount == 1) {
clipboardData = mAdapter.getSelectedItems().get(0).cardId;
} else {
StringBuilder cardIds = new StringBuilder();
for (int i = 0; i < cardCount; i++) {
LoyaltyCard loyaltyCard = mAdapter.getSelectedItems().get(i);
cardIds.append(loyaltyCard.store + ": " + loyaltyCard.cardId);
if (i < (cardCount - 1)) {
cardIds.append("\n");
}
}
clipboardData = cardIds.toString();
}
ClipData clip = ClipData.newPlainText(getString(R.string.card_ids_copied), clipboardData);
clipboard.setPrimaryClip(clip);
Toast.makeText(MainActivity.this, cardCount > 1 ? R.string.copy_to_clipboard_multiple_toast : R.string.copy_to_clipboard_toast, Toast.LENGTH_LONG).show();
inputMode.finish();
return true;
} else if (inputItem.getItemId() == R.id.action_share) {
final ImportURIHelper importURIHelper = new ImportURIHelper(MainActivity.this); final ImportURIHelper importURIHelper = new ImportURIHelper(MainActivity.this);
try { try {
importURIHelper.startShareIntent(mAdapter.getSelectedItems()); importURIHelper.startShareIntent(mAdapter.getSelectedItems());
@@ -199,6 +228,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
super.onCreate(inputSavedInstanceState); super.onCreate(inputSavedInstanceState);
binding = MainActivityBinding.inflate(getLayoutInflater()); binding = MainActivityBinding.inflate(getLayoutInflater());
setTitle(R.string.app_name);
setContentView(binding.getRoot()); setContentView(binding.getRoot());
setSupportActionBar(binding.toolbar); setSupportActionBar(binding.toolbar);
groupsTabLayout = binding.groups; groupsTabLayout = binding.groups;
@@ -206,8 +236,13 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
mDatabase = new DBHelper(this).getWritableDatabase(); mDatabase = new DBHelper(this).getWritableDatabase();
mUpdateLoyaltyCardListRunnable = () -> { mSwapLoyaltyCardListCursor = () -> {
updateLoyaltyCardList(false); Group group = null;
if (mGroup != null) {
group = (Group) mGroup;
}
mAdapter.swapCursor(DBHelper.getLoyaltyCardCursor(mDatabase, mFilter, group, mOrder, mOrderDirection, mAdapter.showingArchivedCards() ? DBHelper.LoyaltyCardArchiveFilter.All : DBHelper.LoyaltyCardArchiveFilter.Unarchived));
}; };
groupsTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { groupsTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@@ -242,7 +277,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
mNoGroupCardsText = contentMainBinding.noGroupCardsText; mNoGroupCardsText = contentMainBinding.noGroupCardsText;
mCardList = contentMainBinding.list; mCardList = contentMainBinding.list;
mAdapter = new LoyaltyCardCursorAdapter(this, null, this, mUpdateLoyaltyCardListRunnable); mAdapter = new LoyaltyCardCursorAdapter(this, null, this, mSwapLoyaltyCardListCursor);
mCardList.setAdapter(mAdapter); mCardList.setAdapter(mAdapter);
registerForContextMenu(mCardList); registerForContextMenu(mCardList);
@@ -302,17 +337,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
} }
} }
}); });
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
if (mSearchView != null && !mSearchView.isIconified()) {
mSearchView.setIconified(true);
} else {
finish();
}
}
});
} }
@Override @Override
@@ -387,6 +411,16 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
addButton.bringToFront(); addButton.bringToFront();
} }
@Override
public void onBackPressed() {
if (mSearchView != null && !mSearchView.isIconified()) {
mSearchView.setIconified(true);
return;
}
super.onBackPressed();
}
private void displayCardSetupOptions(Menu menu, boolean shouldShow) { private void displayCardSetupOptions(Menu menu, boolean shouldShow) {
for (int id : new int[]{R.id.action_search, R.id.action_display_options, R.id.action_sort}) { for (int id : new int[]{R.id.action_search, R.id.action_display_options, R.id.action_sort}) {
menu.findItem(id).setVisible(shouldShow); menu.findItem(id).setVisible(shouldShow);
@@ -398,12 +432,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
} }
private void updateLoyaltyCardList(boolean updateCount) { private void updateLoyaltyCardList(boolean updateCount) {
Group group = null; mSwapLoyaltyCardListCursor.run();
if (mGroup != null) {
group = (Group) mGroup;
}
mAdapter.swapCursor(DBHelper.getLoyaltyCardCursor(mDatabase, mFilter, group, mOrder, mOrderDirection, mAdapter.showingArchivedCards() ? DBHelper.LoyaltyCardArchiveFilter.All : DBHelper.LoyaltyCardArchiveFilter.Unarchived));
if (updateCount) { if (updateCount) {
updateLoyaltyCardCount(); updateLoyaltyCardCount();
@@ -582,7 +611,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
int id = inputItem.getItemId(); int id = inputItem.getItemId();
if (id == android.R.id.home) { if (id == android.R.id.home) {
getOnBackPressedDispatcher().onBackPressed(); onBackPressed();
} }
if (id == R.id.action_display_options) { if (id == R.id.action_display_options) {

View File

@@ -20,7 +20,6 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
@@ -134,13 +133,6 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana
// this setText is here because content_main.xml is reused from main activity // this setText is here because content_main.xml is reused from main activity
noGroupCardsText.setText(getResources().getText(R.string.noGiftCardsGroup)); noGroupCardsText.setText(getResources().getText(R.string.noGiftCardsGroup));
updateLoyaltyCardList(); updateLoyaltyCardList();
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
leaveWithoutSaving();
}
});
} }
private ArrayList<Integer> adapterStateToIntegerArray(HashMap<Integer, Boolean> adapterState) { private ArrayList<Integer> adapterStateToIntegerArray(HashMap<Integer, Boolean> adapterState) {
@@ -218,9 +210,14 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana
} }
} }
@Override
public void onBackPressed() {
leaveWithoutSaving();
}
@Override @Override
public boolean onSupportNavigateUp() { public boolean onSupportNavigateUp() {
getOnBackPressedDispatcher().onBackPressed(); onBackPressed();
return true; return true;
} }

View File

@@ -71,6 +71,11 @@ public class ManageGroupsActivity extends CatimaAppCompatActivity implements Gro
updateGroupList(); updateGroupList();
} }
@Override
public void onBackPressed() {
super.onBackPressed();
}
private void updateGroupList() { private void updateGroupList() {
mAdapter.swapCursor(DBHelper.getGroupCursor(mDatabase)); mAdapter.swapCursor(DBHelper.getGroupCursor(mDatabase));
@@ -243,4 +248,4 @@ public class ManageGroupsActivity extends CatimaAppCompatActivity implements Gro
AlertDialog dialog = builder.create(); AlertDialog dialog = builder.create();
dialog.show(); dialog.show();
} }
} }

View File

@@ -7,7 +7,6 @@ import android.graphics.drawable.Drawable;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.view.Window;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.LinearLayout; import android.widget.LinearLayout;
@@ -28,18 +27,15 @@ public class UCropWrapper extends UCropActivity {
protected void onPostCreate(@Nullable Bundle savedInstanceState) { protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState); super.onPostCreate(savedInstanceState);
boolean darkMode = Utils.isDarkModeEnabled(this); boolean darkMode = Utils.isDarkModeEnabled(this);
Window window = getWindow();
// setup status bar to look like the rest of the app // setup status bar to look like the rest of the app
if (Build.VERSION.SDK_INT >= 23) { if (Build.VERSION.SDK_INT >= 23) {
if (window != null) { View decorView = getWindow().getDecorView();
View decorView = window.getDecorView(); WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(getWindow(), decorView);
WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(window, decorView); wic.setAppearanceLightStatusBars(!darkMode);
wic.setAppearanceLightStatusBars(!darkMode);
}
} else { } else {
// icons are always white back then // icons are always white back then
if (window != null && !darkMode) { if (!darkMode) {
window.setStatusBarColor(ColorUtils.compositeColors(Color.argb(127, 0, 0, 0), window.getStatusBarColor())); getWindow().setStatusBarColor(ColorUtils.compositeColors(Color.argb(127, 0, 0, 0), getWindow().getStatusBarColor()));
} }
} }

View File

@@ -22,19 +22,16 @@ import android.util.Log;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.Window;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RawRes; import androidx.annotation.RawRes;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.graphics.ColorUtils; import androidx.core.graphics.ColorUtils;
import androidx.core.os.LocaleListCompat; import androidx.core.os.LocaleListCompat;
import androidx.core.view.WindowInsetsControllerCompat;
import androidx.exifinterface.media.ExifInterface; import androidx.exifinterface.media.ExifInterface;
import androidx.palette.graphics.Palette; import androidx.palette.graphics.Palette;
@@ -666,31 +663,13 @@ public class Utils {
} }
} }
// Force correct color // XXX android 9 and below has issues with patched theme where the background becomes a
// Fixes OLED dark mode in MainActivity // rendering mess
// use after views are inflated
public static void postPatchColors(AppCompatActivity activity) { public static void postPatchColors(AppCompatActivity activity) {
activity.findViewById(android.R.id.content).setBackgroundColor(resolveBackgroundColor(activity));
}
// Either pass an Activity on which to call getWindow() or an existing Window (may be null) returned by that function.
public static void setNavigationBarColor(@Nullable AppCompatActivity activity, @Nullable Window window, int color, boolean useLightBars) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
if (window == null && activity != null) {
window = activity.getWindow();
}
if (window != null) {
View decorView = window.getDecorView();
WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(window, decorView);
wic.setAppearanceLightNavigationBars(useLightBars);
window.setNavigationBarColor(color);
}
}
}
public static int resolveBackgroundColor(AppCompatActivity activity) {
TypedValue typedValue = new TypedValue(); TypedValue typedValue = new TypedValue();
activity.getTheme().resolveAttribute(android.R.attr.colorBackground, typedValue, true); activity.getTheme().resolveAttribute(android.R.attr.colorBackground, typedValue, true);
return typedValue.data; activity.findViewById(android.R.id.content).setBackgroundColor(typedValue.data);
} }
public static int getHeaderColorFromImage(Bitmap image, int fallback) { public static int getHeaderColorFromImage(Bitmap image, int fallback) {

View File

@@ -7,7 +7,6 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.MenuItem; import android.view.MenuItem;
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
@@ -57,13 +56,6 @@ public class SettingsActivity extends CatimaAppCompatActivity {
if (savedInstanceState != null) { if (savedInstanceState != null) {
fragment.mReloadMain = savedInstanceState.getBoolean(RELOAD_MAIN_STATE); fragment.mReloadMain = savedInstanceState.getBoolean(RELOAD_MAIN_STATE);
} }
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
finishSettingsActivity();
}
});
} }
@Override @Override
@@ -84,6 +76,11 @@ public class SettingsActivity extends CatimaAppCompatActivity {
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
@Override
public void onBackPressed() {
finishSettingsActivity();
}
private void finishSettingsActivity() { private void finishSettingsActivity() {
if (fragment.mReloadMain) { if (fragment.mReloadMain) {
Intent intent = new Intent(); Intent intent = new Intent();

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M16,1L4,1c-1.1,0 -2,0.9 -2,2v14h2L4,3h12L16,1zM19,5L8,5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h11c1.1,0 2,-0.9 2,-2L21,7c0,-1.1 -0.9,-2 -2,-2zM19,21L8,21L8,7h11v14z"/>
</vector>

View File

@@ -9,6 +9,13 @@
android:titleCondensed="@string/editCardTitle" android:titleCondensed="@string/editCardTitle"
app:showAsAction="ifRoom"/> app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_copy_to_clipboard"
android:icon="@drawable/ic_copy"
android:title="@string/copy_to_clipboard"
android:titleCondensed="@string/copy_to_clipboard"
app:showAsAction="ifRoom"/>
<item <item
android:id="@+id/action_share" android:id="@+id/action_share"
android:icon="@drawable/ic_share" android:icon="@drawable/ic_share"

View File

@@ -4,52 +4,280 @@ J. Lavoie
Allan Nordhøy Allan Nordhøy
solokot solokot
Heimen Stoffels Heimen Stoffels
FC (Fay) Stegerman
Oğuz Ersen Oğuz Ersen
FC (Fay) Stegerman
Katharine Chui Katharine Chui
SlavekB SlavekB
StoyanDimitrov
mondstern mondstern
StoyanDimitrov
IllusiveMan196 IllusiveMan196
Altonss Altonss
Michael Moroni Michael Moroni
GM Gediminas Murauskas
Eric
Petr Novák Petr Novák
Joel A Joel A
laralem laralem
Taco Taco
pfaffenrodt pfaffenrodt
Aayush Gupta Eric
HudobniVolk
Nyatsuki Nyatsuki
HudobniVolk
Samantaz Fox Samantaz Fox
arno-github arno-github
Cliff Heraldo
Sergio Paredes
Ankit Tiwari Ankit Tiwari
Milan Šalka Sergio Paredes
Jiri Grönroos Clxff H3r4ld0
Aayush Gupta
Balázs Meskó Balázs Meskó
Giovanni Donisi
Milo Ivir
Skrripy
huuhaa huuhaa
Projjal Moitra Projjal Moitra
Quentin PAGÈS Quentin PAGÈS
waffshappen Giovanni Donisi
Eryk Michalak
Ziad OUALHADJ
Robin Liu
mdvhimself
Denis Shilin
Miha Frangež
Silvério Santos
Virginie
Michael Gangolf
rudy3
Kim Seohyun
Govind S Nair
Freddo espresso
arshbeerSingh
Alexander Ivanov Alexander Ivanov
arshbeerSingh
Denis Shilin
Freddo espresso
Ziad OUALHADJ
Silvério Santos
Miha Frangež
Eryk Michalak
Arnis Jaundžeikars
Dan
sr093906
mdvhimself
Jiri Grönroos
Katarzyna
echo r"0xX4H" | rev
Magnitudee
Olivia (Zoe)
betsythefc
waffshappen
Robin
ati3
enolp
Evgeniy Khramov
Jane Kong
Jean Mareilles
Jean-Luc Tibaux
José Rebelo
K. Herbert
Lisa A.
Mawuena M. KODZO A.
rudy3
Reza
Still / Azaka
String E. Fighter
Tapu
Yurical
rr-vesp
yangyangdaji
丛林意志
alajemba-vik
/usr/local/ΕΨΗΕΛΩΝ
Adolfo Jayme-Barrientos
Alessandro Mandelli
KovalevArtem
Artem M.
Astrohops1
BMN
balaraz
BootVirtual
Bottan Hermawan
zChiip
Clonewayx
D. Domig
Danylo Lystopadov
Diego
Eudes-alencar
Fede Pujol
FineFindus
francescbassas
Jason Li
Jesse Davids
Kamborio
Kis Dominik
Lukas Grassauer
Luna Jernberg
Marnick L'Eau
Michalis
Michał
Milo Ivir
Mohamed A. Salah
Yatoku
the7thNightmare
Quang Trung
Rishi Agarwal
Rosdyana Kusuma
Sabri Ünal
umoenks
Simon Rusinov
Siriusmart
Mritunjay
Tarik Dzambic
Thomas Bertels
Thomas Cruveilher
Tian Jiale
Tong Liu
Tymofii Lytvynenko
Wanath
Younes Bouhouche
Runner
ce i moa
enescan201
Frablock
inesre
lgasp
notlin4
phlostically
pokeghost
sal0max
Ágata Leuck
BmBKun
NamHyeonjeong
Aditya Das
asier123123131
Kevin Sicong Jiang
Tomer Ben-Rachel
Tom Sawyer
tfuxu
Ahmed Saleh
Airat
Tapwaterisokey
Alexandra-Ioana Moroz
sNiXx
Angela Enogieru
Animesh Chatterjee
Artūras Kalenda
Ashish Yadav
Aya Elsaadany
Aya
Biren
Booc Sylvan
Brage Nesteby Reitan
Cap Amr Karam
Carlo Maria Cuoghi Barbagli
ChaoticNeutralCzech
ChengCheng
CherryMonster222
Colgrave
djcand
Mylou53
Daniel Sych
danieluhrinyi
Daniele Tricoli
Kasina Dheeraj
Donno
Reihan
Erik Spjelkavik
Flav
Franciszek Stefan
Gael Caraballo
Giacomo Alessandroni
Govind S Nair
Grzegorz
gneiss15
Hamustra Scans
helzubair
HowITsDone
Hubert Maciejewicz
Izzy
Jacek
Jacopo Gennaro Esposito
Jean-Baptiste
Kung-chih
Karvjorm
polar
krkk
Kristoffer Grundström
Laura Ferraz
Lionel HANNEQUIN
Lucas da Costa
almir992
Manan Jhaveri
Marco
BRBsoup
Mateo Gomez
Mattia
Md. Al-Amin
Michael Gangolf
Milan Šalka
3DN1M
Minecraft boom
Mobashir Raihan
Moi Toi
DiCeYMaYo
DivideEtImpera
Nicolas
Nosnahc
osamaqw
pa4k
pbeckmann
Peer Beckmann
vandman
Piotr Strebski
Piotr Zet
Poorva Patidar
Quang Nguyen
Ratnesh
Rohan Babbar
Ronak Upadhyay
Rose Liverman
SKULD
Sabrina
Salem Malus
Samarth Asthan
tatyhub
Shailendra Maurya
SilverFS
Simone Dotto
Subhashish Anand
Subhradeep Bera
Swayam Khare
SziaTomi
Mehedi Hasan
Tim Trek
Titas Pažereckas
atakujonc
tkraljevic
Tony C
Vancha March
tyap-lyap-ivprod
Waldemar Stoczkowski
Wiktor Kwapisiewicz
Yevgeny M
Yusril A
ahmed-awad26
Avik Kundu
ayuyydev
diksha-2911
essys
gbonaspetti
gittyboy-cell
huang ivan
lassr8
liva
lucafont2
mtrmirez
michaelpratana
opsik
pesta007
polarhun
pooyanazari
psa-jforestier
z369369
sergio
skauVictor
080502
Marcus
techwebpd
tjw123hh
Truestorybaby
tygyh
unstartdev
wmilan 17
MeH762
يوسف لطفي
しいたけ
元气
JaeBeom An
JungHee Lee

View File

@@ -18,6 +18,7 @@
<string name="confirm">تأكيد</string> <string name="confirm">تأكيد</string>
<string name="deleteConfirmation">مسح هذة البطاقة نهائيا؟</string> <string name="deleteConfirmation">مسح هذة البطاقة نهائيا؟</string>
<string name="ok">حسنا</string> <string name="ok">حسنا</string>
<string name="copy_to_clipboard">نسخ البطاقة الشخصية الى الحافظة</string>
<string name="share">شارك</string> <string name="share">شارك</string>
<string name="sendLabel">ارسل…</string> <string name="sendLabel">ارسل…</string>
<string name="editCardTitle">عدل البطاقة</string> <string name="editCardTitle">عدل البطاقة</string>
@@ -25,6 +26,7 @@
<string name="scanCardBarcode">مسح باركود</string> <string name="scanCardBarcode">مسح باركود</string>
<string name="cardShortcut">اختصار البطاقة</string> <string name="cardShortcut">اختصار البطاقة</string>
<string name="noCardsMessage">اضف بطاقة أولا</string> <string name="noCardsMessage">اضف بطاقة أولا</string>
<string name="card_ids_copied">البطاقة(ات) الشخصية المنسوخة</string>
<string name="barcodeImageDescriptionWithType">صورة <xliff:g>%s</xliff:g> باركود</string> <string name="barcodeImageDescriptionWithType">صورة <xliff:g>%s</xliff:g> باركود</string>
<string name="noCardExistsError">لا يمكن العثور على هذه البطاقة</string> <string name="noCardExistsError">لا يمكن العثور على هذه البطاقة</string>
<string name="failedParsingImportUriError">لا يمكن تحليل الرابط المستورد</string> <string name="failedParsingImportUriError">لا يمكن تحليل الرابط المستورد</string>
@@ -45,6 +47,7 @@
<string name="app_license">البرمجيات الحرة متروكة الحقوق, ترخيص +GPLv3</string> <string name="app_license">البرمجيات الحرة متروكة الحقوق, ترخيص +GPLv3</string>
<string name="app_libraries">مكتبات الطرف الثالث الحرة: <xliff:g id="app_libraries_list">%s</xliff:g></string> <string name="app_libraries">مكتبات الطرف الثالث الحرة: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="selectBarcodeTitle">اختار الباركود</string> <string name="selectBarcodeTitle">اختار الباركود</string>
<string name="copy_to_clipboard_toast">تم نسخ بطاقة الهوية إلى الحافظة</string>
<string name="thumbnailDescription">صورة مصغرة</string> <string name="thumbnailDescription">صورة مصغرة</string>
<string name="starImage">نجم مفضل</string> <string name="starImage">نجم مفضل</string>
<string name="settings">اعدادات</string> <string name="settings">اعدادات</string>
@@ -92,6 +95,7 @@
<string name="setBarcodeId">قم بتعيين قيمة الباركود</string> <string name="setBarcodeId">قم بتعيين قيمة الباركود</string>
<string name="unsupportedBarcodeType">لا يمكن عرض نوع الباركود هذا. قد يكون مدعومًا في إصدار أحدث من التطبيق.</string> <string name="unsupportedBarcodeType">لا يمكن عرض نوع الباركود هذا. قد يكون مدعومًا في إصدار أحدث من التطبيق.</string>
<string name="wrongValueForBarcodeType">القيمة غير صالحة لنوع الباركود المحدد</string> <string name="wrongValueForBarcodeType">القيمة غير صالحة لنوع الباركود المحدد</string>
<string name="copy_to_clipboard_multiple_toast">تم نسخ بطاقات الهوية إلى الحافظة</string>
<string name="intent_import_card_from_url_share_multiple_text">أريد مشاركة بعض البطاقات معك</string> <string name="intent_import_card_from_url_share_multiple_text">أريد مشاركة بعض البطاقات معك</string>
<string name="frontImageDescription">الصورة الأمامية</string> <string name="frontImageDescription">الصورة الأمامية</string>
<string name="backImageDescription">الصورة الخلفية</string> <string name="backImageDescription">الصورة الخلفية</string>
@@ -173,9 +177,9 @@
<item quantity="zero">مسح <xliff:g>%d</xliff:g> بطاقة</item> <item quantity="zero">مسح <xliff:g>%d</xliff:g> بطاقة</item>
<item quantity="one">مسح <xliff:g>%d</xliff:g> بطاقة</item> <item quantity="one">مسح <xliff:g>%d</xliff:g> بطاقة</item>
<item quantity="two">مسح <xliff:g>%d</xliff:g> بطاقتين</item> <item quantity="two">مسح <xliff:g>%d</xliff:g> بطاقتين</item>
<item quantity="few">مسح <xliff:g>%d</xliff:g> بطائق</item> <item quantity="few">مسح <xliff:g>%d</xliff:g> بطاقات</item>
<item quantity="many">مسح <xliff:g>%d</xliff:g> بطاقة</item> <item quantity="many">مسح <xliff:g>%d</xliff:g> بطاقات</item>
<item quantity="other">مسح <xliff:g>%d</xliff:g> بطاقة</item> <item quantity="other">مسح <xliff:g>%d</xliff:g> بطاقات</item>
</plurals> </plurals>
<plurals name="deleteCardsConfirmation"> <plurals name="deleteCardsConfirmation">
<item quantity="zero">مسح هذه <xliff:g>%d</xliff:g> البطاقة نهائيا؟</item> <item quantity="zero">مسح هذه <xliff:g>%d</xliff:g> البطاقة نهائيا؟</item>
@@ -199,7 +203,7 @@
<string name="groupsList">مجموعات: <xliff:g>%s</xliff:g></string> <string name="groupsList">مجموعات: <xliff:g>%s</xliff:g></string>
<string name="settings_disable_lockscreen_while_viewing_card">منع قفل الشاشة</string> <string name="settings_disable_lockscreen_while_viewing_card">منع قفل الشاشة</string>
<string name="leaveWithoutSaveTitle">خروج</string> <string name="leaveWithoutSaveTitle">خروج</string>
<string name="editGroup">تعديل المجموعه: <xliff:g>%s</xliff:g></string> <string name="editGroup">مجموعة التعديل: <xliff:g>%s</xliff:g></string>
<plurals name="groupCardCount"> <plurals name="groupCardCount">
<item quantity="zero"><xliff:g>%d</xliff:g> بطاقة</item> <item quantity="zero"><xliff:g>%d</xliff:g> بطاقة</item>
<item quantity="one"><xliff:g>%d</xliff:g> بطاقة</item> <item quantity="one"><xliff:g>%d</xliff:g> بطاقة</item>
@@ -302,14 +306,4 @@
<string name="settings_category_title_privacy">خصوصية</string> <string name="settings_category_title_privacy">خصوصية</string>
<string name="show_balance">إظهار التوازن</string> <string name="show_balance">إظهار التوازن</string>
<string name="settings_keep_screen_on_summary">تعطيل مهلة الشاشة أثناء عرض البطاقة</string> <string name="settings_keep_screen_on_summary">تعطيل مهلة الشاشة أثناء عرض البطاقة</string>
<string name="balanceParsingFailed">رصيد غير صالح</string>
<string name="card_id_must_not_be_empty">يجب ألا يكون معرف البطاقة فارغا</string>
<string name="add_a_card_in_a_different_way">أضف بطاقة بطريقة مختلفة</string>
<string name="manually_enter_barcode_instructions">أدخل رقم الهوية أو النص الموجود على بطاقتك واضغط على الرمز الشريطي الذي يشبه الموجود على بطاقتك.</string>
<string name="action_more_options">خيارات أخرى</string>
<string name="enter_card_id">أدخل رقم الهوية أو النص الموجود على بطاقتك</string>
<string name="addWithoutBarcode">إضافة بدون باركود</string>
<string name="field_must_not_be_empty">يجب ألا يكون الحقل فارغا</string>
<string name="app_name">كاتيما</string>
<string name="settings_follow_sensor_orientation">التدوير دائمًا ( تجاهل إعدادات النظام)</string>
</resources> </resources>

View File

@@ -40,8 +40,9 @@
<string name="addCardTitle">Добавяне на карта</string> <string name="addCardTitle">Добавяне на карта</string>
<string name="removeImage">Премахване на изображение</string> <string name="removeImage">Премахване на изображение</string>
<string name="takePhoto">Снимане</string> <string name="takePhoto">Снимане</string>
<string name="copy_to_clipboard_multiple_toast">Номерата са копирани в междинната памет</string>
<string name="intent_import_card_from_url_share_multiple_text">Искам да споделя тези карти с вас</string> <string name="intent_import_card_from_url_share_multiple_text">Искам да споделя тези карти с вас</string>
<string name="wrongValueForBarcodeType">Стойноста е неприемлива за избрания щрихкод</string> <string name="wrongValueForBarcodeType">Неприемлива стойност за избрания вид щрихкод</string>
<string name="setBarcodeId">Задаване на стойност</string> <string name="setBarcodeId">Задаване на стойност</string>
<string name="sameAsCardId">Като номера</string> <string name="sameAsCardId">Като номера</string>
<string name="barcodeId">Стойност на щрихкода</string> <string name="barcodeId">Стойност на щрихкода</string>
@@ -88,6 +89,7 @@
<string name="settings">Настройки</string> <string name="settings">Настройки</string>
<string name="starImage">Звезда за любимо</string> <string name="starImage">Звезда за любимо</string>
<string name="thumbnailDescription">Миниатюра</string> <string name="thumbnailDescription">Миниатюра</string>
<string name="copy_to_clipboard_toast">Номерът е копиран в междинната памет</string>
<string name="selectBarcodeTitle">Избиране на щрихкод</string> <string name="selectBarcodeTitle">Избиране на щрихкод</string>
<string name="importOptionApplicationButton">Избиране чрез приложение</string> <string name="importOptionApplicationButton">Избиране чрез приложение</string>
<string name="importing">Внасяне…</string> <string name="importing">Внасяне…</string>
@@ -105,6 +107,7 @@
<string name="scanCardBarcode">Снемане на щрихкод</string> <string name="scanCardBarcode">Снемане на щрихкод</string>
<string name="editCardTitle">Редактиране на карта</string> <string name="editCardTitle">Редактиране на карта</string>
<string name="share">Споделя</string> <string name="share">Споделя</string>
<string name="copy_to_clipboard">Копира номера в междинната памет</string>
<string name="ok">Добре</string> <string name="ok">Добре</string>
<string name="importSuccessful">Данните са внесени</string> <string name="importSuccessful">Данните са внесени</string>
<string name="chooseImportType">Внасяне на данни на</string> <string name="chooseImportType">Внасяне на данни на</string>
@@ -193,7 +196,7 @@
<string name="group_name_already_in_use">Има списък с това име</string> <string name="group_name_already_in_use">Има списък с това име</string>
<string name="group_updated">Промените са запазени</string> <string name="group_updated">Промените са запазени</string>
<string name="selectColor">Избиране на цвят</string> <string name="selectColor">Избиране на цвят</string>
<string name="group_name_is_empty">Името на списъка не трябва да е празно</string> <string name="group_name_is_empty">Името на списъка не може да е празно</string>
<string name="group_edit">Редактиране на списък</string> <string name="group_edit">Редактиране на списък</string>
<string name="noGiftCardsGroup">Създайте карти и ги зачислите към списък от тук.</string> <string name="noGiftCardsGroup">Създайте карти и ги зачислите към списък от тук.</string>
<string name="translate_platform">в Weblate</string> <string name="translate_platform">в Weblate</string>
@@ -201,6 +204,7 @@
<string name="starred">Със звезда</string> <string name="starred">Със звезда</string>
<string name="showMoreInfo">Показване на информация</string> <string name="showMoreInfo">Показване на информация</string>
<string name="options">Настройки</string> <string name="options">Настройки</string>
<string name="card_ids_copied">Номерата са копирани</string>
<plurals name="balancePoints"> <plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> точка</item> <item quantity="one"><xliff:g>%s</xliff:g> точка</item>
<item quantity="other"><xliff:g>%s</xliff:g> точки</item> <item quantity="other"><xliff:g>%s</xliff:g> точки</item>
@@ -274,14 +278,4 @@
<string name="show_archived_cards">Архивирани карти</string> <string name="show_archived_cards">Архивирани карти</string>
<string name="view_online">Преглед</string> <string name="view_online">Преглед</string>
<string name="app_copyright_short">Всички права запазени © Силвия ван Ос и сътрудници</string> <string name="app_copyright_short">Всички права запазени © Силвия ван Ос и сътрудници</string>
<string name="card_id_must_not_be_empty">Номера на картата не трябва да бъде празен</string>
<string name="balanceParsingFailed">Неприемлив баланс</string>
<string name="add_a_card_in_a_different_way">Добавяне на карта по друг начин</string>
<string name="manually_enter_barcode_instructions">Въведете номера или текста и изберете щрихкода, който прилича на този от картата.</string>
<string name="action_more_options">Повече</string>
<string name="enter_card_id">Въведете номера или текста от картата</string>
<string name="addWithoutBarcode">Добавяне на карта без щрихкод</string>
<string name="field_must_not_be_empty">Полето не трябва да е празно</string>
<string name="app_name">Catima</string>
<string name="settings_follow_sensor_orientation">Винаги да се завърта (пренебрегва системната настройка)</string>
</resources> </resources>

View File

@@ -33,6 +33,7 @@
<string name="setBarcodeId">বারকোড আইডি সেট করুন</string> <string name="setBarcodeId">বারকোড আইডি সেট করুন</string>
<string name="unsupportedBarcodeType">এই বারকোডের টাইপটি এখন দেখানো যাচ্ছে না। অ্যাপের পরের সংস্করণে হয়ত এটি সমর্থন করা যেতে পারে।</string> <string name="unsupportedBarcodeType">এই বারকোডের টাইপটি এখন দেখানো যাচ্ছে না। অ্যাপের পরের সংস্করণে হয়ত এটি সমর্থন করা যেতে পারে।</string>
<string name="wrongValueForBarcodeType">বারকোড টাইপের জন্য ভুল মান</string> <string name="wrongValueForBarcodeType">বারকোড টাইপের জন্য ভুল মান</string>
<string name="copy_to_clipboard_multiple_toast">আইডিগুলি ক্লিপবোর্ডে কপি হল</string>
<string name="intent_import_card_from_url_share_multiple_text">url থেকে ইন্টেন্ট ইম্পোর্ট কার্ড একাধিক টেক্সট শেয়ার করে</string> <string name="intent_import_card_from_url_share_multiple_text">url থেকে ইন্টেন্ট ইম্পোর্ট কার্ড একাধিক টেক্সট শেয়ার করে</string>
<string name="frontImageDescription">সামনের চিত্র</string> <string name="frontImageDescription">সামনের চিত্র</string>
<string name="backImageDescription">পিছনের চিত্র</string> <string name="backImageDescription">পিছনের চিত্র</string>
@@ -67,11 +68,13 @@
<string name="reverse">...উল্টো ক্রমে</string> <string name="reverse">...উল্টো ক্রমে</string>
<string name="sort_by">ক্রমানুসার</string> <string name="sort_by">ক্রমানুসার</string>
<string name="noCardExistsError">কার্ডটি খুঁজে পাওয়া গেল না</string> <string name="noCardExistsError">কার্ডটি খুঁজে পাওয়া গেল না</string>
<string name="card_ids_copied">আইডি কপি করা হয়েছে</string>
<string name="noCardsMessage">কোন কার্ড বার্তা নেই</string> <string name="noCardsMessage">কোন কার্ড বার্তা নেই</string>
<string name="addCardTitle">কার্ডের শিরোনাম যোগ করুন</string> <string name="addCardTitle">কার্ডের শিরোনাম যোগ করুন</string>
<string name="editCardTitle">কার্ডের শিরোনাম সম্পাদনা করুন</string> <string name="editCardTitle">কার্ডের শিরোনাম সম্পাদনা করুন</string>
<string name="sendLabel">পাঠান…</string> <string name="sendLabel">পাঠান…</string>
<string name="share">ভাগ</string> <string name="share">ভাগ</string>
<string name="copy_to_clipboard">নকল করুন ক্লিপবোর্ড এ</string>
<string name="deleteConfirmation">এই কার্ডটি চিরকালের জন্য মুছে দেবো\?</string> <string name="deleteConfirmation">এই কার্ডটি চিরকালের জন্য মুছে দেবো\?</string>
<string name="confirm">নিশ্চিত করুন</string> <string name="confirm">নিশ্চিত করুন</string>
<string name="delete">মুছে ফেলুন</string> <string name="delete">মুছে ফেলুন</string>
@@ -122,6 +125,7 @@
<string name="importExport">আমদানি/রপ্তানি</string> <string name="importExport">আমদানি/রপ্তানি</string>
<string name="cardShortcut">কার্ড শর্টকাট</string> <string name="cardShortcut">কার্ড শর্টকাট</string>
<string name="exportFailed">রপ্তানি করা যাচ্ছে না</string> <string name="exportFailed">রপ্তানি করা যাচ্ছে না</string>
<string name="copy_to_clipboard_toast">আইডি ক্লিপবোর্ডে নকল করা হল</string>
<string name="importExportHelp">নিজের ডেটা অন্য কোথাও সংরক্ষণ করে রাখলে পরে সেটা অন্য ডিভাইসে সরিয়ে নিতে পারবেন।</string> <string name="importExportHelp">নিজের ডেটা অন্য কোথাও সংরক্ষণ করে রাখলে পরে সেটা অন্য ডিভাইসে সরিয়ে নিতে পারবেন।</string>
<string name="importFailed">আমদানি করা গেল না</string> <string name="importFailed">আমদানি করা গেল না</string>
<string name="noGiftCardsGroup">কিছু কার্ড বানান আর এই গ্রুপে স্থির করুন।</string> <string name="noGiftCardsGroup">কিছু কার্ড বানান আর এই গ্রুপে স্থির করুন।</string>

View File

@@ -40,6 +40,7 @@
<item quantity="one">এই <xliff:g>%d</xliff:g> কার্ডটি স্থায়ীভাবে মুছবেন\?</item> <item quantity="one">এই <xliff:g>%d</xliff:g> কার্ডটি স্থায়ীভাবে মুছবেন\?</item>
<item quantity="other">এই <xliff:g>%d</xliff:g> কার্ডগুলিকে স্থায়ীভাবে মুছবেন\?</item> <item quantity="other">এই <xliff:g>%d</xliff:g> কার্ডগুলিকে স্থায়ীভাবে মুছবেন\?</item>
</plurals> </plurals>
<string name="copy_to_clipboard">ক্লিপবোর্ডে আইডি কপি করুন</string>
<string name="share">শেয়ার করুন</string> <string name="share">শেয়ার করুন</string>
<string name="editCardTitle">কার্ড সম্পাদনা করুন</string> <string name="editCardTitle">কার্ড সম্পাদনা করুন</string>
<string name="addCardTitle">কার্ড যোগ করুন</string> <string name="addCardTitle">কার্ড যোগ করুন</string>
@@ -52,28 +53,5 @@
<string name="noGiftCards">একটি কার্ড যোগ করতে + প্লাস বোতামে ক্লিক করুন বা ⋮ মেনু থেকে আমদানি করুন।</string> <string name="noGiftCards">একটি কার্ড যোগ করতে + প্লাস বোতামে ক্লিক করুন বা ⋮ মেনু থেকে আমদানি করুন।</string>
<string name="cardShortcut">কার্ড শর্টকাট</string> <string name="cardShortcut">কার্ড শর্টকাট</string>
<string name="noCardsMessage">প্রথমে একটি কার্ড যোগ করুন</string> <string name="noCardsMessage">প্রথমে একটি কার্ড যোগ করুন</string>
<string name="noCardExistsError">কার্ডটি খুঁজে পাওয়া যায়নি</string> <string name="card_ids_copied">আইডি কপি করা হয়েছে</string>
<string name="barcodeImageDescriptionWithType">ছবি <xliff:g>%s</xliff:g> বারকোড</string>
<string name="cameraPermissionDeniedTitle">ক্যামেরাটি ব্যবহার করা যাচ্ছে না</string>
<string name="failedParsingImportUriError">দেওয়া URL-টি প্রক্রিয়া করা যাচ্ছে না</string>
<string name="exporting">রপ্তানি করা হচ্ছে…</string>
<string name="noCameraPermissionDirectToSystemSetting">বারকোড স্ক্যান করার জন্য, ক্যাটিমা কে ক্যামেরাটি ব্যবহার করার অনুমতি দিতে হবে। এইখানে টাচ করে আপনার অনুমতি সেটিংস পালটে নিন।</string>
<string name="settings_dark_theme">অন্ধকার</string>
<string name="exportOptionExplanation">ডেটাটি আপনার পছন্দের জায়গায় রাখা হবে।</string>
<string name="importFailed">আমদানি করা গেল না</string>
<string name="permissionReadCardsDescription">সমস্ত ক্যাটিমা কার্ডস এবং তার তথ্য পড়ুন, নোট্স আর ছবি সহ</string>
<string name="importFailedTitle">আমদানি ব্যর্থ</string>
<string name="importExportHelp">নিজের ডেটা সংরক্ষণ করে রাখলে পরে সেটা অন্য ডিভাইসে সরিয়ে নিতে পারবেন।</string>
<string name="importExport">আমদানি/রপ্তানি</string>
<string name="importing">আমদানি করা হচ্ছে…</string>
<string name="exportFailed">রপ্তানি করা যাচ্ছে না</string>
<string name="exportName">আমদানি/রপ্তানি</string>
<string name="cameraPermissionRequired">এই কাজটির জন্য ক্যামেরা ব্যবহার করার অনুমতি লাগবে…</string>
<string name="importSuccessfulTitle">আমদানি শেষ</string>
<string name="exportSuccessfulTitle">রপ্তানি শেষ</string>
<string name="permissionReadCardsLabel">কাটিমা কার্ডস পড়ুন</string>
<string name="storageReadPermissionRequired">এই কাজটির জন্য ফোনের স্টোরেজ দেখার অনুমতি লাগবে…</string>
<string name="exportFailedTitle">রপ্তানি ব্যর্থ</string>
<string name="settings_card_orientation">বারকোড অভিমুখ (ওরিয়েন্টেশন)</string>
<string name="app_name">ক্যাটিমা</string>
</resources> </resources>

View File

@@ -33,6 +33,7 @@
<string name="setBarcodeId">Postavi vrijednost za bar kod</string> <string name="setBarcodeId">Postavi vrijednost za bar kod</string>
<string name="unsupportedBarcodeType">Ovaj bar kod još nije prikazan. Ona može biti podržana u kasnijoj verziji app.</string> <string name="unsupportedBarcodeType">Ovaj bar kod još nije prikazan. Ona može biti podržana u kasnijoj verziji app.</string>
<string name="wrongValueForBarcodeType">Izabrana vrijednost nije izvršna</string> <string name="wrongValueForBarcodeType">Izabrana vrijednost nije izvršna</string>
<string name="copy_to_clipboard_multiple_toast">IDs kartica kopiran u clipboard</string>
<string name="intent_import_card_from_url_share_multiple_text">Želim podijeliti karte s tobom</string> <string name="intent_import_card_from_url_share_multiple_text">Želim podijeliti karte s tobom</string>
<string name="frontImageDescription">Slika kartice</string> <string name="frontImageDescription">Slika kartice</string>
<string name="backImageDescription">Slika pozadine kartice</string> <string name="backImageDescription">Slika pozadine kartice</string>
@@ -67,11 +68,13 @@
<string name="reverse">Rikverc</string> <string name="reverse">Rikverc</string>
<string name="sort_by">Sortiraj</string> <string name="sort_by">Sortiraj</string>
<string name="noCardExistsError">Nisam mogao pronaći tu karticu</string> <string name="noCardExistsError">Nisam mogao pronaći tu karticu</string>
<string name="card_ids_copied">Kopiran ID/ovi</string>
<string name="noCardsMessage">Dodaj prvo kartu</string> <string name="noCardsMessage">Dodaj prvo kartu</string>
<string name="addCardTitle">Dodaj Kartu</string> <string name="addCardTitle">Dodaj Kartu</string>
<string name="editCardTitle">Izmijeni Karticu</string> <string name="editCardTitle">Izmijeni Karticu</string>
<string name="sendLabel">Pošalji…</string> <string name="sendLabel">Pošalji…</string>
<string name="share">Podijeli</string> <string name="share">Podijeli</string>
<string name="copy_to_clipboard">Kopiraj ID u clipboard</string>
<string name="deleteConfirmation">Izbriši trajno ovu karticu\?</string> <string name="deleteConfirmation">Izbriši trajno ovu karticu\?</string>
<string name="confirm">Potvrdi</string> <string name="confirm">Potvrdi</string>
<string name="delete">Obriši</string> <string name="delete">Obriši</string>

View File

@@ -11,6 +11,7 @@
<string name="delete">Smazat</string> <string name="delete">Smazat</string>
<string name="confirm">Potvrdit</string> <string name="confirm">Potvrdit</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="copy_to_clipboard">Kopírovat ID do schránky</string>
<string name="sendLabel">Odeslat…</string> <string name="sendLabel">Odeslat…</string>
<string name="editCardTitle">Editovat kartu</string> <string name="editCardTitle">Editovat kartu</string>
<string name="addCardTitle">Přidat kartu</string> <string name="addCardTitle">Přidat kartu</string>
@@ -37,6 +38,7 @@
<string name="about_title_fmt">O aplikaci <xliff:g id="app_name">%s</xliff:g></string> <string name="about_title_fmt">O aplikaci <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Verze: <xliff:g id="version">%s</xliff:g></string> <string name="debug_version_fmt">Verze: <xliff:g id="version">%s</xliff:g></string>
<string name="selectBarcodeTitle">Vyberte čárový kód</string> <string name="selectBarcodeTitle">Vyberte čárový kód</string>
<string name="copy_to_clipboard_toast">ID zkopírováno do schránky</string>
<string name="deleteTitle">Smazat kartu</string> <string name="deleteTitle">Smazat kartu</string>
<string name="deleteConfirmation">Opravdu chcete smazat tuto kartu\?</string> <string name="deleteConfirmation">Opravdu chcete smazat tuto kartu\?</string>
<string name="moveBarcodeToTopOfScreen">Přesunout čárový kód do horní části obrazovky</string> <string name="moveBarcodeToTopOfScreen">Přesunout čárový kód do horní části obrazovky</string>
@@ -61,6 +63,7 @@
<string name="noMatchingGiftCards">Nic nenalezeno. Zkuste zadat jiný výraz.</string> <string name="noMatchingGiftCards">Nic nenalezeno. Zkuste zadat jiný výraz.</string>
<string name="action_search">Hledat</string> <string name="action_search">Hledat</string>
<string name="thumbnailDescription">Miniatura</string> <string name="thumbnailDescription">Miniatura</string>
<string name="card_ids_copied">ID zkopírováno</string>
<plurals name="deleteCardsConfirmation"> <plurals name="deleteCardsConfirmation">
<item quantity="one">Opravdu chcete trvale odstranit <xliff:g>%d</xliff:g> kartu\?</item> <item quantity="one">Opravdu chcete trvale odstranit <xliff:g>%d</xliff:g> kartu\?</item>
<item quantity="few">Opravdu chcete trvale odstranit <xliff:g>%d</xliff:g> karty\?</item> <item quantity="few">Opravdu chcete trvale odstranit <xliff:g>%d</xliff:g> karty\?</item>
@@ -114,6 +117,7 @@
<string name="backImageDescription">Obrázek zadní strany</string> <string name="backImageDescription">Obrázek zadní strany</string>
<string name="frontImageDescription">Obrázek přední strany</string> <string name="frontImageDescription">Obrázek přední strany</string>
<string name="intent_import_card_from_url_share_multiple_text">Chci s vámi sdílet karty</string> <string name="intent_import_card_from_url_share_multiple_text">Chci s vámi sdílet karty</string>
<string name="copy_to_clipboard_multiple_toast">ID zkopírována do schránky</string>
<string name="wrongValueForBarcodeType">Hodnota není platná pro vybraný typ čárového kódu</string> <string name="wrongValueForBarcodeType">Hodnota není platná pro vybraný typ čárového kódu</string>
<string name="unsupportedBarcodeType">Tento typ čárového kódu zatím nelze zobrazit. Možná bude podporován v pozdější verzi aplikace.</string> <string name="unsupportedBarcodeType">Tento typ čárového kódu zatím nelze zobrazit. Možná bude podporován v pozdější verzi aplikace.</string>
<string name="barcodeId">Hodnota čárového kódu</string> <string name="barcodeId">Hodnota čárového kódu</string>
@@ -147,8 +151,8 @@
<string name="errorReadingImage">Obrázek se nepodařilo přečíst</string> <string name="errorReadingImage">Obrázek se nepodařilo přečíst</string>
<string name="noBarcodeFound">Čárový kód nenalezen</string> <string name="noBarcodeFound">Čárový kód nenalezen</string>
<string name="groupsList">Skupiny: <xliff:g>%s</xliff:g></string> <string name="groupsList">Skupiny: <xliff:g>%s</xliff:g></string>
<string name="addFromImage">Vybrat obrázek z galerie</string> <string name="addFromImage">Výběr obrázku z galerie</string>
<string name="addManually">Zadat čárový kód ručně</string> <string name="addManually">Ruční zadání ID</string>
<string name="leaveWithoutSaveConfirmation">Ukončit bez uložení\?</string> <string name="leaveWithoutSaveConfirmation">Ukončit bez uložení\?</string>
<string name="leaveWithoutSaveTitle">Ukončit</string> <string name="leaveWithoutSaveTitle">Ukončit</string>
<string name="failedOpeningFileManager">Nejprve si nainstalujte správce souborů.</string> <string name="failedOpeningFileManager">Nejprve si nainstalujte správce souborů.</string>
@@ -195,7 +199,7 @@
<string name="setIcon">Nastavit miniaturu</string> <string name="setIcon">Nastavit miniaturu</string>
<string name="group_edit">Upravit skupinu</string> <string name="group_edit">Upravit skupinu</string>
<string name="group_name_already_in_use">Název skupiny je již použitý</string> <string name="group_name_already_in_use">Název skupiny je již použitý</string>
<string name="group_name_is_empty">Název skupiny nesmí být prázdný</string> <string name="group_name_is_empty">Název skupiny nemůže být prázdný</string>
<string name="group_updated">Skupina aktualizována</string> <string name="group_updated">Skupina aktualizována</string>
<string name="editGroup">Úprava skupiny: <xliff:g>%s</xliff:g></string> <string name="editGroup">Úprava skupiny: <xliff:g>%s</xliff:g></string>
<string name="noGiftCardsGroup">Zatím nemáte žádné věrnostní karty. Jakmile nějaké přidáte, můžete je zde přiřadit do skupiny.</string> <string name="noGiftCardsGroup">Zatím nemáte žádné věrnostní karty. Jakmile nějaké přidáte, můžete je zde přiřadit do skupiny.</string>
@@ -281,14 +285,4 @@
<string name="action_display_options">Možnosti zobrazení</string> <string name="action_display_options">Možnosti zobrazení</string>
<string name="show_archived_cards">Zobrazovat archivované karty</string> <string name="show_archived_cards">Zobrazovat archivované karty</string>
<string name="view_online">Zobrazovat online</string> <string name="view_online">Zobrazovat online</string>
<string name="card_id_must_not_be_empty">ID karty nesmí být prázdné</string>
<string name="balanceParsingFailed">Neplatný zůstatek</string>
<string name="add_a_card_in_a_different_way">Přidat kartu jiným způsobem</string>
<string name="manually_enter_barcode_instructions">Zadejte číslo ID nebo text na vaší kartě a stiskněte čárový kód, který vypadá jako ten na vaší kartě.</string>
<string name="action_more_options">Více možností</string>
<string name="enter_card_id">Zadejte číslo ID nebo text na vaší kartě</string>
<string name="addWithoutBarcode">Přidat kartu bez čárového kódu</string>
<string name="field_must_not_be_empty">Položka nesmí být prázdná</string>
<string name="app_name">Catima</string>
<string name="settings_follow_sensor_orientation">Vždy otáčet (ignoruje nastavení systému)</string>
</resources> </resources>

View File

@@ -5,6 +5,7 @@
<string name="editCardTitle">Rediger kort</string> <string name="editCardTitle">Rediger kort</string>
<string name="sendLabel">Afsend…</string> <string name="sendLabel">Afsend…</string>
<string name="share">Aktie</string> <string name="share">Aktie</string>
<string name="copy_to_clipboard">Kopier ID til udklipsholder</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="deleteConfirmation">Slete dette kort permanent\?</string> <string name="deleteConfirmation">Slete dette kort permanent\?</string>
<plurals name="deleteCardsTitle"> <plurals name="deleteCardsTitle">
@@ -49,6 +50,7 @@
<string name="settings">Indstillinger</string> <string name="settings">Indstillinger</string>
<string name="starImage">Favorit stjerne</string> <string name="starImage">Favorit stjerne</string>
<string name="thumbnailDescription">Miniaturebillede til kort</string> <string name="thumbnailDescription">Miniaturebillede til kort</string>
<string name="copy_to_clipboard_toast">Kort-ID kopieret til udklipsholderen</string>
<string name="selectBarcodeTitle">Vælg stregkode</string> <string name="selectBarcodeTitle">Vælg stregkode</string>
<string name="app_copyright_old">Baseret på Loyalty Card Keychain <string name="app_copyright_old">Baseret på Loyalty Card Keychain
\ncopyright © 2016-2020 Branden Archer.</string> \ncopyright © 2016-2020 Branden Archer.</string>
@@ -82,10 +84,4 @@
<string name="moveDown">Bevæger sig nedad</string> <string name="moveDown">Bevæger sig nedad</string>
<string name="leaveWithoutSaveTitle">Afslut</string> <string name="leaveWithoutSaveTitle">Afslut</string>
<string name="addManually">Indtast kort-ID manuelt</string> <string name="addManually">Indtast kort-ID manuelt</string>
<string name="noGiftCardsGroup">Opret kort og tildel dem gupper her.</string> </resources>
<plurals name="deleteCardsConfirmation">
<item quantity="one">Slet dette <xliff:g>%d</xliff:g> kort permanent\?</item>
<item quantity="other">Slet disse <xliff:g>%d</xliff:g> kort permanent\?</item>
</plurals>
<string name="app_name">Catima</string>
</resources>

View File

@@ -15,6 +15,7 @@
<string name="star">Zu den Favoriten hinzufügen</string> <string name="star">Zu den Favoriten hinzufügen</string>
<string name="unstar">Aus den Favoriten entfernen</string> <string name="unstar">Aus den Favoriten entfernen</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="copy_to_clipboard">Kartennummer in die Zwischenablage kopieren</string>
<string name="sendLabel">Senden </string> <string name="sendLabel">Senden </string>
<string name="editCardTitle">Karte bearbeiten</string> <string name="editCardTitle">Karte bearbeiten</string>
<string name="addCardTitle">Neue Karte</string> <string name="addCardTitle">Neue Karte</string>
@@ -44,6 +45,7 @@
<string name="about_title_fmt">Über <xliff:g id="app_name">%s</xliff:g></string> <string name="about_title_fmt">Über <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Version: <xliff:g id="version">%s</xliff:g></string> <string name="debug_version_fmt">Version: <xliff:g id="version">%s</xliff:g></string>
<string name="selectBarcodeTitle">Barcode auswählen</string> <string name="selectBarcodeTitle">Barcode auswählen</string>
<string name="copy_to_clipboard_toast">ID in die Zwischenablage kopiert</string>
<string name="thumbnailDescription">Vorschaubild</string> <string name="thumbnailDescription">Vorschaubild</string>
<string name="settings">Einstellungen</string> <string name="settings">Einstellungen</string>
<string name="settings_display_barcode_max_brightness">Displayhelligkeit in der Barcodeansicht erhöhen</string> <string name="settings_display_barcode_max_brightness">Displayhelligkeit in der Barcodeansicht erhöhen</string>
@@ -71,7 +73,7 @@
<string name="leaveWithoutSaveTitle">Beenden</string> <string name="leaveWithoutSaveTitle">Beenden</string>
<string name="failedOpeningFileManager">Installiere zuerst einen Dateimanager.</string> <string name="failedOpeningFileManager">Installiere zuerst einen Dateimanager.</string>
<string name="noBarcode">Kein Barcode</string> <string name="noBarcode">Kein Barcode</string>
<string name="addManually">Code manuell eingeben</string> <string name="addManually">ID manuell eingeben</string>
<string name="moveDown">Nach unten verschieben</string> <string name="moveDown">Nach unten verschieben</string>
<string name="moveUp">Nach oben verschieben</string> <string name="moveUp">Nach oben verschieben</string>
<plurals name="groupCardCount"> <plurals name="groupCardCount">
@@ -123,6 +125,8 @@
<string name="app_resources">Freie Ressourcen von Drittanbietern: <xliff:g id="app_resources_list">%s</xliff:g></string> <string name="app_resources">Freie Ressourcen von Drittanbietern: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_libraries">Freie Bibliotheken von Drittanbietern: <xliff:g id="app_libraries_list">%s</xliff:g></string> <string name="app_libraries">Freie Bibliotheken von Drittanbietern: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="intent_import_card_from_url_share_multiple_text">Ich möchte diese Karten mit dir teilen</string> <string name="intent_import_card_from_url_share_multiple_text">Ich möchte diese Karten mit dir teilen</string>
<string name="copy_to_clipboard_multiple_toast">Kartennummern in die Zwischenablage kopiert</string>
<string name="card_ids_copied">ID(s) kopiert</string>
<string name="no">Nein</string> <string name="no">Nein</string>
<string name="yes">Ja</string> <string name="yes">Ja</string>
<string name="updateBarcodeQuestionText">Kartennummer geändert. Möchtest du auch den Barcode auf den gleichen Wert ändern\?</string> <string name="updateBarcodeQuestionText">Kartennummer geändert. Möchtest du auch den Barcode auf den gleichen Wert ändern\?</string>
@@ -132,8 +136,8 @@
<string name="setBackImage">Kartenrückseite</string> <string name="setBackImage">Kartenrückseite</string>
<string name="setFrontImage">Kartenvorderseite</string> <string name="setFrontImage">Kartenvorderseite</string>
<string name="photos">Fotos</string> <string name="photos">Fotos</string>
<string name="frontImageDescription">Bild der Vorseite</string> <string name="frontImageDescription">Bild auf der Vorseite</string>
<string name="backImageDescription">Bild der Rückseite</string> <string name="backImageDescription">Bild auf der Rückseite</string>
<string name="passwordRequired">Bitte gib das Passwort ein</string> <string name="passwordRequired">Bitte gib das Passwort ein</string>
<string name="importStocardMessage">Wähle deinen <i>***.zip</i>-Export aus Stocard zum Importieren aus. <string name="importStocardMessage">Wähle deinen <i>***.zip</i>-Export aus Stocard zum Importieren aus.
\nSie erhalten ihn, indem du eine E-Mail an support@stocardapp.com sendest und um einen Export deiner Daten bitten.</string> \nSie erhalten ihn, indem du eine E-Mail an support@stocardapp.com sendest und um einen Export deiner Daten bitten.</string>
@@ -174,7 +178,7 @@
<string name="sort_by_most_recently_used">Zuletzt verwendet</string> <string name="sort_by_most_recently_used">Zuletzt verwendet</string>
<string name="sort_by_name">Name</string> <string name="sort_by_name">Name</string>
<string name="sort">Sortieren</string> <string name="sort">Sortieren</string>
<string name="reverse">…in umgekehrter Reihenfolge</string> <string name="reverse"> in umgekehrter Reihenfolge</string>
<string name="version_history">Versionshistorie</string> <string name="version_history">Versionshistorie</string>
<string name="credits">Dank an</string> <string name="credits">Dank an</string>
<string name="help_translate_this_app">Hilfe bei der Übersetzung</string> <string name="help_translate_this_app">Hilfe bei der Übersetzung</string>
@@ -193,7 +197,7 @@
<string name="editGroup">Gruppe wird bearbeitet: <xliff:g>%s</xliff:g></string> <string name="editGroup">Gruppe wird bearbeitet: <xliff:g>%s</xliff:g></string>
<string name="group_edit">Gruppe bearbeiten</string> <string name="group_edit">Gruppe bearbeiten</string>
<string name="noGiftCardsGroup">Erstelle einige Karten und ordne sie dann hier der Gruppe zu.</string> <string name="noGiftCardsGroup">Erstelle einige Karten und ordne sie dann hier der Gruppe zu.</string>
<string name="setIcon">Vorschaubild setzen</string> <string name="setIcon">Vorschau setzen</string>
<string name="selectColor">Farbe auswählen</string> <string name="selectColor">Farbe auswählen</string>
<string name="translate_platform">auf Weblate</string> <string name="translate_platform">auf Weblate</string>
<string name="shortcutSelectCard">Wählen Sie eine Karte</string> <string name="shortcutSelectCard">Wählen Sie eine Karte</string>
@@ -205,14 +209,14 @@
<item quantity="other"><xliff:g>%s</xliff:g> Punkte</item> <item quantity="other"><xliff:g>%s</xliff:g> Punkte</item>
</plurals> </plurals>
<string name="settings_oled_dark">Komplett schwarzer Hintergrund im dunklen Design</string> <string name="settings_oled_dark">Komplett schwarzer Hintergrund im dunklen Design</string>
<string name="include_if_asking_support">Wenn Du Unterstützung haben möchtest, gib bitte folgende Informationen an:</string> <string name="include_if_asking_support">Wenn Sie Unterstützung anfordern möchten, geben Sie bitte die folgenden Informationen an:</string>
<string name="settings_follow_system_orientation">System folgen</string> <string name="settings_follow_system_orientation">System folgen</string>
<string name="settings_landscape_orientation">Querformat</string> <string name="settings_landscape_orientation">Landschaft</string>
<string name="settings_portrait_orientation">Hochformat</string> <string name="settings_portrait_orientation">Porträt</string>
<string name="duplicateCard">Duplizieren</string> <string name="duplicateCard">Duplizieren</string>
<string name="unarchive">Archivierung aufheben</string> <string name="unarchive">Archivierung aufheben</string>
<string name="settings_card_orientation">Barcode-Ausrichtung</string> <string name="settings_card_orientation">Barcode-Ausrichtung</string>
<string name="unarchived">Karte aus dem Archiv entfernt</string> <string name="unarchived">Karte nicht archiviert</string>
<string name="archive">Archivieren</string> <string name="archive">Archivieren</string>
<string name="archived">Karte archiviert</string> <string name="archived">Karte archiviert</string>
<string name="settings_lock_on_opening_orientation">Kartenausrichtung nach dem Öffnen beibehalten</string> <string name="settings_lock_on_opening_orientation">Kartenausrichtung nach dem Öffnen beibehalten</string>
@@ -223,7 +227,7 @@
<string name="failedLaunchingPhotoPicker">Es konnte keine unterstützte Galerie-Anwendung gefunden werden</string> <string name="failedLaunchingPhotoPicker">Es konnte keine unterstützte Galerie-Anwendung gefunden werden</string>
<string name="previousCard">Vorherige</string> <string name="previousCard">Vorherige</string>
<string name="nextCard">Nächste</string> <string name="nextCard">Nächste</string>
<string name="failedToOpenUrl">Bitte installiere einen Webbrowser</string> <string name="failedToOpenUrl">Installieren Sie zunächst einen Webbrowser</string>
<plurals name="viewArchivedCardsWithCount"> <plurals name="viewArchivedCardsWithCount">
<item quantity="one">Archiv ansehen (<xliff:g>%1$d</xliff:g> Karte)</item> <item quantity="one">Archiv ansehen (<xliff:g>%1$d</xliff:g> Karte)</item>
<item quantity="other">Archiv ansehen (<xliff:g>%1$d</xliff:g> Karten)</item> <item quantity="other">Archiv ansehen (<xliff:g>%1$d</xliff:g> Karten)</item>
@@ -239,8 +243,8 @@
<string name="currentBalanceSentence">Aktuelles Guthaben: <xliff:g>%s</xliff:g></string> <string name="currentBalanceSentence">Aktuelles Guthaben: <xliff:g>%s</xliff:g></string>
<string name="newBalanceSentence">Neues Guthaben: <xliff:g>%s</xliff:g></string> <string name="newBalanceSentence">Neues Guthaben: <xliff:g>%s</xliff:g></string>
<string name="updateBalance">Guthaben aktualisieren</string> <string name="updateBalance">Guthaben aktualisieren</string>
<string name="storageReadPermissionRequired">Berechtigung zum Lesen des Speichers für diese Aktion erforderlich…</string> <string name="storageReadPermissionRequired">Berechtigung zum Lesen des Speichers für diese Aktion erforderlich </string>
<string name="cameraPermissionRequired">Für diese Aktion wird die Erlaubnis zum Zugriff auf die Kamera benötigt…</string> <string name="cameraPermissionRequired">Für diese Aktion wird die Erlaubnis zum Zugriff auf die Kamera benötigt </string>
<string name="validFromDate">Gültig ab</string> <string name="validFromDate">Gültig ab</string>
<string name="validFromSentence">Gültig ab: <xliff:g>%s</xliff:g></string> <string name="validFromSentence">Gültig ab: <xliff:g>%s</xliff:g></string>
<string name="chooseValidFromDate">Gültig-ab-Datum wählen</string> <string name="chooseValidFromDate">Gültig-ab-Datum wählen</string>
@@ -260,7 +264,7 @@
<string name="show_name_below_image_thumbnail">Namen unter Bildvorschau anzeigen</string> <string name="show_name_below_image_thumbnail">Namen unter Bildvorschau anzeigen</string>
<string name="settings_allow_content_provider_read_title">Anderen Anwendungen den Zugriff auf meine Daten gestatten</string> <string name="settings_allow_content_provider_read_title">Anderen Anwendungen den Zugriff auf meine Daten gestatten</string>
<string name="permissionReadCardsLabel">Catima-Karten lesen</string> <string name="permissionReadCardsLabel">Catima-Karten lesen</string>
<string name="permissionReadCardsDescription">lesen deiner Catima Karten mit allen Details, einschließlich Notizen und Bildern</string> <string name="permissionReadCardsDescription">Lesen Sie Ihre Karten mit allen Details, einschließlich Notizen und Bildern</string>
<string name="settings_allow_content_provider_read_summary">Anwendungen müssen weiterhin eine Genehmigung beantragen, um Zugriff zu erhalten</string> <string name="settings_allow_content_provider_read_summary">Anwendungen müssen weiterhin eine Genehmigung beantragen, um Zugriff zu erhalten</string>
<string name="settings_display_barcode_max_brightness_summary">Erforderlich für das Funktionieren einiger Scanner</string> <string name="settings_display_barcode_max_brightness_summary">Erforderlich für das Funktionieren einiger Scanner</string>
<string name="settings_keep_screen_on_summary">Deaktiviert die Bildschirmzeitüberschreitung beim Anzeigen einer Karte</string> <string name="settings_keep_screen_on_summary">Deaktiviert die Bildschirmzeitüberschreitung beim Anzeigen einer Karte</string>
@@ -274,14 +278,4 @@
<string name="show_archived_cards">Zeige archivierte Karten</string> <string name="show_archived_cards">Zeige archivierte Karten</string>
<string name="app_copyright_short">Copyright © Sylvia van Os und Mitwirkende</string> <string name="app_copyright_short">Copyright © Sylvia van Os und Mitwirkende</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os und Mitwirkende</string> <string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os und Mitwirkende</string>
<string name="card_id_must_not_be_empty">Kartennummer darf nicht leer sein</string>
<string name="balanceParsingFailed">Ungültiges Guthaben</string>
<string name="add_a_card_in_a_different_way">Karte anders hinzufügen</string>
<string name="action_more_options">Mehr Optionen</string>
<string name="enter_card_id">Gib die Codenummer oder Ziffernfolge deiner Karte an</string>
<string name="addWithoutBarcode">Eine Karde ohne Code hinzufügen</string>
<string name="field_must_not_be_empty">Feld darf nicht leer sein</string>
<string name="manually_enter_barcode_instructions">Trage die ID Nummer oder Text deiner Karte ein und drücke auf den Barcode, der wie auf deiner Karte aussieht.</string>
<string name="app_name">Catima</string>
<string name="settings_follow_sensor_orientation">Immer drehen (ignoriert Systemeinstellungen)</string>
</resources> </resources>

View File

@@ -11,6 +11,7 @@
<string name="delete">Διαγραφή</string> <string name="delete">Διαγραφή</string>
<string name="confirm">Επιβεβαίωση</string> <string name="confirm">Επιβεβαίωση</string>
<string name="ok">Εντάξει</string> <string name="ok">Εντάξει</string>
<string name="copy_to_clipboard">Αντιγραφή κωδικού στο πρόχειρο</string>
<string name="sendLabel">Αποστολή…</string> <string name="sendLabel">Αποστολή…</string>
<string name="editCardTitle">Επεξεργασία Κάρτας</string> <string name="editCardTitle">Επεξεργασία Κάρτας</string>
<string name="addCardTitle">Προσθήκη Κάρτας</string> <string name="addCardTitle">Προσθήκη Κάρτας</string>
@@ -40,6 +41,7 @@
<string name="about_title_fmt">Σχετικά με <xliff:g id="app_name">%s</xliff:g></string> <string name="about_title_fmt">Σχετικά με <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Έκδοση: <xliff:g id="version">%s</xliff:g></string> <string name="debug_version_fmt">Έκδοση: <xliff:g id="version">%s</xliff:g></string>
<string name="selectBarcodeTitle">Επιλέξτε Barcode</string> <string name="selectBarcodeTitle">Επιλέξτε Barcode</string>
<string name="copy_to_clipboard_toast">Ο κωδικός αντιγράφτηκε στο πρόχειρο</string>
<string name="thumbnailDescription">Μικρογραφία</string> <string name="thumbnailDescription">Μικρογραφία</string>
<string name="settings">Ρυθμίσεις</string> <string name="settings">Ρυθμίσεις</string>
<string name="settings_dark_theme">Σκοτεινό</string> <string name="settings_dark_theme">Σκοτεινό</string>
@@ -95,6 +97,7 @@
\nΔημιουργήστε το από το FidMe προφίλ επιλέγοντας Προστασία Δεδομένων και διαλέγοντας εξαγωγή δεδομένων.</string> \nΔημιουργήστε το από το FidMe προφίλ επιλέγοντας Προστασία Δεδομένων και διαλέγοντας εξαγωγή δεδομένων.</string>
<string name="setBarcodeId">Επιλέξτε τιμή γραμμοκώδικα</string> <string name="setBarcodeId">Επιλέξτε τιμή γραμμοκώδικα</string>
<string name="wrongValueForBarcodeType">Η τιμή δεν είναι έγκυρη για αυτού του τύπου γραμμοκώδικα</string> <string name="wrongValueForBarcodeType">Η τιμή δεν είναι έγκυρη για αυτού του τύπου γραμμοκώδικα</string>
<string name="copy_to_clipboard_multiple_toast">Οι κωδικοί αντιγράφηκαν στο πρόχειρο</string>
<string name="setBackImage">Επιλογή οπίσθιας εικόνας</string> <string name="setBackImage">Επιλογή οπίσθιας εικόνας</string>
<string name="removeImage">Αφαίρεση εικόνας</string> <string name="removeImage">Αφαίρεση εικόνας</string>
<string name="takePhoto">Τραβήξτε μια φωτογραφία</string> <string name="takePhoto">Τραβήξτε μια φωτογραφία</string>
@@ -110,6 +113,7 @@
<item quantity="one">Διαγραφή <xliff:g>%d</xliff:g> κάρτας</item> <item quantity="one">Διαγραφή <xliff:g>%d</xliff:g> κάρτας</item>
<item quantity="other">Διαγραφή <xliff:g>%d</xliff:g> καρτών</item> <item quantity="other">Διαγραφή <xliff:g>%d</xliff:g> καρτών</item>
</plurals> </plurals>
<string name="card_ids_copied">Αντιγραμμένη/ες ταυτότητα/ες</string>
<string name="errorReadingImage">Δεν ήταν δυνατό να διαβαστεί η εικόνα</string> <string name="errorReadingImage">Δεν ήταν δυνατό να διαβαστεί η εικόνα</string>
<string name="currency">Νόμισμα</string> <string name="currency">Νόμισμα</string>
<string name="privacy_policy">Πολιτική απορρήτου</string> <string name="privacy_policy">Πολιτική απορρήτου</string>
@@ -240,8 +244,4 @@
<string name="newBalanceSentence">Νέο υπόλοιπο: <xliff:g>%s</xliff:g></string> <string name="newBalanceSentence">Νέο υπόλοιπο: <xliff:g>%s</xliff:g></string>
<string name="failedToOpenUrl">Εγκαταστήστε έναν περιηγητή πρώτα</string> <string name="failedToOpenUrl">Εγκαταστήστε έναν περιηγητή πρώτα</string>
<string name="welcome">Καλώς ήρθατε στο Catima</string> <string name="welcome">Καλώς ήρθατε στο Catima</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Απενεργοποιεί το κλείδωμα οθόνης ενόσω βλέπετε μια κάρτα</string> </resources>
<string name="settings_display_barcode_max_brightness_summary">Απαραίτητο για να δουλέψει σε κάποια σκάνερ</string>
<string name="cameraPermissionRequired">Χρειάζεται άδεια για πρόσβαση στην κάμερα γι\' αυτή την ενέργεια…</string>
<string name="settings_allow_content_provider_read_title">Επιτρέπει σε άλλες εφαρμογές να έχουν πρόσβαση στα δεδομένα μου</string>
</resources>

View File

@@ -69,6 +69,7 @@
<string name="scanCardBarcode">Scintigrafio Barcode Card</string> <string name="scanCardBarcode">Scintigrafio Barcode Card</string>
<string name="share">Interŝanĝado</string> <string name="share">Interŝanĝado</string>
<string name="star">Aldoni al miaj plej ŝatataj</string> <string name="star">Aldoni al miaj plej ŝatataj</string>
<string name="copy_to_clipboard_toast">Card ID kopiita al la tondujo</string>
<string name="settings_keep_screen_on">Teni sur ekrano</string> <string name="settings_keep_screen_on">Teni sur ekrano</string>
<string name="importSuccessful">Karto datumo importitaj</string> <string name="importSuccessful">Karto datumo importitaj</string>
<string name="enter_group_name">Eniri nomo de la grupo</string> <string name="enter_group_name">Eniri nomo de la grupo</string>
@@ -82,5 +83,4 @@
<item quantity="one"><xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%d</xliff:g> elektita</item> <item quantity="one"><xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%d</xliff:g> elektita</item>
<item quantity="other"><xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%d</xliff:g> elektitaj</item> <item quantity="other"><xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%d</xliff:g> elektitaj</item>
</plurals> </plurals>
<string name="app_name">Catima</string> </resources>
</resources>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?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"> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="storeName">Nombre</string> <string name="storeName">Nombre</string>
<string name="cancel">Cancelar</string> <string name="cancel">Cancelar</string>
@@ -12,7 +12,7 @@
<string name="exportFailed">No se pudo exportar</string> <string name="exportFailed">No se pudo exportar</string>
<string name="noBarcode">Sin código de barra</string> <string name="noBarcode">Sin código de barra</string>
<string name="edit">Editar</string> <string name="edit">Editar</string>
<string name="noGiftCards">Pulsá el botón + para agregar una tarjeta de regalo, o importá una desde el menú.</string> <string name="noGiftCards">Pulsa el botón + para agregar una tarjeta de regalo, o importa desde el menú.</string>
<string name="noGiftCardsGroup">Crea tarjetas de regalo, y asignales un grupo.</string> <string name="noGiftCardsGroup">Crea tarjetas de regalo, y asignales un grupo.</string>
<string name="note">Nota</string> <string name="note">Nota</string>
<string name="unstar">Borrar de favoritos</string> <string name="unstar">Borrar de favoritos</string>
@@ -23,6 +23,7 @@
<string name="exporting">Exportando…</string> <string name="exporting">Exportando…</string>
<string name="save">Guardar</string> <string name="save">Guardar</string>
<string name="failedParsingImportUriError">No se pudo procesar la URI importada</string> <string name="failedParsingImportUriError">No se pudo procesar la URI importada</string>
<string name="copy_to_clipboard">Copiar ID al portapapeles</string>
<string name="barcodeType">Tipo de código de barra</string> <string name="barcodeType">Tipo de código de barra</string>
<string name="confirm">Confirmar</string> <string name="confirm">Confirmar</string>
<string name="sendLabel">Enviando…</string> <string name="sendLabel">Enviando…</string>
@@ -38,150 +39,7 @@
<string name="scanCardBarcode">Escanear código de barra</string> <string name="scanCardBarcode">Escanear código de barra</string>
<string name="cardShortcut">Acceso rápido de tarjeta</string> <string name="cardShortcut">Acceso rápido de tarjeta</string>
<string name="editCardTitle">Editar tarjeta</string> <string name="editCardTitle">Editar tarjeta</string>
<string name="card_ids_copied">ID(s) Copiado(s)</string>
<string name="importSuccessfulTitle">Importado</string> <string name="importSuccessfulTitle">Importado</string>
<string name="importFailed">No se pudo importar</string> <string name="importFailed">No se pudo importar</string>
<string name="barcodeImageDescriptionWithType">Imagen de <xliff:g>%s</xliff:g> un código de barras</string>
<plurals name="deleteCardsTitle">
<item quantity="one">Borrar <xliff:g>%d</xliff:g> tajeta</item>
<item quantity="many">Borrar <xliff:g>%d</xliff:g> tarjetas</item>
<item quantity="other"/>
</plurals>
<plurals name="deleteCardsConfirmation">
<item quantity="one">¿Borrar esta<xliff:g>%d</xliff:g> tarjeta de forma permanente\?</item>
<item quantity="many">Borrar estas <xliff:g>%d</xliff:g> tarjetas de forma permanente\?</item>
<item quantity="other"/>
</plurals>
<string name="failedOpeningFileManager">Primero instale un administrador de archivos.</string>
<string name="intent_import_card_from_url_share_multiple_text">Quiero compartirte algunas tarjetas</string>
<string name="points">Puntos</string>
<string name="balanceParsingFailed">Balance inválido</string>
<string name="about_title_fmt">Acerca de <xliff:g id="app_name">%s</xliff:g></string>
<string name="editBarcode">Editar código de barras</string>
<string name="removeImage">Remover imágen</string>
<string name="settings_portrait_orientation">Vertical</string>
<string name="takePhoto">Tomar una foto</string>
<string name="cameraPermissionDeniedTitle">No se pudo acceder a la cámara</string>
<string name="wrongValueForBarcodeType">El valor no es válido para el tipo de código de barras seleccionado</string>
<string name="expiryDate">Fecha de vencimiento</string>
<string name="importStocard">Importar desde Stocard</string>
<string name="currency">Moneda</string>
<string name="group_edit">Editar grupo</string>
<string name="debug_version_fmt">Versión: <xliff:g id="version">%s</xliff:g></string>
<string name="backImageDescription">Imágen dorsal</string>
<string name="noCameraPermissionDirectToSystemSetting">Para escanear códigos de barra, Catima necesitará acceso a la cámara. Presione aquí para cambiar la configuración de sus permisos.</string>
<string name="settings_lock_on_opening_orientation">Bloquear a la orientación utilizada al abrir la tarjeta</string>
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
<string name="importOptionFilesystemTitle">Importar desde su sistema de archivos</string>
<string name="leaveWithoutSaveTitle">Salir</string>
<string name="expiryStateSentence">Expira: <xliff:g>%s</xliff:g></string>
<string name="all">Todo</string>
<string name="moveUp">Mover hacia arriba</string>
<string name="noBarcodeFound">No se ha encontrado un código de barras</string>
<string name="balanceSentence">Balance: <xliff:g>%s</xliff:g></string>
<string name="settings_dark_theme">Oscuro</string>
<string name="importFidme">Importar desde FidMe</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Deshabilita el bloqueo de pantalla mientras se ve una tarjeta</string>
<string name="exportOptionExplanation">Los datos serán escritos a una ubicación de tu elección.</string>
<string name="app_copyright_old">Basado en Loyalty Card Keychain
\ncopyright © 20162020 Branden Archer</string>
<string name="importVoucherVaultMessage">Seleccione su <i>vouchervault.json</i> exportado desde Voucher Vault para importarlo.
\nPrimero créelo presionando la opción Exportar en Voucher Vault.</string>
<string name="chooseImportType">Importar datos desde</string>
<string name="frontImageDescription">Imágen frontal</string>
<string name="settings_system_theme">Sistema</string>
<string name="setBackImage">Establecer imágen dorsal</string>
<string name="settings_display_barcode_max_brightness">Iluminar la vista del código de barras</string>
<string name="chooseExpiryDate">Elija la fecha de vencimiento</string>
<string name="permissionReadCardsDescription">Lea sus tarjetas Catima y todo sus detalles, incluyendo notas e imágenes</string>
<string name="unsupportedBarcodeType">Este tipo de código de barras aún no puede ser visualizado. Es posible que sea soportado en una versión futura de la aplicación.</string>
<string name="expiryStateSentenceExpired">Expirado: <xliff:g>%s</xliff:g></string>
<string name="groupsList">Grupos: <xliff:g>%s</xliff:g></string>
<string name="settings_display_barcode_max_brightness_summary">Necesario para que algunos escáneres funcionen correctamente</string>
<string name="starImage">Estrella favorita</string>
<string name="moveBarcodeToTopOfScreen">Mover el código de barras al tope de la pantalla</string>
<string name="group_name_is_empty">El nombre del grupo no debe estar vacío</string>
<string name="settings_keep_screen_on">Mantener la pantalla encendida</string>
<string name="setBarcodeId">Establecer valor del código de barras</string>
<string name="importCatima">Importar desde Catima</string>
<string name="privacy_policy_popup_text">Notificación de la política de privacidad (requerida por algunas tiendas de aplicaciones):
\n
\nNINGÚN DATO ES RECOPILADO, puede ser comprobado por cualquiera ya que nuestra aplicación es software libre.</string>
<string name="settings_follow_system_orientation">Seguir el sistema</string>
<string name="intent_import_card_from_url_share_text">Quiero compartirte una tarjeta</string>
<string name="addFromImage">Seleccione una imágen desde la galería</string>
<string name="app_copyright_short">Copyright © Sylvia van Os y colaboradores</string>
<string name="importOptionFilesystemExplanation">Elija un archivo desde su sistema de archivos.</string>
<string name="exportSuccessful">Datos exportados</string>
<string name="settings_allow_content_provider_read_summary">Las aplicaciones aún tendrán que pedir permiso para obtener acceso</string>
<string name="editGroup">Edición de grupo: <xliff:g>%s</xliff:g></string>
<string name="noGroups">Presione el botón + para agregar grupos de categorización</string>
<string name="settings_disable_lockscreen_while_viewing_card">Evitar el bloqueo de pantalla</string>
<string name="about">Acerca de</string>
<string name="sameAsCardId">Igual que el código</string>
<string name="importOptionFilesystemButton">Desde el sistema de archivos</string>
<string name="importOptionApplicationButton">Usar otra aplicación</string>
<string name="settings_landscape_orientation">Horizontal</string>
<string name="privacy_policy">Política de Privacidad</string>
<string name="enter_group_name">Ingrese el nombre del grupo</string>
<string name="importStocardMessage">Seleccione su <i>***.zip</i> exportado desde Stocard para importarlo.
\nObténgalo mandando un correo electrónico a support@stocardapp.com preguntando por una copia de tus datos.</string>
<string name="addManually">Ingresar el código de barras manualmente</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os y colaboradores</string>
<string name="importOptionApplicationExplanation">Use cualquier aplicación o su administrador de archivos para abrir un archivo.</string>
<string name="importVoucherVault">Importar desde Voucher Vault</string>
<string name="barcodeId">Valor del código de barras</string>
<string name="errorReadingImage">No se ha podido leer la imágen</string>
<string name="setFrontImage">Establecer imágen frontal</string>
<string name="settings_theme">Tema</string>
<string name="balance">Balance</string>
<string name="cameraPermissionRequired">Se necesita permiso para acceder a la cámara para realizar esta acción…</string>
<string name="settings_allow_content_provider_read_title">Permitir que otras aplicaciones accedan a mis datos</string>
<string name="importLoyaltyCardKeychainMessage">Seleccione su <i>LoyaltyCardKeychain.csv</i> exportado desde Loyalty Card Keychain para importarlo.
\nPrimero créelo desde el menu Importar/Exportar de Loyalty Card Keychain al presionar la opción Exportar.</string>
<string name="settings_light_theme">Claro</string>
<string name="moveDown">Mover hacia abajo</string>
<string name="importLoyaltyCardKeychain">Importar desde Loyalty Card Keychain</string>
<string name="group_updated">Grupo actualizado</string>
<string name="permissionReadCardsLabel">Leer Tarjetas Catima</string>
<string name="groups">Grupos</string>
<string name="photos">Fotos</string>
<string name="storageReadPermissionRequired">Se necesita permiso para leer el almacenamiento para realizar esta acción…</string>
<string name="app_license">Software copyleft y libre, licenciado bajo GPLv3+</string>
<string name="noGroupCards">Este grupo está vacío</string>
<string name="group_name_already_in_use">El nombre del grupo ya está en uso</string>
<string name="leaveWithoutSaveConfirmation">¿Salir sin guardar\?</string>
<string name="card">Tarjeta</string>
<string name="never">Nunca</string>
<string name="settings">Configuración</string>
<string name="selectBarcodeTitle">Seleccione el código de barras</string>
<string name="importSuccessful">Datos importados</string>
<string name="settings_card_orientation">Orientación del código de barras</string>
<string name="app_libraries">Librerías externas libres: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_resources">Recursos externos libres: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_name">Catima</string>
<string name="accept">Aceptar</string>
<string name="importOptionApplicationTitle">Usar otra aplicación</string>
<plurals name="groupCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> tarjeta</item>
<item quantity="many"><xliff:g>%d</xliff:g> tarjetas</item>
<item quantity="other"/>
</plurals>
<plurals name="selectedCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> seleccionado</item>
<item quantity="many"><xliff:g>%d</xliff:g> seleccionados</item>
<item quantity="other"/>
</plurals>
<string name="importCatimaMessage">Seleccione su <i>catima.zip</i> exportado desde Catima para importarlo.
\nPrimero créelo desde el menu para Importar/Exportar de otra aplicación de Catima presionando la opción Exportar.</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> punto</item>
<item quantity="many"><xliff:g>%s</xliff:g> puntos</item>
<item quantity="other"/>
</plurals>
<string name="importFidmeMessage">Seleccione su <i>fidme-export-request-xxxxxx.zip</i> exportado de FidMe para importarlo, y a continuación seleccione manualmente los tipos de código de barras.
\nPrimero créelo desde su perfil de FidMe al elegir la opción Protección de Datos y presionando Extraer mis datos.</string>
<string name="updateBarcodeQuestionTitle">¿Actualizar el valor del código de barras\?</string>
<string name="settings_keep_screen_on_summary">Deshabilita el tiempo de espera de la pantalla mientras se ve una tarjeta</string>
<string name="thumbnailDescription">Miniatura</string>
<string name="deleteConfirmationGroup">¿Eliminar grupo\?</string>
</resources> </resources>

View File

@@ -11,6 +11,7 @@
<string name="delete">Eliminar</string> <string name="delete">Eliminar</string>
<string name="confirm">Confirmar</string> <string name="confirm">Confirmar</string>
<string name="ok">De acuerdo</string> <string name="ok">De acuerdo</string>
<string name="copy_to_clipboard">Copiar ID. en portapapeles</string>
<string name="sendLabel">Enviar…</string> <string name="sendLabel">Enviar…</string>
<string name="editCardTitle">Editar tarjeta</string> <string name="editCardTitle">Editar tarjeta</string>
<string name="addCardTitle">Añadir tarjeta</string> <string name="addCardTitle">Añadir tarjeta</string>
@@ -59,13 +60,14 @@
<string name="noGroups">Pulse en el botón «+» para añadir grupos de categorización.</string> <string name="noGroups">Pulse en el botón «+» para añadir grupos de categorización.</string>
<string name="starImage">Estrella favorita</string> <string name="starImage">Estrella favorita</string>
<string name="thumbnailDescription">Miniatura</string> <string name="thumbnailDescription">Miniatura</string>
<string name="copy_to_clipboard_toast">Se copió la ID en el portapapeles</string>
<string name="selectBarcodeTitle">Seleccionar el código de barras</string> <string name="selectBarcodeTitle">Seleccionar el código de barras</string>
<string name="unstar">Eliminar de favoritos</string> <string name="unstar">Eliminar de favoritos</string>
<string name="noBarcode">Sin código de barras</string> <string name="noBarcode">Sin código de barras</string>
<string name="enter_group_name">Introducir nombre del grupo</string> <string name="enter_group_name">Introducir nombre del grupo</string>
<string name="groups">Grupos</string> <string name="groups">Grupos</string>
<string name="groupsList">Grupos: <xliff:g>%s</xliff:g></string> <string name="groupsList">Grupos: <xliff:g>%s</xliff:g></string>
<string name="addManually">Introducir manualmente el código de barras</string> <string name="addManually">Introducir la ID manualmente</string>
<string name="leaveWithoutSaveConfirmation">¿Quiere abandonar sin guardar\?</string> <string name="leaveWithoutSaveConfirmation">¿Quiere abandonar sin guardar\?</string>
<string name="leaveWithoutSaveTitle">Salir</string> <string name="leaveWithoutSaveTitle">Salir</string>
<string name="moveDown">Bajar</string> <string name="moveDown">Bajar</string>
@@ -106,6 +108,7 @@
<string name="updateBarcodeQuestionText">Ha cambiado el código. ¿Desea actualizar también el código de barras para usar el mismo valor\?</string> <string name="updateBarcodeQuestionText">Ha cambiado el código. ¿Desea actualizar también el código de barras para usar el mismo valor\?</string>
<string name="intent_import_card_from_url_share_multiple_text">Quiero compartirte algunas tarjetas</string> <string name="intent_import_card_from_url_share_multiple_text">Quiero compartirte algunas tarjetas</string>
<string name="setBackImage">Establecer imagen anversa</string> <string name="setBackImage">Establecer imagen anversa</string>
<string name="card_ids_copied">Código(s) copiado(s)</string>
<string name="turn_flashlight_off">Apagar linterna</string> <string name="turn_flashlight_off">Apagar linterna</string>
<string name="turn_flashlight_on">Encender linterna</string> <string name="turn_flashlight_on">Encender linterna</string>
<string name="no">No</string> <string name="no">No</string>
@@ -117,6 +120,7 @@
<string name="photos">Fotos</string> <string name="photos">Fotos</string>
<string name="backImageDescription">Imagen del reverso</string> <string name="backImageDescription">Imagen del reverso</string>
<string name="frontImageDescription">Imagen frontal</string> <string name="frontImageDescription">Imagen frontal</string>
<string name="copy_to_clipboard_multiple_toast">Códigos copiados al portapapeles</string>
<string name="wrongValueForBarcodeType">El valor no es válido para el tipo de código de barras seleccionado</string> <string name="wrongValueForBarcodeType">El valor no es válido para el tipo de código de barras seleccionado</string>
<string name="unsupportedBarcodeType">Este tipo de código de barras todavía no se puede visualizar. Es posible que se admita en una futura versión de la aplicación.</string> <string name="unsupportedBarcodeType">Este tipo de código de barras todavía no se puede visualizar. Es posible que se admita en una futura versión de la aplicación.</string>
<string name="setBarcodeId">Establecer valor de código de barra</string> <string name="setBarcodeId">Establecer valor de código de barra</string>
@@ -139,7 +143,7 @@
<string name="errorReadingImage">No se pudo leer la imagen</string> <string name="errorReadingImage">No se pudo leer la imagen</string>
<string name="noBarcodeFound">No se encontró código de barras</string> <string name="noBarcodeFound">No se encontró código de barras</string>
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string> <string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
<string name="addFromImage">Selecciona una imagen de la galería</string> <string name="addFromImage">Selecciona imagen desde galería</string>
<string name="settings_disable_lockscreen_while_viewing_card">Evitar el bloqueo de pantalla</string> <string name="settings_disable_lockscreen_while_viewing_card">Evitar el bloqueo de pantalla</string>
<string name="settings_keep_screen_on">Mantener pantalla encendida</string> <string name="settings_keep_screen_on">Mantener pantalla encendida</string>
<plurals name="selectedCardCount"> <plurals name="selectedCardCount">
@@ -171,7 +175,7 @@
<string name="settings_theme_color">Color del tema</string> <string name="settings_theme_color">Color del tema</string>
<string name="settings_catima_theme">Catima</string> <string name="settings_catima_theme">Catima</string>
<string name="settings_system_locale">Sistema</string> <string name="settings_system_locale">Sistema</string>
<string name="settings_locale">Idioma</string> <string name="settings_locale">Lengua</string>
<string name="noGroupCards">Este grupo está vacío</string> <string name="noGroupCards">Este grupo está vacío</string>
<string name="settings_landscape_orientation">Horizontal</string> <string name="settings_landscape_orientation">Horizontal</string>
<plurals name="balancePoints"> <plurals name="balancePoints">
@@ -217,7 +221,7 @@
</plurals> </plurals>
<string name="welcome">Bienvenido/a a Catima</string> <string name="welcome">Bienvenido/a a Catima</string>
<string name="group_name_already_in_use">Nombre del grupo ya está en uso</string> <string name="group_name_already_in_use">Nombre del grupo ya está en uso</string>
<string name="group_name_is_empty">El nombre del grupo no debe estar vacío</string> <string name="group_name_is_empty">El nombre del grupo no puede estar vacío</string>
<string name="settings_oled_dark">Fondo negro puro para el tema oscuro</string> <string name="settings_oled_dark">Fondo negro puro para el tema oscuro</string>
<string name="exportPasswordHint">Introduzca la contraseña</string> <string name="exportPasswordHint">Introduzca la contraseña</string>
<string name="previousCard">Anterior</string> <string name="previousCard">Anterior</string>
@@ -267,7 +271,7 @@
<string name="show_validity">Mostrar la validez</string> <string name="show_validity">Mostrar la validez</string>
<string name="show_balance">Mostrar el saldo</string> <string name="show_balance">Mostrar el saldo</string>
<string name="permissionReadCardsLabel">Leer Tarjetas Catima</string> <string name="permissionReadCardsLabel">Leer Tarjetas Catima</string>
<string name="permissionReadCardsDescription">leer tus tarjetas Catima y todos sus detalles, incluidas notas e imágenes</string> <string name="permissionReadCardsDescription">Lee tus tarjetas y todos sus detalles, incluidas notas e imágenes</string>
<string name="settings_allow_content_provider_read_title">Permite a otras aplicaciones acceder a mis datos</string> <string name="settings_allow_content_provider_read_title">Permite a otras aplicaciones acceder a mis datos</string>
<string name="settings_display_barcode_max_brightness_summary">Necesario para que funcione en algunos escáneres</string> <string name="settings_display_barcode_max_brightness_summary">Necesario para que funcione en algunos escáneres</string>
<string name="settings_keep_screen_on_summary">Deshabilita el tiempo de espera de la pantalla mientras se ve una tarjeta</string> <string name="settings_keep_screen_on_summary">Deshabilita el tiempo de espera de la pantalla mientras se ve una tarjeta</string>
@@ -281,14 +285,4 @@
<string name="show_archived_cards">Mostrar las tarjetas archivadas</string> <string name="show_archived_cards">Mostrar las tarjetas archivadas</string>
<string name="app_copyright_short">Derechos de autor © Sylvia van Os y colaboradores</string> <string name="app_copyright_short">Derechos de autor © Sylvia van Os y colaboradores</string>
<string name="action_display_options">Opciones de la pantalla</string> <string name="action_display_options">Opciones de la pantalla</string>
<string name="card_id_must_not_be_empty">La identificación de la tarjeta no debe estar vacía</string>
<string name="balanceParsingFailed">Saldo incorrecto</string>
<string name="add_a_card_in_a_different_way">Añadir una tarjeta de otra forma</string>
<string name="manually_enter_barcode_instructions">Introduce el número de identificación o el texto de tu tarjeta y pulsa en el código de barras que se parece al de tu tarjeta.</string>
<string name="action_more_options">Más opciones</string>
<string name="enter_card_id">Introduce el número de identificación o el texto de tu tarjeta</string>
<string name="addWithoutBarcode">Añadir una tarjeta sin código de barras</string>
<string name="field_must_not_be_empty">Este campo no debe estar vacío</string>
<string name="app_name">Catima</string>
<string name="settings_follow_sensor_orientation">Girar siempre (ignora la configuración del sistema)</string>
</resources> </resources>

View File

@@ -5,6 +5,7 @@
<string name="updateBarcodeQuestionText">Vaihdoit ID-tunnuksen. Haluatko päivittää myös viivakoodin käyttämään samaa arvoa\?</string> <string name="updateBarcodeQuestionText">Vaihdoit ID-tunnuksen. Haluatko päivittää myös viivakoodin käyttämään samaa arvoa\?</string>
<string name="updateBarcodeQuestionTitle">Päivitetäänkö viivakoodin arvo\?</string> <string name="updateBarcodeQuestionTitle">Päivitetäänkö viivakoodin arvo\?</string>
<string name="intent_import_card_from_url_share_multiple_text">Haluan jakaa joitain kortteja kanssasi</string> <string name="intent_import_card_from_url_share_multiple_text">Haluan jakaa joitain kortteja kanssasi</string>
<string name="copy_to_clipboard_multiple_toast">ID-tunnukset kopioitu leikepöydälle</string>
<string name="wrongValueForBarcodeType">Arvo ei ole kelvollinen valitulle viivakoodityypille</string> <string name="wrongValueForBarcodeType">Arvo ei ole kelvollinen valitulle viivakoodityypille</string>
<string name="unsupportedBarcodeType">Tätä viivakoodityyppiä ei voi vielä näyttää. Sitä saatetaan tukea sovelluksen myöhemmässä versiossa.</string> <string name="unsupportedBarcodeType">Tätä viivakoodityyppiä ei voi vielä näyttää. Sitä saatetaan tukea sovelluksen myöhemmässä versiossa.</string>
<string name="setBarcodeId">Aseta viivakoodin arvo</string> <string name="setBarcodeId">Aseta viivakoodin arvo</string>
@@ -45,7 +46,7 @@
<string name="expiryStateSentence">Vanhenee: <xliff:g>%s</xliff:g></string> <string name="expiryStateSentence">Vanhenee: <xliff:g>%s</xliff:g></string>
<string name="groupsList">Ryhmät: <xliff:g>%s</xliff:g></string> <string name="groupsList">Ryhmät: <xliff:g>%s</xliff:g></string>
<string name="addFromImage">Valitse kuva galleriasta</string> <string name="addFromImage">Valitse kuva galleriasta</string>
<string name="addManually">Anna viivakoodi manuaalisesti</string> <string name="addManually">Anna ID-tunnus manuaalisesti</string>
<string name="leaveWithoutSaveConfirmation">Poistutaanko tallentamatta\?</string> <string name="leaveWithoutSaveConfirmation">Poistutaanko tallentamatta\?</string>
<string name="leaveWithoutSaveTitle">Poistu</string> <string name="leaveWithoutSaveTitle">Poistu</string>
<string name="moveDown">Siirrä alaspäin</string> <string name="moveDown">Siirrä alaspäin</string>
@@ -73,6 +74,7 @@
<string name="settings">Asetukset</string> <string name="settings">Asetukset</string>
<string name="starImage">Suosikkitähti</string> <string name="starImage">Suosikkitähti</string>
<string name="thumbnailDescription">Pienoiskuva</string> <string name="thumbnailDescription">Pienoiskuva</string>
<string name="copy_to_clipboard_toast">ID-tunnus kopioitu leikepöydälle</string>
<string name="selectBarcodeTitle">Valitse viivakoodi</string> <string name="selectBarcodeTitle">Valitse viivakoodi</string>
<string name="app_resources">Vapaat kolmannen osapuolen resurssit: <xliff:g id="app_resources_list">%s</xliff:g></string> <string name="app_resources">Vapaat kolmannen osapuolen resurssit: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_libraries">Vapaat kolmannen osapuolen kirjastot: <xliff:g id="app_libraries_list">%s</xliff:g></string> <string name="app_libraries">Vapaat kolmannen osapuolen kirjastot: <xliff:g id="app_libraries_list">%s</xliff:g></string>
@@ -103,6 +105,7 @@
<string name="importExport">Tuo/vie</string> <string name="importExport">Tuo/vie</string>
<string name="failedParsingImportUriError">Tuonnin URI: n jäsentäminen epäonnistui</string> <string name="failedParsingImportUriError">Tuonnin URI: n jäsentäminen epäonnistui</string>
<string name="noCardExistsError">Tätä korttia ei löytynyt</string> <string name="noCardExistsError">Tätä korttia ei löytynyt</string>
<string name="card_ids_copied">Kopioidut tunnukset</string>
<string name="noCardsMessage">Lisää ensin kortti</string> <string name="noCardsMessage">Lisää ensin kortti</string>
<string name="cardShortcut">Kortin pikakuvake</string> <string name="cardShortcut">Kortin pikakuvake</string>
<string name="scanCardBarcode">Skannaa viivakoodi</string> <string name="scanCardBarcode">Skannaa viivakoodi</string>
@@ -110,6 +113,7 @@
<string name="editCardTitle">Muokkaa korttia</string> <string name="editCardTitle">Muokkaa korttia</string>
<string name="sendLabel">Lähetä…</string> <string name="sendLabel">Lähetä…</string>
<string name="share">Jaa</string> <string name="share">Jaa</string>
<string name="copy_to_clipboard">Kopioi ID-tunnus leikepöydälle</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="confirm">Vahvista</string> <string name="confirm">Vahvista</string>
<string name="delete">Poista</string> <string name="delete">Poista</string>
@@ -171,7 +175,7 @@
<string name="noGroupCards">Tämä ryhmä on tyhjä</string> <string name="noGroupCards">Tämä ryhmä on tyhjä</string>
<string name="group_edit">Muokkaa ryhmää</string> <string name="group_edit">Muokkaa ryhmää</string>
<string name="group_name_already_in_use">Ryhmän nimi on jo käytössä</string> <string name="group_name_already_in_use">Ryhmän nimi on jo käytössä</string>
<string name="group_name_is_empty">Ryhmän nimi ei saa olla tyhjä</string> <string name="group_name_is_empty">Ryhmän nimi ei voi olla tyhjä</string>
<string name="group_updated">Ryhmä päivitetty</string> <string name="group_updated">Ryhmä päivitetty</string>
<string name="editGroup">Muokataan ryhmää: <xliff:g>%s</xliff:g></string> <string name="editGroup">Muokataan ryhmää: <xliff:g>%s</xliff:g></string>
<plurals name="balancePoints"> <plurals name="balancePoints">
@@ -248,7 +252,7 @@
<string name="validFromSentence">Kelvollinen alkaen: <xliff:g>%s</xliff:g></string> <string name="validFromSentence">Kelvollinen alkaen: <xliff:g>%s</xliff:g></string>
<string name="donate">Lahjoita</string> <string name="donate">Lahjoita</string>
<string name="permissionReadCardsLabel">Lue Catima-kortteja</string> <string name="permissionReadCardsLabel">Lue Catima-kortteja</string>
<string name="permissionReadCardsDescription">lue korttisi ja kaikki niiden tiedot, mukaan lukien huomautukset ja kuvat</string> <string name="permissionReadCardsDescription">Lue korttisi ja kaikki niiden tiedot, mukaan lukien huomautukset ja kuvat</string>
<string name="settings_allow_content_provider_read_summary">Sovellusten tulee silti pyytää lupaa saadakseen pääsyn</string> <string name="settings_allow_content_provider_read_summary">Sovellusten tulee silti pyytää lupaa saadakseen pääsyn</string>
<string name="settings_category_title_privacy">Yksityisyys</string> <string name="settings_category_title_privacy">Yksityisyys</string>
<string name="height">Korkeus:</string> <string name="height">Korkeus:</string>
@@ -273,15 +277,4 @@
<string name="action_display_options">Näyttövalinnat</string> <string name="action_display_options">Näyttövalinnat</string>
<string name="app_copyright_short">Tekijänoikeus © Sylvia van Os ja avustajat</string> <string name="app_copyright_short">Tekijänoikeus © Sylvia van Os ja avustajat</string>
<string name="show_archived_cards">Näytä arkistoidut kortit</string> <string name="show_archived_cards">Näytä arkistoidut kortit</string>
<string name="card_id_must_not_be_empty">Kortin tunniste ei saa olla tyhjä</string>
<string name="add_a_card_in_a_different_way">Lisää kortti toisella tavalla</string>
<string name="action_more_options">Lisää valintoja</string>
<string name="enter_card_id">Anna kortin tunnistenumero tai kortissa oleva teksti</string>
<string name="addWithoutBarcode">Lisää kortti jossa ei ole viivakoodia</string>
<string name="field_must_not_be_empty">Kenttä ei saa olla tyhjä</string>
<string name="manually_enter_barcode_instructions">Syötä kortissa näkyvä numero tai teksti ja klikkaa viivakoodia, joka vastaa kortissa olevaa koodia.</string>
<string name="app_name">Catima</string>
<string name="balanceParsingFailed">Virheellinen saldo</string>
<string name="view_online">Näytä verkossa</string>
<string name="settings_follow_sensor_orientation">Kierrä aina (ohittaa järjestelmän asetukset)</string>
</resources> </resources>

View File

@@ -11,6 +11,7 @@
<string name="delete">Supprimer</string> <string name="delete">Supprimer</string>
<string name="confirm">Confirmer</string> <string name="confirm">Confirmer</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="copy_to_clipboard">Copier le numéro dans le presse-papier</string>
<string name="sendLabel">Envoyer…</string> <string name="sendLabel">Envoyer…</string>
<string name="editCardTitle">Modifier la carte</string> <string name="editCardTitle">Modifier la carte</string>
<string name="addCardTitle">Ajouter une carte de fidélité</string> <string name="addCardTitle">Ajouter une carte de fidélité</string>
@@ -40,6 +41,7 @@
<string name="about_title_fmt">À propos de <xliff:g id="app_name">%s</xliff:g></string> <string name="about_title_fmt">À propos de <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Version : <xliff:g id="version">%s</xliff:g></string> <string name="debug_version_fmt">Version : <xliff:g id="version">%s</xliff:g></string>
<string name="selectBarcodeTitle">Choisissez le code-barres</string> <string name="selectBarcodeTitle">Choisissez le code-barres</string>
<string name="copy_to_clipboard_toast">Identifiant copié dans le presse-papiers</string>
<string name="thumbnailDescription">Miniature</string> <string name="thumbnailDescription">Miniature</string>
<string name="settings">Paramètres</string> <string name="settings">Paramètres</string>
<string name="settings_display_barcode_max_brightness">Augmenter la luminosité du code-barres</string> <string name="settings_display_barcode_max_brightness">Augmenter la luminosité du code-barres</string>
@@ -70,7 +72,7 @@
<string name="leaveWithoutSaveConfirmation">Quitter sans enregistrer \?</string> <string name="leaveWithoutSaveConfirmation">Quitter sans enregistrer \?</string>
<string name="leaveWithoutSaveTitle">Quitter</string> <string name="leaveWithoutSaveTitle">Quitter</string>
<string name="failedOpeningFileManager">Installez dabord un gestionnaire de fichiers.</string> <string name="failedOpeningFileManager">Installez dabord un gestionnaire de fichiers.</string>
<string name="addManually">Entrez le code-barres manuellement</string> <string name="addManually">Entrer manuellement lidentifiant</string>
<string name="moveDown">Descendre</string> <string name="moveDown">Descendre</string>
<string name="moveUp">Monter</string> <string name="moveUp">Monter</string>
<plurals name="groupCardCount"> <plurals name="groupCardCount">
@@ -123,6 +125,8 @@
<string name="app_resources">Ressources tierces libres : <xliff:g id="app_resources_list">%s</xliff:g></string> <string name="app_resources">Ressources tierces libres : <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_libraries">Bibliothèques tierces libres : <xliff:g id="app_libraries_list">%s</xliff:g></string> <string name="app_libraries">Bibliothèques tierces libres : <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="intent_import_card_from_url_share_multiple_text">Je veux partager des cartes avec vous</string> <string name="intent_import_card_from_url_share_multiple_text">Je veux partager des cartes avec vous</string>
<string name="copy_to_clipboard_multiple_toast">Identifiants copiés dans le presse-papiers</string>
<string name="card_ids_copied">Numéro(s) copié(s)</string>
<string name="updateBarcodeQuestionText">Vous avez changé lidentifiant. Voulez-vous également mettre à jour le code-barres pour utiliser la même valeur \?</string> <string name="updateBarcodeQuestionText">Vous avez changé lidentifiant. Voulez-vous également mettre à jour le code-barres pour utiliser la même valeur \?</string>
<string name="no">Non</string> <string name="no">Non</string>
<string name="yes">Oui</string> <string name="yes">Oui</string>
@@ -196,7 +200,7 @@
<string name="group_edit">Modifier le groupe</string> <string name="group_edit">Modifier le groupe</string>
<string name="group_name_already_in_use">Nom de groupe déjà utilisé</string> <string name="group_name_already_in_use">Nom de groupe déjà utilisé</string>
<string name="group_updated">Groupe mis à jour</string> <string name="group_updated">Groupe mis à jour</string>
<string name="group_name_is_empty">Le nom de groupe ne peut pas être vide</string> <string name="group_name_is_empty">Le nom du groupe ne peut pas être vide</string>
<string name="setIcon">Définir la vignette</string> <string name="setIcon">Définir la vignette</string>
<string name="selectColor">Sélectionnez la couleur</string> <string name="selectColor">Sélectionnez la couleur</string>
<string name="translate_platform">sur Weblate</string> <string name="translate_platform">sur Weblate</string>
@@ -266,7 +270,7 @@
<string name="show_validity">Afficher la validité</string> <string name="show_validity">Afficher la validité</string>
<string name="show_balance">Afficher le solde</string> <string name="show_balance">Afficher le solde</string>
<string name="permissionReadCardsLabel">Lire les cartes Catima</string> <string name="permissionReadCardsLabel">Lire les cartes Catima</string>
<string name="permissionReadCardsDescription">lisez vos cartes Catima et tous leurs détails, y compris les notes et les images</string> <string name="permissionReadCardsDescription">Lisez vos cartes et tous ses détails, y compris les notes et les images</string>
<string name="settings_allow_content_provider_read_title">Autoriser d\'autres applications à accéder à mes données</string> <string name="settings_allow_content_provider_read_title">Autoriser d\'autres applications à accéder à mes données</string>
<string name="settings_allow_content_provider_read_summary">Les applications devront toujours demander une autorisation pour obtenir l\'accès</string> <string name="settings_allow_content_provider_read_summary">Les applications devront toujours demander une autorisation pour obtenir l\'accès</string>
<string name="settings_display_barcode_max_brightness_summary">Nécessaire au fonctionnement de certains scanneurs</string> <string name="settings_display_barcode_max_brightness_summary">Nécessaire au fonctionnement de certains scanneurs</string>
@@ -281,14 +285,4 @@
<string name="show_archived_cards">Afficher les cartes archivées</string> <string name="show_archived_cards">Afficher les cartes archivées</string>
<string name="view_online">Voir en ligne</string> <string name="view_online">Voir en ligne</string>
<string name="action_display_options">Options daffichage</string> <string name="action_display_options">Options daffichage</string>
<string name="card_id_must_not_be_empty">Lidentifiant de la carte ne peut pas être vide</string>
<string name="balanceParsingFailed">Solde invalide</string>
<string name="add_a_card_in_a_different_way">Ajouter une carte dune autre manière</string>
<string name="manually_enter_barcode_instructions">Entrez le numéro didentification ou le texte sur votre carte et appuyez sur le code-barres qui ressemble à celui sur votre carte.</string>
<string name="action_more_options">Plus doptions</string>
<string name="enter_card_id">Entrez le numéro didentification ou le texte sur votre carte</string>
<string name="addWithoutBarcode">Ajouter une carte sans code-barres</string>
<string name="field_must_not_be_empty">Le champ ne peut pas être vide</string>
<string name="app_name">Catima</string>
<string name="settings_follow_sensor_orientation">Toujours pivoter (ignore les paramètres du système)</string>
</resources> </resources>

View File

@@ -8,6 +8,7 @@
<string name="action_search">חיפוש</string> <string name="action_search">חיפוש</string>
<string name="noGiftCards">לחץ על לחצן ה + להוספת כרטיס, או ייבא מספר כרטיסים באמצעות התפריט ⋮.</string> <string name="noGiftCards">לחץ על לחצן ה + להוספת כרטיס, או ייבא מספר כרטיסים באמצעות התפריט ⋮.</string>
<string name="share">שיתוף</string> <string name="share">שיתוף</string>
<string name="copy_to_clipboard">העתקת מזהה ללוח</string>
<string name="addCardTitle">הוספת כרטיס</string> <string name="addCardTitle">הוספת כרטיס</string>
<string name="star">הוספה למועדפים</string> <string name="star">הוספה למועדפים</string>
<string name="unstar">הסרה ממועדפים</string> <string name="unstar">הסרה ממועדפים</string>
@@ -35,6 +36,7 @@
<string name="scanCardBarcode">סריקת ברקוד</string> <string name="scanCardBarcode">סריקת ברקוד</string>
<string name="cardShortcut">קיצור דרך</string> <string name="cardShortcut">קיצור דרך</string>
<string name="noCardsMessage">תחילה הוסף כרטיס</string> <string name="noCardsMessage">תחילה הוסף כרטיס</string>
<string name="card_ids_copied">מזהי כרטיס הועתקו</string>
<string name="noCardExistsError">כרטיס לא נמצא</string> <string name="noCardExistsError">כרטיס לא נמצא</string>
<string name="importExport">ייבוא/ייצוא</string> <string name="importExport">ייבוא/ייצוא</string>
<string name="exportName">ייצוא</string> <string name="exportName">ייצוא</string>

View File

@@ -19,6 +19,7 @@
<string name="editCardTitle">कार्ड संपादित करें</string> <string name="editCardTitle">कार्ड संपादित करें</string>
<string name="addCardTitle">कार्ड जोड़ें</string> <string name="addCardTitle">कार्ड जोड़ें</string>
<string name="noCardsMessage">पहले एक कार्ड जोड़ें</string> <string name="noCardsMessage">पहले एक कार्ड जोड़ें</string>
<string name="card_ids_copied">कॉपी की गई आईडी</string>
<string name="noCardExistsError">वह कार्ड नहीं मिला</string> <string name="noCardExistsError">वह कार्ड नहीं मिला</string>
<string name="importExport">आयात / निर्यात</string> <string name="importExport">आयात / निर्यात</string>
<string name="exportName">निर्यात</string> <string name="exportName">निर्यात</string>
@@ -62,16 +63,17 @@
<string name="settings_portrait_orientation">पोट्रैट</string> <string name="settings_portrait_orientation">पोट्रैट</string>
<string name="settings_display_barcode_max_brightness">बारकोड का दृश्य उजालित(ब्राइट) करें</string> <string name="settings_display_barcode_max_brightness">बारकोड का दृश्य उजालित(ब्राइट) करें</string>
<string name="settings_keep_screen_on">स्क्रीन को चालू रखें</string> <string name="settings_keep_screen_on">स्क्रीन को चालू रखें</string>
<string name="cameraPermissionDeniedTitle">कैमर तक पहुच नहीं सके</string> <string name="cameraPermissionDeniedTitle">हम कैमर तक पहुच नहीं सक</string>
<string name="noCameraPermissionDirectToSystemSetting">बारकोड स्कैन करने के लिए,को आपके कैमरा का इस्तेमाल करना होगा। इजाज़त कि व्यवस्था (सेटिंग) बदलने के लिए यहाँ दबायें।</string> <string name="noCameraPermissionDirectToSystemSetting">बारकोड स्कैन करने के लिए,को आपके कैमरा का इस्तेमाल करना होगा। इजाज़त कि व्यवस्था (सेटिंग) बदलने के लिए यहाँ दबायें।</string>
<string name="importOptionApplicationExplanation">फाइल खोलने के लिए कोई भी ऐप या अपना पसंदिता फाइल मैनेजर का इस्तेमाल करे।</string> <string name="importOptionApplicationExplanation">फाइल खोलने के लिए कोई भी ऐप या अपना पसंदिता फाइल मैनेजर का इस्तेमाल करे।</string>
<string name="settings_theme">विषय</string> <string name="settings_theme">विषय</string>
<string name="barcodeType">बारकोड का प्रकार</string> <string name="barcodeType">बारकोड का प्रकार</string>
<string name="noBarcode">बारकोड नहीं है</string> <string name="noBarcode">बारकोड नहीं है</string>
<string name="copy_to_clipboard">पहचान पत्र(आई डी) को क्लिपबोर्ड में कॉपी करें</string>
<string name="scanCardBarcode">बारकोड स्कैन करें</string> <string name="scanCardBarcode">बारकोड स्कैन करें</string>
<string name="cardShortcut">कार्ड का सरल उपाय (शॉर्टकट)</string> <string name="cardShortcut">कार्ड का सरल उपाय (शॉर्टकट)</string>
<string name="noGiftCards">\"+\" बटन दबाके कार्ड जोड़ें वा मेन्यू से कार्ड आयात करें</string> <string name="noGiftCards">\"+\" बटन दबाके कार्ड जोड़ें वा मेन्यू से कार्ड आयात करें</string>
<string name="importExportHelp">तथ्य (डाटा) को बैकअप करना हमें उसे दूसरे डिवाइस में भेजने देता है</string> <string name="importExportHelp">तथ्य (डाटा) को बैकअप करना हमें उसे दूसरे डिवाइस में भेजने देता है|</string>
<string name="barcodeImageDescriptionWithType"><xliff:g>%s</xliff:g> का बारकोड</string> <string name="barcodeImageDescriptionWithType"><xliff:g>%s</xliff:g> का बारकोड</string>
<string name="settings_disable_lockscreen_while_viewing_card">स्क्रीन को लॉक होने से रोकें</string> <string name="settings_disable_lockscreen_while_viewing_card">स्क्रीन को लॉक होने से रोकें</string>
<string name="settings_lock_on_opening_orientation">कार्ड खोलते समय प्रयोग करि गयी अवस्था को प्रतिबन्ध करें</string> <string name="settings_lock_on_opening_orientation">कार्ड खोलते समय प्रयोग करि गयी अवस्था को प्रतिबन्ध करें</string>
@@ -92,7 +94,7 @@
<string name="moveUp">ऊपर की और बढ़ें</string> <string name="moveUp">ऊपर की और बढ़ें</string>
<string name="moveDown">नीचे की और बढ़ें</string> <string name="moveDown">नीचे की और बढ़ें</string>
<string name="leaveWithoutSaveTitle">निकास करें</string> <string name="leaveWithoutSaveTitle">निकास करें</string>
<string name="addFromImage">गैलरी से एक चित्र चुनें</string> <string name="addFromImage">गैलरी से चित्र चुनें</string>
<string name="card">कार्ड</string> <string name="card">कार्ड</string>
<string name="editBarcode">बारकोड में बदलाव करें</string> <string name="editBarcode">बारकोड में बदलाव करें</string>
<string name="expiryDate">समाप्ति दिन</string> <string name="expiryDate">समाप्ति दिन</string>
@@ -120,7 +122,7 @@
<item quantity="other"><xliff:g>%d</xliff:g> चयनित.</item> <item quantity="other"><xliff:g>%d</xliff:g> चयनित.</item>
</plurals> </plurals>
<string name="groups">समूहों</string> <string name="groups">समूहों</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">कॉपीराइट © 2019<xliff:g>%d</xliff:g> Sylvia van Os और योगदाता</string> <string name="app_copyright_fmt" tools:ignore="PluralsCandidate">कॉपीराइट © 2019<xliff:g>%d</xliff:g> Sylvia van Os</string>
<plurals name="groupCardCount"> <plurals name="groupCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> कार्ड</item> <item quantity="one"><xliff:g>%d</xliff:g> कार्ड</item>
<item quantity="other"><xliff:g>%d</xliff:g> कार्डों</item> <item quantity="other"><xliff:g>%d</xliff:g> कार्डों</item>
@@ -128,7 +130,7 @@
<string name="group_updated">समूह अपडेट किया गया</string> <string name="group_updated">समूह अपडेट किया गया</string>
<string name="failedOpeningFileManager">पहले एक फाइल मैनेजर इनस्टॉल करें.</string> <string name="failedOpeningFileManager">पहले एक फाइल मैनेजर इनस्टॉल करें.</string>
<string name="leaveWithoutSaveConfirmation">बिना सुरक्षित किये छोड़े\?</string> <string name="leaveWithoutSaveConfirmation">बिना सुरक्षित किये छोड़े\?</string>
<string name="addManually">बारकोड को मैन्युअल रूप से दर्ज करें</string> <string name="addManually">मैन्युअली आई डी दर्ज करें</string>
<string name="editGroup">समूह संपादन: <xliff:g>%s</xliff:g></string> <string name="editGroup">समूह संपादन: <xliff:g>%s</xliff:g></string>
<string name="points">अंक</string> <string name="points">अंक</string>
<string name="chooseImportType">यहाँ से डेटा का आयात करें</string> <string name="chooseImportType">यहाँ से डेटा का आयात करें</string>
@@ -137,81 +139,8 @@
<string name="app_license">कॉपीलेफ्ट लिबर सॉफ्टवेयर, GPLv3+ लाइसेंस प्राप्त</string> <string name="app_license">कॉपीलेफ्ट लिबर सॉफ्टवेयर, GPLv3+ लाइसेंस प्राप्त</string>
<string name="about_title_fmt"><xliff:g id="app_name">%s</xliff:g> के बारे में</string> <string name="about_title_fmt"><xliff:g id="app_name">%s</xliff:g> के बारे में</string>
<string name="debug_version_fmt">संस्करण: <xliff:g id="version">%s</xliff:g></string> <string name="debug_version_fmt">संस्करण: <xliff:g id="version">%s</xliff:g></string>
<string name="copy_to_clipboard_toast">आई डी क्लिपबोर्ड पर कॉपी किया गया</string>
<string name="cameraPermissionRequired">इस क्रिया के लिए कैमरा एक्सेस की अनुमति चाहिए।…</string> <string name="cameraPermissionRequired">इस क्रिया के लिए कैमरा एक्सेस की अनुमति चाहिए।…</string>
<string name="permissionReadCardsLabel">केटीमा कार्ड्स पढ़ें</string> <string name="permissionReadCardsLabel">केटीमा कार्ड्स पढ़ें</string>
<string name="storageReadPermissionRequired">स्टोरेज पढ़ने की इजाजत इस क्रिया के लिए आवश्यक है…</string> <string name="storageReadPermissionRequired">स्टोरेज पढ़ने की इजाजत इस क्रिया के लिए आवश्यक है…</string>
<string name="permissionReadCardsDescription">अपने केटीमा कार्ड और सभी विवरण, सहित नोट्स और छवियों को पढ़ें</string>
<string name="balanceParsingFailed">अमान्य शेष</string>
<string name="takePhoto">फोटो खींचें</string>
<string name="wrongValueForBarcodeType">चयनित बारकोड प्रकार के लिए मूल्य मान्य नहीं है</string>
<string name="importStocard">स्टोकार्ड से आयात करें</string>
<string name="app_loyalty_card_keychain">लॉयल्टी कार्ड कीचेन</string>
<string name="no">नहीं</string>
<string name="importFidme">फिडमी से आयात करें</string>
<string name="yes">हां</string>
<string name="setBarcodeId">बारकोड मूल्य सेट करें</string>
<string name="importVoucherVault">वाउचर वॉल्ट से आयात करें</string>
<string name="barcodeId">बारकोड मूल्य</string>
<string name="importLoyaltyCardKeychain">लॉयल्टी कार्ड कीचेन से आयात करें</string>
<string name="photos">फ़ोटो</string>
<string name="updateBarcodeQuestionTitle">बारकोड मूल्य अपडेट करें\?</string>
<string name="settings_display_barcode_max_brightness_summary">कुछ स्कैनरों के काम करने के लिए यह आवश्यक है</string>
<string name="app_copyright_short">कॉपीराइट © सिल्विया वैन ओएस और योगदानकर्ता</string>
<string name="settings_allow_content_provider_read_summary">ऐप्स को अभी भी पहुंच प्रदान करने के लिए अनुमति का अनुरोध करना होगा</string>
<string name="settings_allow_content_provider_read_title">अन्य ऐप्स को मेरे डेटा तक पहुंचने की अनुमति दें</string>
<string name="expiryStateSentence">समय सीमा समाप्त: <xliff:g>%s</xliff:g></string>
<string name="balanceSentence">बैलेंस: <xliff:g>%s</xliff:g></string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">कार्ड देखते समय स्क्रीन लॉक अक्षम कर देता है</string>
<string name="expiryStateSentenceExpired">समय सीमा समाप्त: <xliff:g>%s</xliff:g></string>
<string name="importStocardMessage">आयात करने के लिए स्टोकार्ड से अपना <i>***.zip</i> निर्यात चुनें।
\nअपने डेटा के निर्यात के लिए support@stocardapp.com पर ई-मेल करके इसे प्राप्त करें।</string>
<string name="app_libraries">लिब्रे तृतीय-पक्ष लाइब्रेरी: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_resources">लिब्रे तृतीय-पक्ष संसाधन: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="settings_keep_screen_on_summary">कार्ड देखते समय स्क्रीन टाइमआउट अक्षम करता है</string>
<string name="removeImage">छवि हटाए</string>
<string name="setBackImage">पीछे की छवि सेट करें</string>
<string name="unsupportedBarcodeType">इस प्रकार का बारकोड को प्रदर्शित नहीं किया जा सकता। यह आने वाले संस्करण मे समर्थन हो सकता है।</string>
<string name="setFrontImage">सामने की छवि सेट करें</string>
<string name="app_name">कैटिमा</string>
<string name="translate_platform">वेबलेट पर</string>
<string name="card_id_must_not_be_empty">कार्ड आईडी खाली नहीं होनी चाहिए</string>
<string name="duplicateCard">प्रतिरूप</string>
<string name="exportPasswordHint">पासवर्ड डालें</string>
<string name="help_translate_this_app">इस ऐप का अनुवाद करने में सहायता करें</string>
<string name="and_data_usage">और डेटा उपयोग</string>
<string name="show_validity">वैधता दिखाएँ</string>
<string name="backImageDescription">पीछे का चित्र</string>
<string name="view_online">ऑनलाइन देखें</string>
<string name="settings_category_title_general">सामान्य</string>
<string name="action_more_options">अधिक विकल्प</string>
<string name="frontImageDescription">सामने का चित्र</string>
<string name="anyDate">कोई दिन</string>
<string name="settings_green_theme">हरा</string>
<string name="settings_pink_theme">गुलाबी</string>
<string name="action_display_options">प्रदर्शन चुनाव</string>
<string name="settings_category_title_cards">पत्ते</string>
<string name="addWithoutBarcode">बिना बारकोड वाला कार्ड जोड़ें</string>
<string name="on_google_play">गूगल प्ले पर</string>
<string name="report_error">गलती की रिपोर्ट करें</string>
<string name="passwordRequired">कृपया पासवर्ड दर्ज करें</string>
<string name="settings_brown_theme">भूरा</string>
<string name="field_must_not_be_empty">फ़ील्ड खाली नहीं होनी चाहिए</string>
<string name="settings_catima_theme">कैटिमा</string>
<string name="options">विकल्प</string>
<string name="settings_magenta_theme">मैजेंटा</string>
<string name="failedGeneratingShareURL">साझा करने योग्य यूआरएल जैनरेट नहीं किया जा सकता. कृपया इसकी रिपोर्ट करें।</string>
<string name="settings_grey_theme">स्लेटी</string>
<string name="sort_by_most_recently_used">सबसे हाल ही में उपयोग किया गया</string>
<string name="settings_theme_color">थीम रंग</string>
<string name="settings_sky_blue_theme">आसमानी नीला</string>
<string name="updateBalanceHint">राशि डालें</string>
<string name="on_github">गिटहब पर</string>
<string name="donate">दान करें</string>
<string name="settings_violet_theme">बैंगनी</string>
<string name="settings_blue_theme">नीला</string>
<string name="shortcutSelectCard">एक कार्ड चुनें</string>
<string name="settings_category_title_privacy">गोपनीयता</string>
<string name="show_balance">मात्रा दिखाओ</string>
<string name="nextCard">अगला</string>
<string name="rate_this_app">इस ऐप को रेट करें</string>
</resources> </resources>

View File

@@ -8,6 +8,7 @@
<string name="confirm">Potvrdi</string> <string name="confirm">Potvrdi</string>
<string name="deleteTitle">Izbriši karticu</string> <string name="deleteTitle">Izbriši karticu</string>
<string name="deleteConfirmation">Izbrisati ovu karticu zauvijek\?</string> <string name="deleteConfirmation">Izbrisati ovu karticu zauvijek\?</string>
<string name="copy_to_clipboard">Kopiraj ID u međuspremnik</string>
<string name="share">Dijeli</string> <string name="share">Dijeli</string>
<string name="sendLabel">Pošalji …</string> <string name="sendLabel">Pošalji …</string>
<string name="editCardTitle">Uredi karticu</string> <string name="editCardTitle">Uredi karticu</string>
@@ -15,6 +16,7 @@
<string name="scanCardBarcode">Snimi crtični kod kartice</string> <string name="scanCardBarcode">Snimi crtični kod kartice</string>
<string name="cardShortcut">Prečac kartice</string> <string name="cardShortcut">Prečac kartice</string>
<string name="noCardsMessage">Najprije dodaj karticu</string> <string name="noCardsMessage">Najprije dodaj karticu</string>
<string name="card_ids_copied">ID oznake su kopirane</string>
<string name="noBarcode">Nema crtičnog koda</string> <string name="noBarcode">Nema crtičnog koda</string>
<string name="star">Dodaj u favorite</string> <string name="star">Dodaj u favorite</string>
<string name="action_add">Dodaj</string> <string name="action_add">Dodaj</string>
@@ -53,7 +55,7 @@
<string name="settings_light_theme">Svijetla</string> <string name="settings_light_theme">Svijetla</string>
<string name="settings_display_barcode_max_brightness">Osvijetli prikaz crtičnog koda</string> <string name="settings_display_barcode_max_brightness">Osvijetli prikaz crtičnog koda</string>
<string name="moveDown">Pomakni prema dolje</string> <string name="moveDown">Pomakni prema dolje</string>
<string name="addManually">Upiši barkod</string> <string name="addManually">Ručno upiši ID</string>
<string name="thumbnailDescription">Sličica</string> <string name="thumbnailDescription">Sličica</string>
<string name="starImage">Omiljena zvijezda</string> <string name="starImage">Omiljena zvijezda</string>
<string name="exportSuccessful">Podaci su izvezeni</string> <string name="exportSuccessful">Podaci su izvezeni</string>
@@ -130,6 +132,7 @@
<string name="noCameraPermissionDirectToSystemSetting">Za snimanje crtičnih kodova Catima treba pristup tvojoj kameri. Dodirni ovdje za mijenjanje postavki dozvola.</string> <string name="noCameraPermissionDirectToSystemSetting">Za snimanje crtičnih kodova Catima treba pristup tvojoj kameri. Dodirni ovdje za mijenjanje postavki dozvola.</string>
<string name="app_libraries">Libre biblioteke trećih strana: <xliff:g id="app_libraries_list">%s</xliff:g></string> <string name="app_libraries">Libre biblioteke trećih strana: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="selectBarcodeTitle">Biranje crtičnog koda</string> <string name="selectBarcodeTitle">Biranje crtičnog koda</string>
<string name="copy_to_clipboard_toast">ID je kopiran u međuspremnik</string>
<string name="settings_portrait_orientation">Okomito</string> <string name="settings_portrait_orientation">Okomito</string>
<string name="settings_lock_on_opening_orientation">Zaključaj na položaj koji se koristi prilikom otvaranja kartice</string> <string name="settings_lock_on_opening_orientation">Zaključaj na položaj koji se koristi prilikom otvaranja kartice</string>
<string name="group_edit">Uredi grupu</string> <string name="group_edit">Uredi grupu</string>
@@ -208,7 +211,7 @@
<item quantity="few">Izbrisati ove <xliff:g>%d</xliff:g> kartice zauvijek\?</item> <item quantity="few">Izbrisati ove <xliff:g>%d</xliff:g> kartice zauvijek\?</item>
<item quantity="other">Izbrisati ovih <xliff:g>%d</xliff:g> kartica zauvijek\?</item> <item quantity="other">Izbrisati ovih <xliff:g>%d</xliff:g> kartica zauvijek\?</item>
</plurals> </plurals>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Autorska prava © 2019. <xliff:g>%d.</xliff:g> Sylvia van Os i doprinositelji</string> <string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019. <xliff:g>%d.</xliff:g> Sylvia van Os</string>
<string name="debug_version_fmt">Verzija: <xliff:g id="version">%s</xliff:g></string> <string name="debug_version_fmt">Verzija: <xliff:g id="version">%s</xliff:g></string>
<string name="app_resources">Libre resursi trećih strana: <xliff:g id="app_resources_list">%s</xliff:g></string> <string name="app_resources">Libre resursi trećih strana: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="settings_landscape_orientation">Vodoravno</string> <string name="settings_landscape_orientation">Vodoravno</string>
@@ -230,6 +233,7 @@
<string name="setBarcodeId">Postavi vrijednost crtičnog koda</string> <string name="setBarcodeId">Postavi vrijednost crtičnog koda</string>
<string name="unsupportedBarcodeType">Ova se vrsta crtičnog koda još ne može prikazati. Možda će se podržati u novijoj verziji aplikacije.</string> <string name="unsupportedBarcodeType">Ova se vrsta crtičnog koda još ne može prikazati. Možda će se podržati u novijoj verziji aplikacije.</string>
<string name="wrongValueForBarcodeType">Vrijednost nije valjana za odabranu vrstu crtičnog koda</string> <string name="wrongValueForBarcodeType">Vrijednost nije valjana za odabranu vrstu crtičnog koda</string>
<string name="copy_to_clipboard_multiple_toast">ID oznke su kopirane u međuspremnik</string>
<string name="intent_import_card_from_url_share_multiple_text">Želim dijeliti neke kartice s tobom</string> <string name="intent_import_card_from_url_share_multiple_text">Želim dijeliti neke kartice s tobom</string>
<string name="backImageDescription">Stražnja slika</string> <string name="backImageDescription">Stražnja slika</string>
<string name="setFrontImage">Postavi prednju sliku</string> <string name="setFrontImage">Postavi prednju sliku</string>
@@ -266,29 +270,4 @@
<string name="show_note">Prikaži bilješku</string> <string name="show_note">Prikaži bilješku</string>
<string name="show_balance">Prikaži saldo</string> <string name="show_balance">Prikaži saldo</string>
<string name="show_validity">Prikaži valjanost</string> <string name="show_validity">Prikaži valjanost</string>
<string name="card_id_must_not_be_empty">ID oznaka kartice ne smije biti prazna</string> </resources>
<string name="balanceParsingFailed">Neispravni saldo</string>
<string name="add_a_card_in_a_different_way">Dodaj karticu na drugi način</string>
<string name="view_online">Pogledaj online</string>
<string name="settings_category_title_general">Opće</string>
<string name="manually_enter_barcode_instructions">Upiši broj ID-a ili tekst na kartici i pritisni crtični kod koji izgleda kao onaj na tvojoj kartici.</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Deaktivira zaključavanje ekrana tijekom prikaza kartice</string>
<string name="action_more_options">Daljnje opcije</string>
<string name="permissionReadCardsDescription">čitaj tvoje Catima kartice i sve njihove pojedinosti, uključujući bilješke i slike</string>
<string name="enter_card_id">Upiši broj ID-a ili tekst na tvojoj kartici</string>
<string name="action_display_options">Opcije prikaza</string>
<string name="settings_display_barcode_max_brightness_summary">Neophodno za rad nekih skenera</string>
<string name="settings_oled_dark_summary">Smanjuje potrošnju baterije OLED ekrana</string>
<string name="settings_category_title_cards">Kartice</string>
<string name="addWithoutBarcode">Dodaj karticu bez crtičnog koda</string>
<string name="app_copyright_short">Autorska prava © Sylvia van Os i doprinositelji</string>
<string name="field_must_not_be_empty">Polje ne smije biti prazno</string>
<string name="settings_allow_content_provider_read_summary">Aplikacije će i dalje morati zatražiti dozvolu za odobravanje pristupa</string>
<string name="settings_allow_content_provider_read_title">Dozvoli drugim aplikacijama pristup mojim podacima</string>
<string name="permissionReadCardsLabel">Čitaj Catima kartice</string>
<string name="show_archived_cards">Prikaži arhivirane kartice</string>
<string name="settings_category_title_privacy">Privatnost</string>
<string name="settings_keep_screen_on_summary">Deaktivira isključivanje ekrana tijekom prikaza kartice</string>
<string name="app_name">Catima</string>
<string name="settings_follow_sensor_orientation">Uvijek rotiraj (ignorira sistemske postavke)</string>
</resources>

View File

@@ -28,6 +28,7 @@
</plurals> </plurals>
<string name="deleteConfirmation">Véglegesen törli a kártyát\?</string> <string name="deleteConfirmation">Véglegesen törli a kártyát\?</string>
<string name="ok">Rendben</string> <string name="ok">Rendben</string>
<string name="copy_to_clipboard">Azonosító vágólapra másolása</string>
<string name="share">Megosztás</string> <string name="share">Megosztás</string>
<string name="sendLabel">Küldés…</string> <string name="sendLabel">Küldés…</string>
<string name="editCardTitle">Kártya szerkesztése</string> <string name="editCardTitle">Kártya szerkesztése</string>
@@ -48,6 +49,7 @@
<item quantity="other">Véglegesen töröl <xliff:g>%d</xliff:g> kártyát\?</item> <item quantity="other">Véglegesen töröl <xliff:g>%d</xliff:g> kártyát\?</item>
</plurals> </plurals>
<string name="deleteTitle">Kártya törlése</string> <string name="deleteTitle">Kártya törlése</string>
<string name="card_ids_copied">Azonosító(k) másolva</string>
<string name="barcodeImageDescriptionWithType">A(z) <xliff:g>%s</xliff:g> vonalkód képe</string> <string name="barcodeImageDescriptionWithType">A(z) <xliff:g>%s</xliff:g> vonalkód képe</string>
<string name="noCardExistsError">A kártya nem található</string> <string name="noCardExistsError">A kártya nem található</string>
<string name="importStocardMessage">Válassza ki az importálandó <i>***.zip</i> Stocard export fájlt. <string name="importStocardMessage">Válassza ki az importálandó <i>***.zip</i> Stocard export fájlt.
@@ -84,6 +86,7 @@
<string name="debug_version_fmt">Verzió: <xliff:g id="version">%s</xliff:g></string> <string name="debug_version_fmt">Verzió: <xliff:g id="version">%s</xliff:g></string>
<string name="app_resources">Szabad külső erőforrások: <xliff:g id="app_resources_list">%s</xliff:g></string> <string name="app_resources">Szabad külső erőforrások: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="selectBarcodeTitle">Vonalkód kiválasztása</string> <string name="selectBarcodeTitle">Vonalkód kiválasztása</string>
<string name="copy_to_clipboard_toast">Azonosító vágólapra másolva</string>
<string name="starImage">Kedvencek csillag</string> <string name="starImage">Kedvencek csillag</string>
<string name="settings">Beállítások</string> <string name="settings">Beállítások</string>
<string name="settings_theme">Téma</string> <string name="settings_theme">Téma</string>
@@ -104,7 +107,7 @@
<string name="moveDown">Mozgatás lefelé</string> <string name="moveDown">Mozgatás lefelé</string>
<string name="leaveWithoutSaveTitle">Kilépés</string> <string name="leaveWithoutSaveTitle">Kilépés</string>
<string name="leaveWithoutSaveConfirmation">Kilépés mentés nélkül\?</string> <string name="leaveWithoutSaveConfirmation">Kilépés mentés nélkül\?</string>
<string name="addManually">A vonalkód kézi beírása</string> <string name="addManually">Azonosító kézi beírása</string>
<string name="addFromImage">Kép kiválasztása a galériából</string> <string name="addFromImage">Kép kiválasztása a galériából</string>
<string name="editGroup">Csoportok szerkesztése: <xliff:g>%s</xliff:g></string> <string name="editGroup">Csoportok szerkesztése: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Lejárat: <xliff:g>%s</xliff:g></string> <string name="expiryStateSentence">Lejárat: <xliff:g>%s</xliff:g></string>
@@ -135,6 +138,7 @@
<string name="sameAsCardId">Ugyanaz, mint az azonosító</string> <string name="sameAsCardId">Ugyanaz, mint az azonosító</string>
<string name="setBarcodeId">Vonalkód értékének beállítása</string> <string name="setBarcodeId">Vonalkód értékének beállítása</string>
<string name="unsupportedBarcodeType">Ez a vonalkódtípus még nem jeleníthető meg. Lehet, hogy támogatott lesz az alkalmazás egy későbbi verziójában.</string> <string name="unsupportedBarcodeType">Ez a vonalkódtípus még nem jeleníthető meg. Lehet, hogy támogatott lesz az alkalmazás egy későbbi verziójában.</string>
<string name="copy_to_clipboard_multiple_toast">Az azonosítók a vágólapra másolva</string>
<string name="intent_import_card_from_url_share_multiple_text">Meg akarok veled osztani pár kártyát</string> <string name="intent_import_card_from_url_share_multiple_text">Meg akarok veled osztani pár kártyát</string>
<string name="frontImageDescription">Előlapi kép</string> <string name="frontImageDescription">Előlapi kép</string>
<string name="backImageDescription">Hátlapi kép</string> <string name="backImageDescription">Hátlapi kép</string>
@@ -257,7 +261,7 @@
<string name="show_note">Megjegyzés megjelenítése</string> <string name="show_note">Megjegyzés megjelenítése</string>
<string name="show_balance">Egyenleg megjelenítése</string> <string name="show_balance">Egyenleg megjelenítése</string>
<string name="permissionReadCardsLabel">Catima kártyák olvasása</string> <string name="permissionReadCardsLabel">Catima kártyák olvasása</string>
<string name="permissionReadCardsDescription">olvassa el a Catima-kártyáit, és annak minden részletét, beleértve a jegyzeteket és a képeket is</string> <string name="permissionReadCardsDescription">Olvassa el a kártyáit és annak minden részletét, beleértve a jegyzeteket és a képeket is</string>
<string name="show_validity">Érvényesség megjelenítése</string> <string name="show_validity">Érvényesség megjelenítése</string>
<string name="show_name_below_image_thumbnail">Név megjelenítése a kép miniatűrje alatt</string> <string name="show_name_below_image_thumbnail">Név megjelenítése a kép miniatűrje alatt</string>
<string name="settings_display_barcode_max_brightness_summary">Szükséges egyes szkennerek működéséhez</string> <string name="settings_display_barcode_max_brightness_summary">Szükséges egyes szkennerek működéséhez</string>
@@ -270,18 +274,4 @@
<string name="settings_disable_lockscreen_while_viewing_card_summary">Letiltja a képernyő időtúllépését a kártya megjelenítése közben</string> <string name="settings_disable_lockscreen_while_viewing_card_summary">Letiltja a képernyő időtúllépését a kártya megjelenítése közben</string>
<string name="settings_allow_content_provider_read_summary">Az alkalmazásoknak továbbra is engedélyt kell kérniük a hozzáféréshez</string> <string name="settings_allow_content_provider_read_summary">Az alkalmazásoknak továbbra is engedélyt kell kérniük a hozzáféréshez</string>
<string name="view_online">Megtekintés online</string> <string name="view_online">Megtekintés online</string>
<string name="card_id_must_not_be_empty">A kártyaazonosító nem lehet üres</string>
<string name="balanceParsingFailed">Érvénytelen egyenleg</string>
<string name="add_a_card_in_a_different_way">Kártya hozzáadása más módon</string>
<string name="manually_enter_barcode_instructions">Adja meg a kártyán szereplő azonosító számát vagy szövegét, és válassza azt a vonalkódot, amely úgy néz ki, mint a kártyán szereplő.</string>
<string name="action_more_options">További beállítások</string>
<string name="enter_card_id">Adja meg a kártyán szereplő azonosító számát vagy szövegét</string>
<string name="action_display_options">Megjelenítési beállítások</string>
<string name="addWithoutBarcode">Vonalkód nélküli kártya hozzáadása</string>
<string name="app_copyright_short">Copyright © Sylvia van Os és közreműködők</string>
<string name="field_must_not_be_empty">A mező nem lehet üres</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os és közreműködők</string>
<string name="show_archived_cards">Archivált kártyák megjelenítése</string>
<string name="app_name">Catima</string>
<string name="settings_follow_sensor_orientation">Mindig forgassa (figyelmen kívül hagyja a rendszerbeállításokat)</string>
</resources> </resources>

View File

@@ -75,6 +75,7 @@
<string name="noMatchingGiftCards">Tidak menemukan apapun. Cobalah untuk mengubah pencarian anda.</string> <string name="noMatchingGiftCards">Tidak menemukan apapun. Cobalah untuk mengubah pencarian anda.</string>
<string name="noBarcode">Bukan barcode</string> <string name="noBarcode">Bukan barcode</string>
<string name="confirm">Konfirmasi</string> <string name="confirm">Konfirmasi</string>
<string name="copy_to_clipboard">Salin ID ke papan klip</string>
<string name="sendLabel">Kirim…</string> <string name="sendLabel">Kirim…</string>
<string name="noCardsMessage">Tambah kartu terlebih dahulu</string> <string name="noCardsMessage">Tambah kartu terlebih dahulu</string>
<string name="noCardExistsError">Tidak dapat menemukan kartu</string> <string name="noCardExistsError">Tidak dapat menemukan kartu</string>
@@ -104,6 +105,7 @@
<string name="debug_version_fmt">Versi: <xliff:g id="version">%s</xliff:g></string> <string name="debug_version_fmt">Versi: <xliff:g id="version">%s</xliff:g></string>
<string name="app_libraries">Pustaka pihak ketiga gratis: <xliff:g id="app_libraries_list">%s</xliff:g></string> <string name="app_libraries">Pustaka pihak ketiga gratis: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_resources">Sumber daya pihak ketiga gratis: <xliff:g id="app_resources_list">%s</xliff:g></string> <string name="app_resources">Sumber daya pihak ketiga gratis: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="copy_to_clipboard_toast">ID disalin ke papan klip</string>
<string name="thumbnailDescription">Gambar tampilan</string> <string name="thumbnailDescription">Gambar tampilan</string>
<string name="starImage">Favorit</string> <string name="starImage">Favorit</string>
<string name="settings_light_theme">Terang</string> <string name="settings_light_theme">Terang</string>
@@ -123,8 +125,8 @@
<string name="moveUp">Pindah ke atas</string> <string name="moveUp">Pindah ke atas</string>
<string name="moveDown">Pindah ke bawah</string> <string name="moveDown">Pindah ke bawah</string>
<string name="leaveWithoutSaveConfirmation">Keluar tanpa menyimpan?</string> <string name="leaveWithoutSaveConfirmation">Keluar tanpa menyimpan?</string>
<string name="addManually">Masukkan barcode secara manual</string> <string name="addManually">Masukan ID</string>
<string name="addFromImage">Pilih sebuah gambar dari galeri</string> <string name="addFromImage">Pilih gambar dari galeri</string>
<string name="groupsList">Grup: <xliff:g>%s</xliff:g></string> <string name="groupsList">Grup: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Masa ber: <xliff:g>%s</xliff:g></string> <string name="expiryStateSentence">Masa ber: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Kadaluwarsa: <xliff:g>%s</xliff:g></string> <string name="expiryStateSentenceExpired">Kadaluwarsa: <xliff:g>%s</xliff:g></string>
@@ -139,7 +141,7 @@
<string name="privacy_policy_popup_text">Pemberitahuan kebijakan privasi (diperlukan oleh beberapa toko aplikasi): <string name="privacy_policy_popup_text">Pemberitahuan kebijakan privasi (diperlukan oleh beberapa toko aplikasi):
\n \n
\nTIDAK ADA DATA YANG DIKUMPULKAN SAMA SEKALI, yang dapat dikonfirmasi oleh siapa pun karena aplikasi kami adalah libre software.</string> \nTIDAK ADA DATA YANG DIKUMPULKAN SAMA SEKALI, yang dapat dikonfirmasi oleh siapa pun karena aplikasi kami adalah libre software.</string>
<string name="importCatimaMessage">Pilih ekspor <i>catima.zip</i> Anda dari Catima untuk diimpor. <string name="importCatimaMessage">Pilih ekspor <i>catima.zip</i> Anda dari Catima untuk diimpor.
\nBuat dari menu Impor/Ekspor aplikasi Catima lain dengan menekan Ekspor di sana terlebih dahulu.</string> \nBuat dari menu Impor/Ekspor aplikasi Catima lain dengan menekan Ekspor di sana terlebih dahulu.</string>
<string name="importFidmeMessage">Pilih ekspor <i>fidme-export-request-xxxxxx.zip</i> Anda dari FidMe untuk diimpor, dan pilih jenis barcode secara manual setelahnya. <string name="importFidmeMessage">Pilih ekspor <i>fidme-export-request-xxxxxx.zip</i> Anda dari FidMe untuk diimpor, dan pilih jenis barcode secara manual setelahnya.
\nBuat dari profil FidMe Anda dengan memilih Perlindungan Data lalu tekan Ekstrak data saya terlebih dahulu.</string> \nBuat dari profil FidMe Anda dengan memilih Perlindungan Data lalu tekan Ekstrak data saya terlebih dahulu.</string>
@@ -154,6 +156,7 @@
\nBuat dengan menekan Ekspor di Vault Voucher terlebih dahulu.</string> \nBuat dengan menekan Ekspor di Vault Voucher terlebih dahulu.</string>
<string name="unsupportedBarcodeType">Jenis barcode ini belum dapat ditampilkan. Ini mungkin didukung di versi aplikasi yang lebih baru.</string> <string name="unsupportedBarcodeType">Jenis barcode ini belum dapat ditampilkan. Ini mungkin didukung di versi aplikasi yang lebih baru.</string>
<string name="wrongValueForBarcodeType">Nilai tidak berlaku untuk jenis barcode yang dipilih</string> <string name="wrongValueForBarcodeType">Nilai tidak berlaku untuk jenis barcode yang dipilih</string>
<string name="copy_to_clipboard_multiple_toast">ID disalin ke papan klip</string>
<string name="frontImageDescription">Gambar depan</string> <string name="frontImageDescription">Gambar depan</string>
<string name="backImageDescription">Gambar belakang</string> <string name="backImageDescription">Gambar belakang</string>
<string name="updateBarcodeQuestionTitle">Perbarui barcode?</string> <string name="updateBarcodeQuestionTitle">Perbarui barcode?</string>
@@ -170,6 +173,7 @@
<string name="and_data_usage">dan penggunaan data</string> <string name="and_data_usage">dan penggunaan data</string>
<string name="on_google_play">di Google Play</string> <string name="on_google_play">di Google Play</string>
<string name="cardShortcut">Pintasan Kartu</string> <string name="cardShortcut">Pintasan Kartu</string>
<string name="card_ids_copied">ID(s) yang disalin</string>
<string name="barcodeImageDescriptionWithType">Gambar <xliff:g>%s</xliff:g> barcode</string> <string name="barcodeImageDescriptionWithType">Gambar <xliff:g>%s</xliff:g> barcode</string>
<string name="importExportHelp">Mencadangkan data anda akan memungkinkan memindahkannya ke perangkat lain.</string> <string name="importExportHelp">Mencadangkan data anda akan memungkinkan memindahkannya ke perangkat lain.</string>
<plurals name="selectedCardCount"> <plurals name="selectedCardCount">
@@ -253,7 +257,7 @@
<string name="show_name_below_image_thumbnail">Tampilkan nama di bawah thumbnail gambar</string> <string name="show_name_below_image_thumbnail">Tampilkan nama di bawah thumbnail gambar</string>
<string name="show_note">Tampilkan catatan</string> <string name="show_note">Tampilkan catatan</string>
<string name="permissionReadCardsLabel">Baca Kartu Catima</string> <string name="permissionReadCardsLabel">Baca Kartu Catima</string>
<string name="permissionReadCardsDescription">baca kartu Anda dan semua detailnya, termasuk catatan dan gambar</string> <string name="permissionReadCardsDescription">Baca kartu Anda dan semua detailnya, termasuk catatan dan gambar</string>
<string name="settings_allow_content_provider_read_title">Izinkan aplikasi lain mengakses data saya</string> <string name="settings_allow_content_provider_read_title">Izinkan aplikasi lain mengakses data saya</string>
<string name="settings_allow_content_provider_read_summary">Aplikasi masih harus meminta izin untuk diberikan akses</string> <string name="settings_allow_content_provider_read_summary">Aplikasi masih harus meminta izin untuk diberikan akses</string>
<string name="settings_keep_screen_on_summary">Menonaktifkan batas waktu layar saat melihat kartu</string> <string name="settings_keep_screen_on_summary">Menonaktifkan batas waktu layar saat melihat kartu</string>
@@ -267,14 +271,4 @@
<string name="action_display_options">Pilihan tampilan</string> <string name="action_display_options">Pilihan tampilan</string>
<string name="view_online">Lihat di Internet</string> <string name="view_online">Lihat di Internet</string>
<string name="app_copyright_short">Terdapat Hak Cipta © Sylvia van Os dan para kontributor</string> <string name="app_copyright_short">Terdapat Hak Cipta © Sylvia van Os dan para kontributor</string>
<string name="card_id_must_not_be_empty">ID Kartu tidak boleh kosong</string>
<string name="balanceParsingFailed">Saldo tidak valid</string>
<string name="add_a_card_in_a_different_way">Tambah kartu dengan cara lain</string>
<string name="manually_enter_barcode_instructions">Tambahkan nomor ID atau teks di kartu Anda dan tekan barcode yang terlihat .</string>
<string name="action_more_options">Opsi lebih banyak</string>
<string name="enter_card_id">Masukkan nomor identitas atau teks pada kartu Anda</string>
<string name="addWithoutBarcode">Tambah kartu tanpa barcode</string>
<string name="field_must_not_be_empty">Isian tidak boleh kosong</string>
<string name="app_name">Catima</string>
<string name="settings_follow_sensor_orientation">Selalu rotasi (abaikan pengaturan sistem)</string>
</resources> </resources>

View File

@@ -13,6 +13,7 @@
<string name="delete">Elimina</string> <string name="delete">Elimina</string>
<string name="confirm">Conferma</string> <string name="confirm">Conferma</string>
<string name="ok">Ok</string> <string name="ok">Ok</string>
<string name="copy_to_clipboard">Copia codice negli appunti</string>
<string name="share">Condividi</string> <string name="share">Condividi</string>
<string name="sendLabel">Invia…</string> <string name="sendLabel">Invia…</string>
<string name="editCardTitle">Modifica carta</string> <string name="editCardTitle">Modifica carta</string>
@@ -44,6 +45,7 @@
<string name="about_title_fmt">Informazioni su <xliff:g id="app_name">%s</xliff:g></string> <string name="about_title_fmt">Informazioni su <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Versione: <xliff:g id="version">%s</xliff:g></string> <string name="debug_version_fmt">Versione: <xliff:g id="version">%s</xliff:g></string>
<string name="selectBarcodeTitle">Seleziona codice a barre</string> <string name="selectBarcodeTitle">Seleziona codice a barre</string>
<string name="copy_to_clipboard_toast">Codice copiato negli appunti</string>
<string name="thumbnailDescription">Miniatura</string> <string name="thumbnailDescription">Miniatura</string>
<string name="settings">Impostazioni</string> <string name="settings">Impostazioni</string>
<string name="settings_theme">Tema</string> <string name="settings_theme">Tema</string>
@@ -67,7 +69,7 @@
<string name="groups">Gruppi</string> <string name="groups">Gruppi</string>
<string name="enter_group_name">Inserisci il nome del gruppo</string> <string name="enter_group_name">Inserisci il nome del gruppo</string>
<string name="groupsList">Gruppi: <xliff:g>%s</xliff:g></string> <string name="groupsList">Gruppi: <xliff:g>%s</xliff:g></string>
<string name="addManually">Inserire manualmente il codice</string> <string name="addManually">Inserisci manualmente il codice</string>
<string name="leaveWithoutSaveConfirmation">Uscire senza salvare\?</string> <string name="leaveWithoutSaveConfirmation">Uscire senza salvare\?</string>
<string name="leaveWithoutSaveTitle">Esci</string> <string name="leaveWithoutSaveTitle">Esci</string>
<string name="moveDown">Sposta in basso</string> <string name="moveDown">Sposta in basso</string>
@@ -92,7 +94,7 @@
<string name="expiryStateSentenceExpired">Scaduta: <xliff:g>%s</xliff:g></string> <string name="expiryStateSentenceExpired">Scaduta: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Scadenza: <xliff:g>%s</xliff:g></string> <string name="expiryStateSentence">Scadenza: <xliff:g>%s</xliff:g></string>
<string name="settings_keep_screen_on">Mantieni lo schermo attivo</string> <string name="settings_keep_screen_on">Mantieni lo schermo attivo</string>
<string name="app_loyalty_card_keychain">Portachiavi con carta fedeltà</string> <string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
<string name="chooseImportType">Importa i dati da</string> <string name="chooseImportType">Importa i dati da</string>
<string name="settings_disable_lockscreen_while_viewing_card">Impedisci il blocco dello schermo</string> <string name="settings_disable_lockscreen_while_viewing_card">Impedisci il blocco dello schermo</string>
<string name="accept">Accetta</string> <string name="accept">Accetta</string>
@@ -117,12 +119,14 @@
<string name="barcodeId">Valore del codice a barre</string> <string name="barcodeId">Valore del codice a barre</string>
<string name="errorReadingImage">Impossibile leggere l\'immagine</string> <string name="errorReadingImage">Impossibile leggere l\'immagine</string>
<string name="noBarcodeFound">Nessun codice a barre trovato</string> <string name="noBarcodeFound">Nessun codice a barre trovato</string>
<string name="addFromImage">Seleziona un\'immagine dalla galleria</string> <string name="addFromImage">Seleziona immagine dalla galleria</string>
<string name="unsupportedBarcodeType">Questo tipo di codice a barre non può ancora essere visualizzato. Potrebbe essere supportato in una versione successiva dell\'applicazione.</string> <string name="unsupportedBarcodeType">Questo tipo di codice a barre non può ancora essere visualizzato. Potrebbe essere supportato in una versione successiva dell\'applicazione.</string>
<string name="wrongValueForBarcodeType">Il valore non è valido per il tipo di codice a barre selezionato</string> <string name="wrongValueForBarcodeType">Il valore non è valido per il tipo di codice a barre selezionato</string>
<string name="app_resources">Risorse libere di terze parti: <xliff:g id="app_resources_list"> %s </xliff:g></string> <string name="app_resources">Risorse libere di terze parti: <xliff:g id="app_resources_list"> %s </xliff:g></string>
<string name="app_libraries">Librerie libere di terze parti: <xliff:g id="app_libraries_list"> %s </xliff:g></string> <string name="app_libraries">Librerie libere di terze parti: <xliff:g id="app_libraries_list"> %s </xliff:g></string>
<string name="intent_import_card_from_url_share_multiple_text">Voglio condividere alcune carte con te</string> <string name="intent_import_card_from_url_share_multiple_text">Voglio condividere alcune carte con te</string>
<string name="copy_to_clipboard_multiple_toast">Codici copiati negli appunti</string>
<string name="card_ids_copied">Codice/i copiato/i</string>
<string name="no">No</string> <string name="no">No</string>
<string name="yes"></string> <string name="yes"></string>
<string name="updateBarcodeQuestionText">Hai cambiato il codice. Vuoi anche aggiornare il codice a barre per usare lo stesso valore\?</string> <string name="updateBarcodeQuestionText">Hai cambiato il codice. Vuoi anche aggiornare il codice a barre per usare lo stesso valore\?</string>
@@ -192,7 +196,7 @@
<string name="rate_this_app">Valuta questa applicazione</string> <string name="rate_this_app">Valuta questa applicazione</string>
<string name="report_error">Segnala un errore</string> <string name="report_error">Segnala un errore</string>
<string name="editGroup">Modifica del gruppo: <xliff:g>%s</xliff:g></string> <string name="editGroup">Modifica del gruppo: <xliff:g>%s</xliff:g></string>
<string name="group_name_is_empty">Il nome del gruppo non deve essere vuoto</string> <string name="group_name_is_empty">Il nome del gruppo non può essere vuoto</string>
<string name="noGiftCardsGroup">Crea alcune carte e poi assegnale al gruppo qui.</string> <string name="noGiftCardsGroup">Crea alcune carte e poi assegnale al gruppo qui.</string>
<string name="group_edit">Modifica il gruppo</string> <string name="group_edit">Modifica il gruppo</string>
<string name="group_name_already_in_use">Il nome del gruppo è già in uso</string> <string name="group_name_already_in_use">Il nome del gruppo è già in uso</string>
@@ -268,7 +272,7 @@
<string name="permissionReadCardsLabel">Leggi le carte Catima</string> <string name="permissionReadCardsLabel">Leggi le carte Catima</string>
<string name="settings_allow_content_provider_read_summary">Le applicazioni dovranno comunque richiedere l\'autorizzazione per ottenere l\'accesso</string> <string name="settings_allow_content_provider_read_summary">Le applicazioni dovranno comunque richiedere l\'autorizzazione per ottenere l\'accesso</string>
<string name="settings_allow_content_provider_read_title">Consenti ad altre applicazioni di accedere ai miei dati</string> <string name="settings_allow_content_provider_read_title">Consenti ad altre applicazioni di accedere ai miei dati</string>
<string name="permissionReadCardsDescription">Leggere le sue carte e tutti i suoi dettagli, comprese le note e le immagini</string> <string name="permissionReadCardsDescription">Leggi le tue carte e tutti i suoi dettagli, comprese le note e le immagini</string>
<string name="settings_display_barcode_max_brightness_summary">Necessario per il funzionamento di alcuni scanner</string> <string name="settings_display_barcode_max_brightness_summary">Necessario per il funzionamento di alcuni scanner</string>
<string name="settings_keep_screen_on_summary">Disattiva il timeout dello schermo durante la visualizzazione di una carta</string> <string name="settings_keep_screen_on_summary">Disattiva il timeout dello schermo durante la visualizzazione di una carta</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Disattiva il blocco dello schermo durante la visualizzazione di una carta</string> <string name="settings_disable_lockscreen_while_viewing_card_summary">Disattiva il blocco dello schermo durante la visualizzazione di una carta</string>
@@ -281,14 +285,4 @@
<string name="show_archived_cards">Mostrare le carte archiviate</string> <string name="show_archived_cards">Mostrare le carte archiviate</string>
<string name="view_online">Visualizzare online</string> <string name="view_online">Visualizzare online</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os e contributori</string> <string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os e contributori</string>
<string name="card_id_must_not_be_empty">L\'ID della carta non deve essere vuoto</string>
<string name="balanceParsingFailed">Saldo non valido</string>
<string name="add_a_card_in_a_different_way">Aggiungere una carta in un modo diverso</string>
<string name="manually_enter_barcode_instructions">Inserire il numero ID o il testo sulla sua carta poi prema il codice a barre che assomiglia a quello sulla sua carta.</string>
<string name="action_more_options">Più opzioni</string>
<string name="enter_card_id">Inserire il numero ID o il testo sulla sua carta</string>
<string name="addWithoutBarcode">Aggiungere una carta senza codice a barre</string>
<string name="field_must_not_be_empty">Il campo non deve essere vuoto</string>
<string name="app_name">Catima</string>
<string name="settings_follow_sensor_orientation">Ruota sempre (ignora le impostazioni di sistema)</string>
</resources> </resources>

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