mirror of
https://github.com/CatimaLoyalty/Android.git
synced 2026-01-05 21:48:01 -05:00
Compare commits
1 Commits
create-pul
...
badAttempt
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7f64449167 |
20
.github/dependabot.yml
vendored
20
.github/dependabot.yml
vendored
@@ -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/"
|
|
||||||
|
|||||||
4
.github/workflows/android.yml
vendored
4
.github/workflows/android.yml
vendored
@@ -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
|
||||||
|
|||||||
4
.github/workflows/changelog-to-fastlane.yml
vendored
4
.github/workflows/changelog-to-fastlane.yml
vendored
@@ -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
|
||||||
|
|||||||
5
.github/workflows/contributors-to-file.yml
vendored
5
.github/workflows/contributors-to-file.yml
vendored
@@ -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:
|
||||||
|
|||||||
36
.github/workflows/generate-feature-graphic.yml
vendored
36
.github/workflows/generate-feature-graphic.yml
vendored
@@ -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:
|
||||||
|
|||||||
33
.github/workflows/gradle-update.yml
vendored
33
.github/workflows/gradle-update.yml
vendored
@@ -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
|
|
||||||
5
.github/workflows/update-locales.yml
vendored
5
.github/workflows/update-locales.yml
vendored
@@ -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
26
.gitignore
vendored
@@ -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/
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
|
||||||
10
CHANGELOG.md
10
CHANGELOG.md
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
75
Gemfile.lock
75
Gemfile.lock
@@ -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
165
app/build.gradle
Normal 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
2
app/proguard-rules.pro
vendored
2
app/proguard-rules.pro
vendored
@@ -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
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima Debug</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima Debug</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Depuración de Catima</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Débogage de Catima</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">कैटिमा डीबग</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima Debug</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima Debug</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima Debug</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima Debug</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">ಕ್ಯಾಟಿಮಾ ಡೀಬಗ್</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima 디버그</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima-avlusing</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima-foutopsporing</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima Debug</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Depuração Catima</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Depanare Catima</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Отладка Catima</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima Debug</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima Hata Ayaklama</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima Debug</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Gỡ lỗi Catima</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Catima 调试</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources></resources>
|
|
||||||
@@ -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>
|
|
||||||
@@ -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" />
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
10
app/src/main/res/drawable/ic_copy.xml
Normal file
10
app/src/main/res/drawable/ic_copy.xml
Normal 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>
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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>
|
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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>
|
|
||||||
|
|||||||
@@ -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>
|
|
||||||
|
|||||||
@@ -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 © 2016–2020 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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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 d’abord un gestionnaire de fichiers.</string>
|
<string name="failedOpeningFileManager">Installez d’abord un gestionnaire de fichiers.</string>
|
||||||
<string name="addManually">Entrez le code-barres manuellement</string>
|
<string name="addManually">Entrer manuellement l’identifiant</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é l’identifiant. Voulez-vous également mettre à jour le code-barres pour utiliser la même valeur \?</string>
|
<string name="updateBarcodeQuestionText">Vous avez changé l’identifiant. 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 d’affichage</string>
|
<string name="action_display_options">Options d’affichage</string>
|
||||||
<string name="card_id_must_not_be_empty">L’identifiant 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 d’une autre manière</string>
|
|
||||||
<string name="manually_enter_barcode_instructions">Entrez le numéro d’identification 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 d’options</string>
|
|
||||||
<string name="enter_card_id">Entrez le numéro d’identification 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>
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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>
|
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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">Sì</string>
|
<string name="yes">Sì</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
Reference in New Issue
Block a user