mirror of
https://github.com/CatimaLoyalty/Android.git
synced 2025-12-24 23:57:53 -05:00
Compare commits
135 Commits
create-pul
...
create-pul
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
98ba87ea56 | ||
|
|
d5c03f9d36 | ||
|
|
6ed2ff849a | ||
|
|
2945450186 | ||
|
|
8944c6d5dc | ||
|
|
97db8ee025 | ||
|
|
777a3cce28 | ||
|
|
91386df0f7 | ||
|
|
9f95812d32 | ||
|
|
361b011205 | ||
|
|
ac45a5cdfe | ||
|
|
e892f5d57c | ||
|
|
a3d24ebe3b | ||
|
|
29ce8e63b3 | ||
|
|
223d6d1d35 | ||
|
|
e712765f0b | ||
|
|
ad68c43857 | ||
|
|
626c25b781 | ||
|
|
0e9366e0ce | ||
|
|
cccffe9543 | ||
|
|
821e81303c | ||
|
|
d3ba0ff93f | ||
|
|
2bf9f58054 | ||
|
|
07ba380c21 | ||
|
|
6e523dff7e | ||
|
|
702cc17bd5 | ||
|
|
6b9c452de7 | ||
|
|
5d9a670225 | ||
|
|
4cb939ab6b | ||
|
|
f14b2dffcd | ||
|
|
55b0ee7a63 | ||
|
|
4adfb0d292 | ||
|
|
948ee26852 | ||
|
|
a652d3fd9a | ||
|
|
18e530f3a0 | ||
|
|
a55dcd760c | ||
|
|
2bbcad03ef | ||
|
|
cc9c50032c | ||
|
|
06cf3e9288 | ||
|
|
a25e91dede | ||
|
|
57086649f4 | ||
|
|
7d2fc03248 | ||
|
|
b2ad30d1ae | ||
|
|
8970a0a031 | ||
|
|
c9e713cf7f | ||
|
|
64e315f0b0 | ||
|
|
f60cf0e674 | ||
|
|
5d2a1b0263 | ||
|
|
77860441ad | ||
|
|
f46ec1ec51 | ||
|
|
e644c347ec | ||
|
|
0b28df9999 | ||
|
|
dddb3e3a11 | ||
|
|
0518821341 | ||
|
|
2eefcf1270 | ||
|
|
93c3705207 | ||
|
|
9fcf9e4dd9 | ||
|
|
392ce9bc79 | ||
|
|
da3eaf36f1 | ||
|
|
0458c501c8 | ||
|
|
632ef8b3a8 | ||
|
|
40e5014cc6 | ||
|
|
ba09eb4ca3 | ||
|
|
2c77dcadb5 | ||
|
|
99eaaebf1c | ||
|
|
f2e77cdf09 | ||
|
|
8f00b17315 | ||
|
|
3a17756532 | ||
|
|
cff3fff971 | ||
|
|
2763635f17 | ||
|
|
1dd1a1273f | ||
|
|
3f5b953c16 | ||
|
|
1539d88d78 | ||
|
|
91ee846054 | ||
|
|
c5cecee7b1 | ||
|
|
1e0a52d780 | ||
|
|
0792bb1407 | ||
|
|
6e9a05389a | ||
|
|
68833a7ff1 | ||
|
|
cc7553850a | ||
|
|
e66277d665 | ||
|
|
caea63ea32 | ||
|
|
1761465532 | ||
|
|
8218cc63c7 | ||
|
|
c2ff763311 | ||
|
|
813287a657 | ||
|
|
66c3046c4d | ||
|
|
acbdf79d79 | ||
|
|
ade3db0902 | ||
|
|
d66066c195 | ||
|
|
0a222ca16a | ||
|
|
48fa369dc3 | ||
|
|
9e861b1b10 | ||
|
|
6b7926ecde | ||
|
|
ccd6e12547 | ||
|
|
c869104e82 | ||
|
|
f430d3071b | ||
|
|
26460753a6 | ||
|
|
2653c7aea3 | ||
|
|
1a892b2de3 | ||
|
|
a9e9ee511d | ||
|
|
7719a2d3fd | ||
|
|
84a6202db1 | ||
|
|
4d8a4fbd6a | ||
|
|
d556e7e0a2 | ||
|
|
5f039c5c3f | ||
|
|
5bf69db296 | ||
|
|
f20cac5d85 | ||
|
|
69976289ca | ||
|
|
8b30f92dfd | ||
|
|
477c70a8e5 | ||
|
|
2e9d1a41f6 | ||
|
|
ff617036c7 | ||
|
|
2b4e8b1f8b | ||
|
|
7bcbdd8358 | ||
|
|
45c212c5cc | ||
|
|
00d7b5e231 | ||
|
|
0314d49b77 | ||
|
|
6335b731df | ||
|
|
c248d1e84c | ||
|
|
94de9829b9 | ||
|
|
0448efd04c | ||
|
|
21f4b9b5cf | ||
|
|
01a30db52e | ||
|
|
01ed9bd30f | ||
|
|
583edb53d9 | ||
|
|
f51cc70d8e | ||
|
|
539d05a603 | ||
|
|
906162ebb4 | ||
|
|
b06203dc8a | ||
|
|
6aec4b93ff | ||
|
|
3ea6f64021 | ||
|
|
51fb01b190 | ||
|
|
01b23109ae | ||
|
|
4e291b58d3 |
6
.github/workflows/android.yml
vendored
6
.github/workflows/android.yml
vendored
@@ -58,17 +58,17 @@ jobs:
|
||||
api-level: 21
|
||||
arch: x86_64
|
||||
script: ./gradlew connected${{ matrix.flavor }}DebugAndroidTest
|
||||
- name: Run instrumented tests (API 34)
|
||||
- name: Run instrumented tests (API 35)
|
||||
uses: ReactiveCircus/android-emulator-runner@v2
|
||||
with:
|
||||
api-level: 34
|
||||
api-level: 35
|
||||
arch: x86_64
|
||||
script: ./gradlew connected${{ matrix.flavor }}DebugAndroidTest
|
||||
- name: SpotBugs
|
||||
run: ./gradlew spotbugs${{ matrix.flavor }}Release
|
||||
- name: Archive test results
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4.6.0
|
||||
uses: actions/upload-artifact@v4.6.2
|
||||
with:
|
||||
name: test-results-flavor${{ matrix.flavor }}
|
||||
path: app/build/reports
|
||||
|
||||
4
.github/workflows/changelog-to-fastlane.yml
vendored
4
.github/workflows/changelog-to-fastlane.yml
vendored
@@ -29,13 +29,13 @@ jobs:
|
||||
id: checkout
|
||||
uses: actions/checkout@v4.2.2
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5.4.0
|
||||
uses: actions/setup-python@v5.5.0
|
||||
with:
|
||||
python-version: '3.x'
|
||||
- name: Run converter script
|
||||
run: python .scripts/changelog_to_fastlane.py
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v7.0.6
|
||||
uses: peter-evans/create-pull-request@v7.0.8
|
||||
with:
|
||||
title: "Update Fastlane changelogs"
|
||||
commit-message: "Update Fastlane changelogs"
|
||||
|
||||
2
.github/workflows/contributors-to-file.yml
vendored
2
.github/workflows/contributors-to-file.yml
vendored
@@ -33,7 +33,7 @@ jobs:
|
||||
file_in_repo: app/src/main/res/raw/contributors.txt
|
||||
min_commit_count: 5
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v7.0.6
|
||||
uses: peter-evans/create-pull-request@v7.0.8
|
||||
with:
|
||||
title: "Update contributors"
|
||||
commit-message: "Update contributors"
|
||||
|
||||
@@ -39,7 +39,7 @@ jobs:
|
||||
- name: Generate featureGraphic.png for each language
|
||||
run: .scripts/generate_feature_graphic/generate_feature_graphic.sh
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v7.0.6
|
||||
uses: peter-evans/create-pull-request@v7.0.8
|
||||
with:
|
||||
title: "Update feature graphic"
|
||||
commit-message: "Update feature graphic"
|
||||
|
||||
2
.github/workflows/gradle-update.yml
vendored
2
.github/workflows/gradle-update.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
||||
id: gradle-update
|
||||
- uses: gradle/actions/wrapper-validation@v4
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v7.0.6
|
||||
uses: peter-evans/create-pull-request@v7.0.8
|
||||
with:
|
||||
title: "Update Gradle to ${{ steps.gradle-update.outputs.version }}"
|
||||
commit-message: "Update Gradle to ${{ steps.gradle-update.outputs.version }}"
|
||||
|
||||
2
.github/workflows/update-locales.yml
vendored
2
.github/workflows/update-locales.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
- name: Update locales
|
||||
run: .scripts/locales.py
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v7.0.6
|
||||
uses: peter-evans/create-pull-request@v7.0.8
|
||||
with:
|
||||
title: "Update locales"
|
||||
commit-message: "Update locales"
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# Changelog
|
||||
|
||||
## v2.34.5 - 147 (2025-03-22)
|
||||
|
||||
- Target Android 15
|
||||
- Fix crash reading unsupported pkpass files
|
||||
- Improve pkpass support
|
||||
|
||||
## v2.34.4 - 146 (2025-01-17)
|
||||
|
||||
- Ability to sort cards by start of validity
|
||||
|
||||
45
Gemfile.lock
45
Gemfile.lock
@@ -9,21 +9,22 @@ GEM
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
artifactory (3.0.17)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.3.0)
|
||||
aws-partitions (1.1020.0)
|
||||
aws-sdk-core (3.214.0)
|
||||
aws-eventstream (1.3.2)
|
||||
aws-partitions (1.1072.0)
|
||||
aws-sdk-core (3.220.2)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.992.0)
|
||||
aws-sigv4 (~> 1.9)
|
||||
base64
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-kms (1.96.0)
|
||||
aws-sdk-core (~> 3, >= 3.210.0)
|
||||
aws-sdk-kms (1.99.0)
|
||||
aws-sdk-core (~> 3, >= 3.216.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sdk-s3 (1.176.0)
|
||||
aws-sdk-core (~> 3, >= 3.210.0)
|
||||
aws-sdk-s3 (1.182.0)
|
||||
aws-sdk-core (~> 3, >= 3.216.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sigv4 (1.10.1)
|
||||
aws-sigv4 (1.11.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
base64 (0.2.0)
|
||||
@@ -33,7 +34,7 @@ GEM
|
||||
commander (4.6.0)
|
||||
highline (~> 2.0.0)
|
||||
declarative (0.0.20)
|
||||
digest-crc (0.6.5)
|
||||
digest-crc (0.7.0)
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.6.20240107)
|
||||
dotenv (2.8.1)
|
||||
@@ -58,8 +59,8 @@ GEM
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.0.4)
|
||||
multipart-post (~> 2)
|
||||
faraday-multipart (1.1.0)
|
||||
multipart-post (~> 2.0)
|
||||
faraday-net_http (1.0.2)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday-patron (1.0.0)
|
||||
@@ -67,8 +68,8 @@ GEM
|
||||
faraday-retry (1.0.3)
|
||||
faraday_middleware (1.2.1)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.3.1)
|
||||
fastlane (2.226.0)
|
||||
fastimage (2.4.0)
|
||||
fastlane (2.227.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
@@ -129,12 +130,12 @@ GEM
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-storage_v1 (0.31.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-cloud-core (1.7.1)
|
||||
google-cloud-core (1.8.0)
|
||||
google-cloud-env (>= 1.0, < 3.a)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.6.0)
|
||||
faraday (>= 0.17.3, < 3.0)
|
||||
google-cloud-errors (1.4.0)
|
||||
google-cloud-errors (1.5.0)
|
||||
google-cloud-storage (1.47.0)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
@@ -152,21 +153,23 @@ GEM
|
||||
highline (2.0.3)
|
||||
http-cookie (1.0.8)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
httpclient (2.9.0)
|
||||
mutex_m
|
||||
jmespath (1.6.2)
|
||||
json (2.9.0)
|
||||
jwt (2.9.3)
|
||||
json (2.10.2)
|
||||
jwt (2.10.1)
|
||||
base64
|
||||
mini_magick (4.13.2)
|
||||
mini_mime (1.1.5)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.4.1)
|
||||
mutex_m (0.3.0)
|
||||
nanaimo (0.4.0)
|
||||
naturally (2.2.1)
|
||||
nkf (0.2.0)
|
||||
optparse (0.6.0)
|
||||
os (1.1.4)
|
||||
plist (3.7.1)
|
||||
plist (3.7.2)
|
||||
public_suffix (6.0.1)
|
||||
rake (13.2.1)
|
||||
representable (3.2.0)
|
||||
@@ -174,10 +177,10 @@ GEM
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.2)
|
||||
rexml (3.3.9)
|
||||
rexml (3.4.1)
|
||||
rouge (3.28.0)
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.3.2)
|
||||
rubyzip (2.4.1)
|
||||
security (0.1.5)
|
||||
signet (0.19.0)
|
||||
addressable (~> 2.8)
|
||||
|
||||
@@ -21,14 +21,14 @@ android {
|
||||
defaultConfig {
|
||||
applicationId = "me.hackerchick.catima"
|
||||
minSdk = 21
|
||||
targetSdk = 34
|
||||
versionCode = 146
|
||||
versionName = "2.34.4"
|
||||
targetSdk = 35
|
||||
versionCode = 147
|
||||
versionName = "2.34.5"
|
||||
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
multiDexEnabled = true
|
||||
|
||||
resourceConfigurations += listOf("ar", "bg", "bn", "bn-rIN", "bs", "cs", "da", "de", "el-rGR", "en", "eo", "es", "es-rAR", "et", "fi", "fr", "gl", "he-rIL", "hi", "hr", "hu", "in-rID", "is", "it", "ja", "ko", "lt", "lv", "nb-rNO", "nl", "oc", "pl", "pt-rBR", "pt-rPT", "ro-rRO", "ru", "sk", "sl", "sr", "sv", "ta", "tr", "uk", "vi", "zh-rCN", "zh-rTW")
|
||||
resourceConfigurations += listOf("ar", "bg", "bn", "bn-rIN", "bs", "cs", "da", "de", "el-rGR", "en", "eo", "es", "es-rAR", "et", "fi", "fr", "gl", "he-rIL", "hi", "hr", "hu", "in-rID", "is", "it", "ja", "ko", "lt", "lv", "nb-rNO", "nl", "oc", "pl", "pt", "pt-rBR", "pt-rPT", "ro-rRO", "ru", "sk", "sl", "sr", "sv", "ta", "tr", "uk", "vi", "zh-rCN", "zh-rTW")
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
@@ -111,14 +111,14 @@ android {
|
||||
dependencies {
|
||||
// AndroidX
|
||||
implementation("androidx.appcompat:appcompat:1.7.0")
|
||||
implementation("androidx.constraintlayout:constraintlayout:2.2.0")
|
||||
implementation("androidx.constraintlayout:constraintlayout:2.2.1")
|
||||
implementation("androidx.core:core-ktx:1.15.0")
|
||||
implementation("androidx.core:core-splashscreen:1.0.1")
|
||||
implementation("androidx.exifinterface:exifinterface:1.3.7")
|
||||
implementation("androidx.exifinterface:exifinterface:1.4.0")
|
||||
implementation("androidx.palette:palette:1.0.0")
|
||||
implementation("androidx.preference:preference:1.2.1")
|
||||
implementation("com.google.android.material:material:1.12.0")
|
||||
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")
|
||||
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")
|
||||
|
||||
// Third-party
|
||||
implementation("com.journeyapps:zxing-android-embedded:4.3.0@aar")
|
||||
|
||||
4
app/src/debug/res/values-fa/strings.xml
Normal file
4
app/src/debug/res/values-fa/strings.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">عیبیابی کاتیما</string>
|
||||
</resources>
|
||||
@@ -1,2 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="app_name">Catimaデバーグ</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,146 +0,0 @@
|
||||
package protect.card_locker;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.Spanned;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import protect.card_locker.databinding.AboutActivityBinding;
|
||||
|
||||
public class AboutActivity extends CatimaAppCompatActivity {
|
||||
|
||||
private static final String TAG = "Catima";
|
||||
|
||||
private AboutActivityBinding binding;
|
||||
private AboutContent content;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
binding = AboutActivityBinding.inflate(getLayoutInflater());
|
||||
content = new AboutContent(this);
|
||||
setTitle(content.getPageTitle());
|
||||
setContentView(binding.getRoot());
|
||||
setSupportActionBar(binding.toolbar);
|
||||
enableToolbarBackButton();
|
||||
|
||||
TextView copyright = binding.creditsSub;
|
||||
copyright.setText(content.getCopyrightShort());
|
||||
TextView versionHistory = binding.versionHistorySub;
|
||||
versionHistory.setText(content.getVersionHistory());
|
||||
|
||||
binding.versionHistory.setTag("https://catima.app/changelog/");
|
||||
binding.translate.setTag("https://hosted.weblate.org/engage/catima/");
|
||||
binding.license.setTag("https://github.com/CatimaLoyalty/Android/blob/main/LICENSE");
|
||||
binding.repo.setTag("https://github.com/CatimaLoyalty/Android/");
|
||||
binding.privacy.setTag("https://catima.app/privacy-policy/");
|
||||
binding.reportError.setTag("https://github.com/CatimaLoyalty/Android/issues");
|
||||
binding.rate.setTag("https://play.google.com/store/apps/details?id=me.hackerchick.catima");
|
||||
binding.donate.setTag("https://catima.app/donate");
|
||||
|
||||
// Hide Google Play rate button if not on Google Play
|
||||
binding.rate.setVisibility(BuildConfig.showRateOnGooglePlay ? View.VISIBLE : View.GONE);
|
||||
// Hide donate button on Google Play (Google Play doesn't allow donation links)
|
||||
binding.donate.setVisibility(BuildConfig.showDonate ? View.VISIBLE : View.GONE);
|
||||
|
||||
bindClickListeners();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
int id = item.getItemId();
|
||||
if (id == android.R.id.home) {
|
||||
finish();
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
content.destroy();
|
||||
clearClickListeners();
|
||||
binding = null;
|
||||
}
|
||||
|
||||
private void bindClickListeners() {
|
||||
binding.versionHistory.setOnClickListener(this::showHistory);
|
||||
binding.translate.setOnClickListener(this::openExternalBrowser);
|
||||
binding.license.setOnClickListener(this::showLicense);
|
||||
binding.repo.setOnClickListener(this::openExternalBrowser);
|
||||
binding.privacy.setOnClickListener(this::showPrivacy);
|
||||
binding.reportError.setOnClickListener(this::openExternalBrowser);
|
||||
binding.rate.setOnClickListener(this::openExternalBrowser);
|
||||
binding.donate.setOnClickListener(this::openExternalBrowser);
|
||||
|
||||
binding.credits.setOnClickListener(view -> showCredits());
|
||||
}
|
||||
|
||||
private void clearClickListeners() {
|
||||
binding.versionHistory.setOnClickListener(null);
|
||||
binding.translate.setOnClickListener(null);
|
||||
binding.license.setOnClickListener(null);
|
||||
binding.repo.setOnClickListener(null);
|
||||
binding.privacy.setOnClickListener(null);
|
||||
binding.reportError.setOnClickListener(null);
|
||||
binding.rate.setOnClickListener(null);
|
||||
binding.donate.setOnClickListener(null);
|
||||
|
||||
binding.credits.setOnClickListener(null);
|
||||
}
|
||||
|
||||
private void showCredits() {
|
||||
showHTML(R.string.credits, content.getContributorInfo(), null);
|
||||
}
|
||||
|
||||
private void showHistory(View view) {
|
||||
showHTML(R.string.version_history, content.getHistoryInfo(), view);
|
||||
}
|
||||
|
||||
private void showLicense(View view) {
|
||||
showHTML(R.string.license, content.getLicenseInfo(), view);
|
||||
}
|
||||
|
||||
private void showPrivacy(View view) {
|
||||
showHTML(R.string.privacy_policy, content.getPrivacyInfo(), view);
|
||||
}
|
||||
|
||||
private void showHTML(@StringRes int title, final Spanned text, @Nullable View view) {
|
||||
int dialogContentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
|
||||
TextView textView = new TextView(this);
|
||||
textView.setText(text);
|
||||
Utils.makeTextViewLinksClickable(textView, text);
|
||||
ScrollView scrollView = new ScrollView(this);
|
||||
scrollView.addView(textView);
|
||||
scrollView.setPadding(dialogContentPadding, dialogContentPadding / 2, dialogContentPadding, 0);
|
||||
|
||||
// Create dialog
|
||||
MaterialAlertDialogBuilder materialAlertDialogBuilder = new MaterialAlertDialogBuilder(this);
|
||||
materialAlertDialogBuilder
|
||||
.setTitle(title)
|
||||
.setView(scrollView)
|
||||
.setPositiveButton(R.string.ok, null);
|
||||
|
||||
// Add View online button if an URL is linked to this view
|
||||
if (view != null && view.getTag() != null) {
|
||||
materialAlertDialogBuilder.setNeutralButton(R.string.view_online, (dialog, which) -> openExternalBrowser(view));
|
||||
}
|
||||
|
||||
// Show dialog
|
||||
materialAlertDialogBuilder.show();
|
||||
}
|
||||
|
||||
private void openExternalBrowser(View view) {
|
||||
Object tag = view.getTag();
|
||||
if (tag instanceof String && ((String) tag).startsWith("https://")) {
|
||||
(new OpenWebLinkHandler()).openBrowser(this, (String) tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
149
app/src/main/java/protect/card_locker/AboutActivity.kt
Normal file
149
app/src/main/java/protect/card_locker/AboutActivity.kt
Normal file
@@ -0,0 +1,149 @@
|
||||
package protect.card_locker
|
||||
|
||||
import android.os.Bundle
|
||||
import android.text.Spanned
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.widget.ScrollView
|
||||
import android.widget.TextView
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.core.view.isVisible
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
||||
import protect.card_locker.databinding.AboutActivityBinding
|
||||
|
||||
class AboutActivity : CatimaAppCompatActivity() {
|
||||
private companion object {
|
||||
private const val TAG = "Catima"
|
||||
}
|
||||
|
||||
private lateinit var binding: AboutActivityBinding
|
||||
private lateinit var content: AboutContent
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = AboutActivityBinding.inflate(layoutInflater)
|
||||
content = AboutContent(this)
|
||||
title = content.pageTitle
|
||||
setContentView(binding.root)
|
||||
setSupportActionBar(binding.toolbar)
|
||||
enableToolbarBackButton()
|
||||
|
||||
binding.apply {
|
||||
creditsSub.text = content.copyrightShort
|
||||
versionHistorySub.text = content.versionHistory
|
||||
|
||||
versionHistory.tag = "https://catima.app/changelog/"
|
||||
translate.tag = "https://hosted.weblate.org/engage/catima/"
|
||||
license.tag = "https://github.com/CatimaLoyalty/Android/blob/main/LICENSE"
|
||||
repo.tag = "https://github.com/CatimaLoyalty/Android/"
|
||||
privacy.tag = "https://catima.app/privacy-policy/"
|
||||
reportError.tag = "https://github.com/CatimaLoyalty/Android/issues"
|
||||
rate.tag = "https://play.google.com/store/apps/details?id=me.hackerchick.catima"
|
||||
donate.tag = "https://catima.app/donate"
|
||||
|
||||
// Hide Google Play rate button if not on Google Play
|
||||
rate.isVisible = BuildConfig.showRateOnGooglePlay
|
||||
// Hide donate button on Google Play (Google Play doesn't allow donation links)
|
||||
donate.isVisible = BuildConfig.showDonate
|
||||
}
|
||||
|
||||
bindClickListeners()
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
return when (item.itemId) {
|
||||
android.R.id.home -> {
|
||||
finish()
|
||||
true
|
||||
}
|
||||
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
content.destroy()
|
||||
clearClickListeners()
|
||||
}
|
||||
|
||||
private fun bindClickListeners() {
|
||||
binding.apply {
|
||||
versionHistory.setOnClickListener { showHistory(it) }
|
||||
translate.setOnClickListener { openExternalBrowser(it) }
|
||||
license.setOnClickListener { showLicense(it) }
|
||||
repo.setOnClickListener { openExternalBrowser(it) }
|
||||
privacy.setOnClickListener { showPrivacy(it) }
|
||||
reportError.setOnClickListener { openExternalBrowser(it) }
|
||||
rate.setOnClickListener { openExternalBrowser(it) }
|
||||
donate.setOnClickListener { openExternalBrowser(it) }
|
||||
credits.setOnClickListener { showCredits() }
|
||||
}
|
||||
}
|
||||
|
||||
private fun clearClickListeners() {
|
||||
binding.apply {
|
||||
versionHistory.setOnClickListener(null)
|
||||
translate.setOnClickListener(null)
|
||||
license.setOnClickListener(null)
|
||||
repo.setOnClickListener(null)
|
||||
privacy.setOnClickListener(null)
|
||||
reportError.setOnClickListener(null)
|
||||
rate.setOnClickListener(null)
|
||||
donate.setOnClickListener(null)
|
||||
credits.setOnClickListener(null)
|
||||
}
|
||||
}
|
||||
|
||||
private fun showCredits() {
|
||||
showHTML(R.string.credits, content.contributorInfo, null)
|
||||
}
|
||||
|
||||
private fun showHistory(view: View) {
|
||||
showHTML(R.string.version_history, content.historyInfo, view)
|
||||
}
|
||||
|
||||
private fun showLicense(view: View) {
|
||||
showHTML(R.string.license, content.licenseInfo, view)
|
||||
}
|
||||
|
||||
private fun showPrivacy(view: View) {
|
||||
showHTML(R.string.privacy_policy, content.privacyInfo, view)
|
||||
}
|
||||
|
||||
private fun showHTML(@StringRes title: Int, text: Spanned, view: View?) {
|
||||
val dialogContentPadding = resources.getDimensionPixelSize(R.dimen.alert_dialog_content_padding)
|
||||
val textView = TextView(this).apply {
|
||||
setText(text)
|
||||
Utils.makeTextViewLinksClickable(this, text)
|
||||
}
|
||||
|
||||
val scrollView = ScrollView(this).apply {
|
||||
addView(textView)
|
||||
setPadding(dialogContentPadding, dialogContentPadding / 2, dialogContentPadding, 0)
|
||||
}
|
||||
|
||||
MaterialAlertDialogBuilder(this).apply {
|
||||
setTitle(title)
|
||||
setView(scrollView)
|
||||
setPositiveButton(R.string.ok, null)
|
||||
|
||||
// Add View online button if an URL is linked to this view
|
||||
view?.tag?.let {
|
||||
setNeutralButton(R.string.view_online) { _, _ -> openExternalBrowser(view) }
|
||||
}
|
||||
|
||||
show()
|
||||
}
|
||||
}
|
||||
|
||||
private fun openExternalBrowser(view: View) {
|
||||
val tag = view.tag
|
||||
if (tag is String && tag.startsWith("https://")) {
|
||||
OpenWebLinkHandler().openBrowser(this, tag)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -45,6 +45,7 @@ public class BarcodeSelectorActivity extends CatimaAppCompatActivity implements
|
||||
binding = BarcodeSelectorActivityBinding.inflate(getLayoutInflater());
|
||||
setTitle(R.string.selectBarcodeTitle);
|
||||
setContentView(binding.getRoot());
|
||||
Utils.applyWindowInsets(binding.getRoot());
|
||||
Toolbar toolbar = binding.toolbar;
|
||||
setSupportActionBar(toolbar);
|
||||
enableToolbarBackButton();
|
||||
|
||||
@@ -36,6 +36,7 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo
|
||||
setResult(RESULT_CANCELED);
|
||||
|
||||
setContentView(binding.getRoot());
|
||||
Utils.applyWindowInsets(binding.getRoot());
|
||||
Toolbar toolbar = binding.toolbar;
|
||||
toolbar.setTitle(R.string.shortcutSelectCard);
|
||||
setSupportActionBar(toolbar);
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
|
||||
import androidx.activity.EdgeToEdge;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
@@ -24,6 +25,7 @@ public class CatimaAppCompatActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
EdgeToEdge.enable(this);
|
||||
super.onCreate(savedInstanceState);
|
||||
Utils.patchColors(this);
|
||||
}
|
||||
|
||||
@@ -60,6 +60,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity {
|
||||
binding = ImportExportActivityBinding.inflate(getLayoutInflater());
|
||||
setTitle(R.string.importExport);
|
||||
setContentView(binding.getRoot());
|
||||
Utils.applyWindowInsets(binding.getRoot());
|
||||
Toolbar toolbar = binding.toolbar;
|
||||
setSupportActionBar(toolbar);
|
||||
enableToolbarBackButton();
|
||||
|
||||
@@ -297,6 +297,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
super.onCreate(savedInstanceState);
|
||||
binding = LoyaltyCardEditActivityBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
Utils.applyWindowInsets(binding.getRoot());
|
||||
|
||||
viewModel = new ViewModelProvider(this).get(LoyaltyCardEditActivityViewModel.class);
|
||||
|
||||
|
||||
@@ -248,6 +248,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
super.onCreate(savedInstanceState);
|
||||
binding = LoyaltyCardViewLayoutBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
Utils.applyWindowInsets(binding.getRoot());
|
||||
Toolbar toolbar = binding.toolbar;
|
||||
setSupportActionBar(toolbar);
|
||||
|
||||
|
||||
@@ -229,6 +229,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
|
||||
binding = MainActivityBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
Utils.applyWindowInsets(binding.getRoot());
|
||||
setSupportActionBar(binding.toolbar);
|
||||
groupsTabLayout = binding.groups;
|
||||
contentMainBinding = ContentMainBinding.bind(binding.include.getRoot());
|
||||
|
||||
@@ -48,6 +48,7 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana
|
||||
super.onCreate(inputSavedInstanceState);
|
||||
binding = ActivityManageGroupBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
Utils.applyWindowInsets(binding.getRoot());
|
||||
Toolbar toolbar = binding.toolbar;
|
||||
setSupportActionBar(toolbar);
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ public class ManageGroupsActivity extends CatimaAppCompatActivity implements Gro
|
||||
binding = ManageGroupsActivityBinding.inflate(getLayoutInflater());
|
||||
setTitle(R.string.groups);
|
||||
setContentView(binding.getRoot());
|
||||
Utils.applyWindowInsets(binding.getRoot());
|
||||
Toolbar toolbar = binding.toolbar;
|
||||
setSupportActionBar(toolbar);
|
||||
enableToolbarBackButton();
|
||||
|
||||
@@ -296,30 +296,22 @@ class PkpassParser(context: Context, uri: Uri?) {
|
||||
}
|
||||
|
||||
// Append type-specific info to the pass
|
||||
noteText.append("\n\n")
|
||||
|
||||
// Find the relevant pass type and parse it
|
||||
var hasPassData = false
|
||||
for (passType in listOf("boardingPass", "coupon", "eventTicket", "generic")) {
|
||||
try {
|
||||
noteText.append(
|
||||
parsePassJSONPassFields(
|
||||
jsonObject.getJSONObject(passType),
|
||||
locale
|
||||
)
|
||||
var extraText = parsePassJSONPassFields(
|
||||
jsonObject.getJSONObject(passType),
|
||||
locale
|
||||
)
|
||||
|
||||
hasPassData = true
|
||||
noteText.append("\n\n")
|
||||
noteText.append(extraText)
|
||||
|
||||
break
|
||||
} catch (ignored: JSONException) {}
|
||||
}
|
||||
|
||||
// Failed to parse anything, error out
|
||||
if (!hasPassData) {
|
||||
throw FormatException(mContext.getString(R.string.errorReadingFile))
|
||||
}
|
||||
|
||||
note = noteText.toString()
|
||||
}
|
||||
|
||||
|
||||
@@ -100,6 +100,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
|
||||
customBarcodeScannerBinding = CustomBarcodeScannerBinding.bind(binding.zxingBarcodeScanner);
|
||||
setTitle(R.string.scanCardBarcode);
|
||||
setContentView(binding.getRoot());
|
||||
Utils.applyWindowInsets(binding.getRoot());
|
||||
Toolbar toolbar = binding.toolbar;
|
||||
setSupportActionBar(toolbar);
|
||||
enableToolbarBackButton();
|
||||
|
||||
@@ -24,6 +24,13 @@ import com.yalantis.ucrop.UCropActivity;
|
||||
public class UCropWrapper extends UCropActivity {
|
||||
public static final String UCROP_TOOLBAR_TYPEFACE_STYLE = "ucop_toolbar_typeface_style";
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
Utils.applyWindowInsets(findViewById(android.R.id.content));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onPostCreate(savedInstanceState);
|
||||
|
||||
@@ -27,6 +27,7 @@ import android.util.Log;
|
||||
import android.util.TypedValue;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
@@ -38,7 +39,10 @@ import androidx.annotation.RawRes;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.os.LocaleListCompat;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.core.view.WindowInsetsControllerCompat;
|
||||
import androidx.core.widget.TextViewCompat;
|
||||
import androidx.exifinterface.media.ExifInterface;
|
||||
@@ -194,12 +198,25 @@ public class Utils {
|
||||
|
||||
List<String> locales = pkpassParser.listLocales();
|
||||
if (locales.isEmpty()) {
|
||||
return Collections.singletonList(new ParseResult(ParseResultType.FULL, pkpassParser.toLoyaltyCard(null)));
|
||||
try {
|
||||
return Collections.singletonList(new ParseResult(ParseResultType.FULL, pkpassParser.toLoyaltyCard(null)));
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Error calling toLoyaltyCard on pkpass file", e);
|
||||
Toast.makeText(context, R.string.errorReadingFile, Toast.LENGTH_LONG).show();
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
List<ParseResult> parseResultList = new ArrayList<>();
|
||||
for (String locale : locales) {
|
||||
ParseResult parseResult = new ParseResult(ParseResultType.FULL, pkpassParser.toLoyaltyCard(locale));
|
||||
ParseResult parseResult;
|
||||
try {
|
||||
parseResult = new ParseResult(ParseResultType.FULL, pkpassParser.toLoyaltyCard(locale));
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Error calling toLoyaltyCard on pkpass file", e);
|
||||
Toast.makeText(context, R.string.errorReadingFile, Toast.LENGTH_LONG).show();
|
||||
return new ArrayList<>();
|
||||
}
|
||||
parseResult.setNote(locale);
|
||||
parseResultList.add(parseResult);
|
||||
}
|
||||
@@ -1093,4 +1110,20 @@ public class Utils {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static void applyWindowInsets(View root) {
|
||||
/* This function basically fakes the activity being edge-to-edge. Useful for those activities that are really hard to get to behave well */
|
||||
ViewCompat.setOnApplyWindowInsetsListener(root, (view, windowInsets) -> {
|
||||
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars());
|
||||
|
||||
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
|
||||
layoutParams.leftMargin = insets.left;
|
||||
layoutParams.bottomMargin = insets.bottom;
|
||||
layoutParams.rightMargin = insets.right;
|
||||
layoutParams.topMargin = insets.top;
|
||||
view.setLayoutParams(layoutParams);
|
||||
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ public class SettingsActivity extends CatimaAppCompatActivity {
|
||||
binding = SettingsActivityBinding.inflate(getLayoutInflater());
|
||||
setTitle(R.string.settings);
|
||||
setContentView(binding.getRoot());
|
||||
Utils.applyWindowInsets(binding.getRoot());
|
||||
Toolbar toolbar = binding.toolbar;
|
||||
setSupportActionBar(toolbar);
|
||||
enableToolbarBackButton();
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
tools:context="protect.card_locker.MainActivity"
|
||||
tools:context="protect.card_locker.ManageGroupActivity"
|
||||
tools:showIn="@layout/main_activity">
|
||||
|
||||
<TextView
|
||||
|
||||
@@ -15,66 +15,67 @@ IllusiveMan196
|
||||
Altonss
|
||||
Michael Moroni
|
||||
Eric
|
||||
GM
|
||||
Petr Novák
|
||||
laralem
|
||||
Joel A
|
||||
B o d o
|
||||
Taco
|
||||
GM
|
||||
laralem
|
||||
Petr Novák
|
||||
Joel A
|
||||
Priit Jõerüüt
|
||||
Taco
|
||||
pfaffenrodt
|
||||
Aayush Gupta
|
||||
Scrambled777
|
||||
Максим Горпиніч
|
||||
ikanakova
|
||||
Giovanni Donisi
|
||||
HudobniVolk
|
||||
Nyatsuki
|
||||
Jiri Grönroos
|
||||
Giovanni Donisi
|
||||
Edgars Andersons
|
||||
Jiri Grönroos
|
||||
Nyatsuki
|
||||
Silvério Santos
|
||||
Balázs Meskó
|
||||
Milo Ivir
|
||||
Samantaz Fox
|
||||
Balázs Meskó
|
||||
Arno-github
|
||||
josé m
|
||||
Ankit Tiwari
|
||||
Cliff Heraldo
|
||||
Sergio Paredes
|
||||
Ankit Tiwari
|
||||
josé m
|
||||
Arno-github
|
||||
Jose Delvani
|
||||
mdvhimself
|
||||
Milan Šalka
|
||||
huuhaa
|
||||
Skrripy
|
||||
Kachelkaiser
|
||||
Projjal Moitra
|
||||
Quentin PAGÈS
|
||||
ngocanhtve
|
||||
Silvério Santos
|
||||
Skrripy
|
||||
huuhaa
|
||||
waffshappen
|
||||
Marnick L'Eau
|
||||
Maksim2005UA
|
||||
ngocanhtve
|
||||
Quentin PAGÈS
|
||||
Projjal Moitra
|
||||
Robin
|
||||
JungHee Lee
|
||||
Maksim2005UA
|
||||
தமிழ் நேரம்
|
||||
Ziad OUALHADJ
|
||||
Vasilis
|
||||
Denis Shilin
|
||||
Robin Liu
|
||||
Renko
|
||||
Denis Shilin
|
||||
しいたけ
|
||||
Alexander Ivanov
|
||||
Miha Frangež
|
||||
Viet Nguyen Hoang
|
||||
தமிழ் நேரம்
|
||||
stavpup
|
||||
ehrt74
|
||||
Virginie
|
||||
Tim Trek
|
||||
Peter Dave Hello
|
||||
Michael Gangolf
|
||||
rudy3
|
||||
Kim Seohyun
|
||||
Govind S Nair
|
||||
Freddo espresso
|
||||
Augustin LAVILLE
|
||||
arshbeerSingh
|
||||
MisterCosta96
|
||||
arshbeerSingh
|
||||
Augustin LAVILLE
|
||||
Freddo espresso
|
||||
Govind S Nair
|
||||
Kim Seohyun
|
||||
rudy3
|
||||
Ricky Tigg
|
||||
Michael Gangolf
|
||||
Peter Dave Hello
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<string name="settings_portrait_orientation">الوضع الرأسي</string>
|
||||
<string name="settings_landscape_orientation">الوضع الأفقي</string>
|
||||
<string name="settings_theme">مظهر</string>
|
||||
<string name="settings_display_barcode_max_brightness">عرض مشرق علي الشاشة</string>
|
||||
<string name="settings_display_barcode_max_brightness">شاشة ساطعة</string>
|
||||
<string name="importSuccessful">تم استيراد البيانات</string>
|
||||
<string name="exportSuccessful">تم تصدير البيانات</string>
|
||||
<string name="enter_group_name">أدخل اسم المجموعة</string>
|
||||
@@ -298,7 +298,7 @@
|
||||
<string name="enter_card_id">أدخل رقم الهوية أو النص الموجود على بطاقتك</string>
|
||||
<string name="addWithoutBarcode">إضافة بدون باركود</string>
|
||||
<string name="field_must_not_be_empty">يجب ألا يكون الحقل فارغا</string>
|
||||
<string name="app_name">Catima</string>
|
||||
<string name="app_name">كاتيما</string>
|
||||
<string name="settings_follow_sensor_orientation">التدوير دائمًا ( تجاهل إعدادات النظام)</string>
|
||||
<string name="add_manually_warning_title">الفحص موصى به</string>
|
||||
<string name="continue_">استمر</string>
|
||||
@@ -332,4 +332,5 @@
|
||||
<string name="settings_column_count_5">٥</string>
|
||||
<string name="settings_column_count_6">٦</string>
|
||||
<string name="settings_column_count_7">٧</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">صالح من</string>
|
||||
</resources>
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
<string name="importCancelled">Import zrušen</string>
|
||||
<string name="exportCancelled">Export zrušen</string>
|
||||
<string name="useBackImage">Použijte předchozí obrázek</string>
|
||||
<string name="useFrontImage">Použijte přední obrázek</string>
|
||||
<string name="useFrontImage">Použít přední obrázek</string>
|
||||
<string name="settings_use_volume_keys_navigation_summary">Pomocí tlačítek hlasitosti můžete změnit, která karta se zobrazí</string>
|
||||
<string name="settings_use_volume_keys_navigation">Přepínat karty pomocí tlačítek hlasitosti</string>
|
||||
<string name="generic_error_please_retry">Je nám líto, něco se pokazilo, zkuste to prosím znovu...</string>
|
||||
|
||||
@@ -199,7 +199,7 @@
|
||||
<string name="setFrontImage">Halda esikülje pilti</string>
|
||||
<string name="setBackImage">Halda tagakülje pilti</string>
|
||||
<string name="removeImage">Eemalda pilt</string>
|
||||
<string name="takePhoto">Tee foto</string>
|
||||
<string name="takePhoto">Pildista</string>
|
||||
<string name="updateBarcodeQuestionText">Sa muutsid ID väärtust? Kas sa soovid ka triipkoodiväärtuse vastavalt uuendada?</string>
|
||||
<string name="exportPassword">Sinu eksporditavate andmete turvamiseks palun sisesta salasõna (kui soovid seda)</string>
|
||||
<string name="exportPasswordHint">Sisesta salasõna</string>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="app_name">کاتیما</string>
|
||||
<string name="action_search">جستجو</string>
|
||||
<string name="action_add">افزودن</string>
|
||||
@@ -41,7 +41,7 @@
|
||||
<string name="importFailed">نمیتوان ایمپورت کرد</string>
|
||||
<string name="exportSuccessfulTitle">خروجی گرفته شده</string>
|
||||
<string name="exportFailedTitle">خروجی گرفتن ناموفق بود</string>
|
||||
<string name="storageReadPermissionRequired">دسترسی به خواندن محل ذخیره برای این کار نیاز است…</string>
|
||||
<string name="storageReadPermissionRequired">برای این اقدام دسترسی به حافظه مورد نیاز است…</string>
|
||||
<string name="exportOptionExplanation">داده در محلی که شما انتخاب میکنید نوشته خواهد شد.</string>
|
||||
<string name="receive">دریافت</string>
|
||||
<string name="continue_">ادامه</string>
|
||||
@@ -72,4 +72,112 @@
|
||||
<string name="settings_category_title_privacy">حریم شخصی</string>
|
||||
<string name="settings_category_title_general">عمومی</string>
|
||||
<string name="settings_category_title_cards">کارتها</string>
|
||||
</resources>
|
||||
<string name="barcodeImageDescriptionWithType">تصویر بارکد <xliff:g>%s</xliff:g></string>
|
||||
<string name="importOptionFilesystemButton">از فایل های سیستم</string>
|
||||
<string name="importOptionApplicationTitle">استفاده از یک برنامه دیگر</string>
|
||||
<string name="importOptionApplicationButton">استفاده از یک برنامه دیگر</string>
|
||||
<string name="about">درباره</string>
|
||||
<string name="importOptionApplicationExplanation">از هر برنامه یا مدیر فایل دلخواه خود برای باز کردن یک فایل استفاده کنید.</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">حق تکثیر © 2019–<xliff:g>%d</xliff:g> سیلویا وَن اُس و مشارکت کنندگان</string>
|
||||
<string name="app_copyright_short">حق نشر © سیلویا وَن اُس و مشارکت کنندگان</string>
|
||||
<string name="failedParsingImportUriError">تجزیه URI ورودی ناموفق بود</string>
|
||||
<string name="importOptionFilesystemExplanation">یک فایل مشخص از فایلهای سیستم انتخاب کنید.</string>
|
||||
<string name="importOptionFilesystemTitle">ورود از فایل سیستم</string>
|
||||
<plurals name="selectedCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> انتخاب شد</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> انتخاب شد</item>
|
||||
</plurals>
|
||||
<string name="selectBarcodeTitle">انتخاب بارکد</string>
|
||||
<string name="starImage">ستاره موردعلاقه</string>
|
||||
<string name="settings">تنظیمات</string>
|
||||
<string name="settings_theme">تم</string>
|
||||
<string name="settings_system_theme">سیستم</string>
|
||||
<string name="settings_dark_theme">تیره</string>
|
||||
<string name="settings_card_orientation">جهت صفحه نمایش</string>
|
||||
<string name="settings_follow_sensor_orientation">همیشه قابل چرخش باشد (بدون در نظر گرفتن تنظیمات سیستم)</string>
|
||||
<string name="settings_portrait_orientation">عمودی</string>
|
||||
<string name="settings_keep_screen_on">روشن نگه داشتن صفحه نمایش</string>
|
||||
<string name="settings_keep_screen_on_summary">غیرفعال سازی مهلت صفحه نمایش هنگام مشاهده کارت</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">جلوگیری از قفل شدن صفحه</string>
|
||||
<string name="settings_allow_content_provider_read_title">اجازه به برنامه های دیگر برای دسترسی به داده های من</string>
|
||||
<string name="settings_allow_content_provider_read_summary">برنامه ها باید برای گرفتن مجوز درخواست کنند</string>
|
||||
<string name="importSuccessful">داده وارد شد</string>
|
||||
<string name="thumbnailDescription">تصویر کوچک</string>
|
||||
<string name="settings_landscape_orientation">افقی</string>
|
||||
<string name="settings_light_theme">روشن</string>
|
||||
<string name="settings_display_barcode_max_brightness_summary">برای کارکرد برخی اسکنر ها ضروری است</string>
|
||||
<string name="settings_display_barcode_max_brightness">روشنایی صفحه</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card_summary">جلوگیری از قفل شدن صفحه هنگام مشاهده کارت</string>
|
||||
<string name="settings_follow_system_orientation">پیروی از سیستم</string>
|
||||
<string name="intent_import_card_from_url_share_text">میخواهم یک کارت را با تو به اشتراک بگذارم</string>
|
||||
<string name="settings_use_volume_keys_navigation">جابجایی میان کارت ها با استفاده از کلید های صدا</string>
|
||||
<string name="settings_use_volume_keys_navigation_summary">از کلید های صدا برای تغیر کارت نمایشی استفاده کنید</string>
|
||||
<string name="about_title_fmt">درباره <xliff:g id="app_name">%s</xliff:g></string>
|
||||
<string name="debug_version_fmt">نسخه <xliff:g id="version">%s</xliff:g></string>
|
||||
<string name="chooseExpiryDate">انتخاب تاریخ انقضاء</string>
|
||||
<string name="app_libraries">کتابخانه های شخص ثالث: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="app_copyright_old">بر اساس کارت وفاداری Keychain\nکپی رایت © 2016-2020 سازنده : Branden</string>
|
||||
<string name="app_license">نرمافزار آزاد با حقوق کپیلفت، تحت مجوز GPLv3+</string>
|
||||
<string name="groups">گروهها</string>
|
||||
<string name="noGroupCards">این گروه خالی است</string>
|
||||
<string name="noGroups">روی دکمه + اضافه کلیک کنید تا گروههایی برای دستهبندی اضافه کنید.</string>
|
||||
<string name="editGroup">ویرایش گروه: <xliff:g>%s</xliff:g></string>
|
||||
<string name="importCatimaMessage">فایل <i>catima.zip</i> خروجی خود را از Catima برای وارد کردن انتخاب کنید.\nآن را از منوی وارد/صادر کردن در یک اپلیکیشن دیگر Catima با فشردن دکمه صادرکردن ابتدا ایجاد کنید.</string>
|
||||
<string name="importStocard">واردات از Stocard</string>
|
||||
<string name="unsupportedBarcodeType">این نوع بارکد هنوز نمیتواند نمایش داده شود. ممکن است در نسخه آینده برنامه پشتیبانی شود.</string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> امتیاز</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> امتیاز</item>
|
||||
</plurals>
|
||||
<string name="importFidmeMessage">فایل خروجی <i>fidme-export-request-xxxxxx.zip</i> خود را از FidMe برای وارد کردن انتخاب کنید، و سپس نوع بارکدها را به صورت دستی مشخص کنید.\nآن را از پروفایل FidMe خود با انتخاب گزینه حفاظت از داده و سپس فشار دادن گزینه استخراج داده من ابتدا ایجاد کنید.</string>
|
||||
<string name="leaveWithoutSaveTitle">خروج</string>
|
||||
<string name="balanceSentence">موجودی: <xliff:g>%s</xliff:g></string>
|
||||
<string name="sameAsCardId">همانند شناسه</string>
|
||||
<string name="setBarcodeId">تنظیم مقدار بارکد</string>
|
||||
<string name="exportSuccessful">دادهها صادر شدند</string>
|
||||
<string name="enter_group_name">نام گروه را وارد کنید</string>
|
||||
<string name="importLoyaltyCardKeychain">وارد کردن از جاکلیدی کارت وفاداری</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">فایل خروجی <i>LoyaltyCardKeychain.csv</i> خود را از جاسوئیچی کارت وفاداری برای وارد کردن انتخاب کنید.\nآن را از منوی وارد/صادرکردن در جاسوئیچی کارت وفاداری با فشردن دکمه صادرکردن ابتدا ایجاد کنید.</string>
|
||||
<string name="app_resources">منابع آزاد از طرف شخص ثالث: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="settings_lock_on_opening_orientation">قفل به جهت استفاده شده در هنگام بازکردن کارت</string>
|
||||
<plurals name="groupCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> کارت</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> کارت</item>
|
||||
</plurals>
|
||||
<string name="group_name_already_in_use">نام گروه قبلاً استفاده شده</string>
|
||||
<string name="group_name_is_empty">نام گروه نباید خالی باشد</string>
|
||||
<string name="group_updated">گروه به روز شد</string>
|
||||
<string name="all">همه</string>
|
||||
<string name="deleteConfirmationGroup">حذف گروه؟</string>
|
||||
<string name="failedOpeningFileManager">ابتدا یک مدیریت فایل نصب کنید.</string>
|
||||
<string name="moveUp">به بالا حرکت کن</string>
|
||||
<string name="moveDown">به پایین حرکت کن</string>
|
||||
<string name="leaveWithoutSaveConfirmation">بدون ذخیره ترک میکنید؟</string>
|
||||
<string name="addManually">بارکد را دستی وارد کنید</string>
|
||||
<string name="addFromImage">یک تصویر از گالری انتخاب کنید</string>
|
||||
<string name="groupsList">گروهها: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">تاریخ انقضاء: <xliff:g>%s</xliff:g></string>
|
||||
<string name="card">کارت</string>
|
||||
<string name="editBarcode">ویرایش بارکد</string>
|
||||
<string name="expiryDate">تاریخ انقضا</string>
|
||||
<string name="never">هرگز</string>
|
||||
<string name="moveBarcodeToTopOfScreen">بارکد را به بالای صفحه منتقل کنید</string>
|
||||
<string name="noBarcodeFound">بارکدی پیدا نشد</string>
|
||||
<string name="errorReadingImage">نمی توان تصویر را خواند</string>
|
||||
<string name="balance">موجودی</string>
|
||||
<string name="currency">ارز</string>
|
||||
<string name="points">امتیازها</string>
|
||||
<string name="balanceParsingFailed">موجودی نامعتبر</string>
|
||||
<string name="chooseImportType">وارد کردن داده ها از</string>
|
||||
<string name="app_loyalty_card_keychain">جاکلیدی کارت وفاداری</string>
|
||||
<string name="privacy_policy">خط مشی رازداری</string>
|
||||
<string name="accept">قبول</string>
|
||||
<string name="importCatima">واردات از کاتیما</string>
|
||||
<string name="importFidme">واردات از FidMe</string>
|
||||
<string name="importStocardMessage">فایل خروجی <i>***.zip</i> خود را از Stocard برای وارد کردن انتخاب کنید.\nاین فایل را با ارسال ایمیل به آدرس support@stocardapp.com و درخواست خروجی دادههای خود دریافت کنید.</string>
|
||||
<string name="importVoucherVault">واردات از صندوق کوپن</string>
|
||||
<string name="importVoucherVaultMessage">فایل خروجی <i>vouchervault.json</i> خود را از صندوق کوپن برای وارد کردن انتخاب کنید.\nآن را ابتدا با فشردن دکمه صادرکردن در صندوق کوپن ایجاد کنید.</string>
|
||||
<string name="barcodeId">مقدار بارکد</string>
|
||||
<string name="group_edit">ویرایش گروه</string>
|
||||
<string name="expiryStateSentenceExpired">منقضی شده: <xliff:g>%s</xliff:g></string>
|
||||
</resources>
|
||||
|
||||
@@ -308,4 +308,5 @@
|
||||
<string name="addFromPkpass">Valitse Passbook-tiedosto (.pkpass)</string>
|
||||
<string name="unsupportedFile">Tämä tiedosto ei ole tuettu</string>
|
||||
<string name="generic_error_please_retry">Pahoittelut, jokin meni pieleen. Yritä uudelleen...</string>
|
||||
<string name="sort_by_valid_from">Voimassa alkaen</string>
|
||||
</resources>
|
||||
|
||||
@@ -308,4 +308,5 @@
|
||||
<string name="generic_error_please_retry">Sajnálom, valami rosszul ment, próbálkozz újra...</string>
|
||||
<string name="settings_column_count_4">4</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Érvényesség kezdete</string>
|
||||
</resources>
|
||||
|
||||
@@ -302,4 +302,5 @@
|
||||
<string name="addFromPkpass">Pilih file Buku Tabungan (.pkpass)</string>
|
||||
<string name="unsupportedFile">File ini tidak didukung</string>
|
||||
<string name="generic_error_please_retry">Maaf, terjadi kesalahan, silakan coba lagi...</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Berlaku dari</string>
|
||||
</resources>
|
||||
|
||||
@@ -314,4 +314,5 @@
|
||||
<string name="unsupportedFile">Questo file non è supportato</string>
|
||||
<string name="generic_error_please_retry">Siamo spiacenti, qualcosa è andato storto, riprova...</string>
|
||||
<string name="addFromPkpass">Seleziona un file Passbook (.pkpass)</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Valido da</string>
|
||||
</resources>
|
||||
|
||||
@@ -230,4 +230,16 @@
|
||||
<string name="settings_oled_dark_summary">有機ELディスプレイでの電池の使用量を削減します</string>
|
||||
<string name="action_more_options">オプション</string>
|
||||
<string name="add_a_card_in_a_different_way">別の方法でカードを追加</string>
|
||||
</resources>
|
||||
<string name="continue_">続</string>
|
||||
<string name="permissionReadCardsLabel">Catimaのカードを読む</string>
|
||||
<string name="settings_column_count_6">6</string>
|
||||
<string name="settings_column_count_3">3</string>
|
||||
<string name="settings_column_count_5">5</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<string name="importCancelled">輸入がキャンセルされた</string>
|
||||
<string name="settings_column_count_1">1</string>
|
||||
<string name="settings_column_count_2">2</string>
|
||||
<string name="settings_column_count_4">4</string>
|
||||
<string name="settings_category_title_privacy">プライバシー</string>
|
||||
<string name="exportCancelled">輸出がキャンセルされた</string>
|
||||
</resources>
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
<string name="importLoyaltyCardKeychain">Importuoti iš Loyalty Card Keychain</string>
|
||||
<string name="app_loyalty_card_keychain">Lojalumo kortelės</string>
|
||||
<string name="moveBarcodeToTopOfScreen">Perkelti brūkšninį kodą į ekrano viršų</string>
|
||||
<string name="settings_display_barcode_max_brightness">Šviesinti brūkšninio kodo rodinį</string>
|
||||
<string name="settings_display_barcode_max_brightness">Šviesinti ekraną</string>
|
||||
<string name="failedParsingImportUriError">Nepavyko iššifruoti importo URI</string>
|
||||
<string name="turn_flashlight_off">Išjunkti žibintuvėlį</string>
|
||||
<string name="turn_flashlight_on">Įjunkti žibintuvėlį</string>
|
||||
@@ -196,7 +196,7 @@
|
||||
<string name="noGiftCardsGroup">Sukurkite keletą kortelių ir priskirkite jas grupei čia.</string>
|
||||
<string name="setIcon">Nustatyti piktogramą</string>
|
||||
<string name="selectColor">Pasirinkti spalvą</string>
|
||||
<string name="settings_card_orientation">Brūkšninio kodo orientacija</string>
|
||||
<string name="settings_card_orientation">Ekrano orientacija</string>
|
||||
<string name="failedLaunchingPhotoPicker">Nepavyko rasti palaikomos galerijos programėlės</string>
|
||||
<string name="previousCard">Ankstesnė</string>
|
||||
<string name="nextCard">Kita</string>
|
||||
@@ -264,7 +264,7 @@
|
||||
<string name="enter_card_id">Įveskite ID numerį arba tekstą ant jūsų kortelės</string>
|
||||
<string name="noCameraFoundGuideText">Atrodo, kad jūsų įrenginys neturi kameros. Jei jis turi kamerą, pabandykite perkrauti įrenginį. Naudokite žemiau esantį „Daugiau galimybių“ mygtuką, kad pridėtumėte brūkšninį kodą kitu būdu.</string>
|
||||
<string name="settings_display_barcode_max_brightness_summary">Būtina, kad veiktų kai kurie skeneriai</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card_summary">Išjungti ekrano užraktą kol peržiūrite kortelę</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card_summary">Išjungia ekrano užraktą kol peržiūrite kortelę</string>
|
||||
<string name="settings_allow_content_provider_read_title">Leisti kitoms programoms išrinkti mano informaciją</string>
|
||||
<string name="settings_allow_content_provider_read_summary">Programos vis tiek turės prašyti leidimo, kad gautu informaciją</string>
|
||||
<string name="show_name_below_image_thumbnail">Rodyti pavadinimą po piktogramą</string>
|
||||
@@ -273,7 +273,7 @@
|
||||
<string name="continue_">Tęsti</string>
|
||||
<string name="add_manually_warning_message">Kai kuriuose parduotuvėse brūkšninio kodo vertė gali skirtis nuo kortelėje nurodyto numerio. Dėlto įvedus brūkšninį kodą rankiniu būdu gali nepavykti. Vietoj to, labai rekomenduojama nuskaityti brūkšninį kodą naudojant kamerą. Ar vis tiek norite tęsti?</string>
|
||||
<string name="permissionReadCardsLabel">Skenuoti Catima Korteles</string>
|
||||
<string name="settings_category_title_cards">Kortelės</string>
|
||||
<string name="settings_category_title_cards">Kortelių peržiūra</string>
|
||||
<string name="settings_category_title_general">Bendri</string>
|
||||
<string name="settings_category_title_privacy">Privatumąi</string>
|
||||
<string name="importCancelled">Importas atšauktas</string>
|
||||
@@ -298,4 +298,7 @@
|
||||
<string name="app_copyright_short">Autorių teisės © Sylvia van Os ir Pagalbininkai</string>
|
||||
<string name="useFrontImage">Naudoti priekinį vaizdą</string>
|
||||
<string name="useBackImage">Naudoti galinį vaizdą</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Teisinga forma</string>
|
||||
<string name="settings_use_volume_keys_navigation">Keisti korteles su garso mygtukais</string>
|
||||
<string name="settings_use_volume_keys_navigation_summary">Naudokite garso mygtukus kortelių pakeitimui</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
<string name="thumbnailDescription">Sīktēls</string>
|
||||
<string name="starImage">Izlases zvaigzne</string>
|
||||
<string name="settings">Iestatījumi</string>
|
||||
<string name="settings_theme">Tēma</string>
|
||||
<string name="settings_theme">Izskats</string>
|
||||
<string name="settings_system_theme">Sistēmas</string>
|
||||
<string name="settings_light_theme">Gaiša</string>
|
||||
<string name="settings_dark_theme">Tumša</string>
|
||||
@@ -161,10 +161,10 @@
|
||||
<string name="app_libraries">Brīvas trešo pušu programmatūras bibliotēkas: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="app_resources">Brīvi trešo pušu resursi: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="settings_card_orientation">Ekrāna novietojums</string>
|
||||
<string name="settings_follow_system_orientation">Pēc sistēmas</string>
|
||||
<string name="settings_portrait_orientation">Portreta</string>
|
||||
<string name="settings_landscape_orientation">Ainavas</string>
|
||||
<string name="settings_lock_on_opening_orientation">Ievērot to orientāciju, kādā karte atvērta</string>
|
||||
<string name="settings_follow_system_orientation">Izmantot sistēmas</string>
|
||||
<string name="settings_portrait_orientation">Stateniski</string>
|
||||
<string name="settings_landscape_orientation">Līmeniski</string>
|
||||
<string name="settings_lock_on_opening_orientation">Izmantot novietojumu, kāds bija kartes atvēršanas brīdī</string>
|
||||
<string name="enter_group_name">Ievadīt kopas nosaukumu</string>
|
||||
<string name="groups">Kopas</string>
|
||||
<string name="group_edit">Labot kopu</string>
|
||||
@@ -197,11 +197,11 @@
|
||||
<string name="setBackImage">Iestatīt aizmugures attēlu</string>
|
||||
<string name="takePhoto">Fotografēt</string>
|
||||
<string name="passwordRequired">Lūgums ievadīt paroli</string>
|
||||
<string name="exportPassword">Iestatīt paroli, lai aizsargātu savu izguves datni (izvēles)</string>
|
||||
<string name="exportPassword">Iestatīt paroli, lai aizsargātu savu izguves datni (pēc izvēles)</string>
|
||||
<string name="turn_flashlight_on">Ieslēgt zibspuldzi</string>
|
||||
<string name="settings_oled_dark">Tīri melns fons tumšajai tēmai</string>
|
||||
<string name="settings_oled_dark">Tīri melns fons tumšajam izskatam</string>
|
||||
<string name="setIcon">Iestatīt sīktēlu</string>
|
||||
<string name="settings_theme_color">Tēmas krāsa</string>
|
||||
<string name="settings_theme_color">Izskata krāsa</string>
|
||||
<string name="settings_violet_theme">Violeta</string>
|
||||
<string name="settings_blue_theme">Zila</string>
|
||||
<string name="sort">Kārtot</string>
|
||||
@@ -305,7 +305,7 @@
|
||||
<string name="settings_column_count_5">5</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<string name="settings_column_count_portrait">Kolonnas stateniskā novietojumā</string>
|
||||
<string name="settings_column_count_landscape">Kolonnas guleniskā novietojumā</string>
|
||||
<string name="settings_column_count_landscape">Kolonnas līmeniskā novietojumā</string>
|
||||
<string name="unsupportedFile">Šī datne netiek atbalstīta</string>
|
||||
<string name="addFromPkpass">Atlasīt Passbook datni (.pkpass)</string>
|
||||
<string name="generic_error_please_retry">Atvainojamies, kaut kas nogāja greizi. Lūgums mēģināt vēlreiz...</string>
|
||||
|
||||
@@ -308,4 +308,5 @@
|
||||
<string name="addFromPkpass">Velg en Passbook-fil (.pkpass)</string>
|
||||
<string name="unsupportedFile">Denne filen støttes ikke</string>
|
||||
<string name="generic_error_please_retry">Beklager, men noe gikk galt. Prøv igjen…</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Gyldig fra</string>
|
||||
</resources>
|
||||
|
||||
@@ -314,4 +314,5 @@
|
||||
<string name="addFromPkpass">Selecionar um ficheiro Passbook (.pkpass)</string>
|
||||
<string name="unsupportedFile">Este ficheiro não é suportado</string>
|
||||
<string name="generic_error_please_retry">Lamento, ocorreu um erro, tente novamente...</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Válido a partir de</string>
|
||||
</resources>
|
||||
|
||||
312
app/src/main/res/values-pt/strings.xml
Normal file
312
app/src/main/res/values-pt/strings.xml
Normal file
@@ -0,0 +1,312 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="action_search">Pesquisa</string>
|
||||
<string name="action_add">Adicionar</string>
|
||||
<plurals name="selectedCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> selecionado</item>
|
||||
<item quantity="many"><xliff:g>%d</xliff:g> selecionado</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> selecionados</item>
|
||||
</plurals>
|
||||
<string name="noGiftCards">Clique no botão + para adicionar um cartão ou importe-o no menu ⋮.</string>
|
||||
<string name="noGiftCardsGroup">Crie alguns cartões e atribua-os depois ao grupo aqui.</string>
|
||||
<string name="noMatchingGiftCards">Sem resultados. Tente alterar a sua pesquisa.</string>
|
||||
<string name="app_name">Catima</string>
|
||||
<string name="addCardTitle">Adicionar cartão</string>
|
||||
<string name="noCardExistsError">Não foi possível encontrar esse cartão</string>
|
||||
<string name="importFailed">Não foi possível importar</string>
|
||||
<string name="exportSuccessfulTitle">Exportado</string>
|
||||
<string name="exportFailedTitle">A exportação falhou</string>
|
||||
<string name="exportFailed">Não foi possível exportar</string>
|
||||
<string name="cameraPermissionDeniedTitle">Não foi possível aceder à câmara</string>
|
||||
<string name="importOptionFilesystemButton">Do sistema de ficheiros</string>
|
||||
<string name="about">Sobre</string>
|
||||
<string name="settings_portrait_orientation">Retrato</string>
|
||||
<string name="settings_display_barcode_max_brightness">Iluminar o ecrã</string>
|
||||
<string name="settings_display_barcode_max_brightness_summary">Necessário para alguns scanners funcionarem</string>
|
||||
<string name="groups">Grupos</string>
|
||||
<string name="group_updated">Grupo atualizado</string>
|
||||
<string name="all">Todos</string>
|
||||
<string name="deleteConfirmationGroup">Eliminar o grupo?</string>
|
||||
<string name="card">Cartão</string>
|
||||
<string name="balance">Saldo</string>
|
||||
<string name="app_loyalty_card_keychain">Chaveiro de cartão de fidelidade</string>
|
||||
<string name="yes">Sim</string>
|
||||
<string name="no">Não</string>
|
||||
<string name="settings_category_title_cards">Vista de cartão</string>
|
||||
<string name="settings_column_count_1">1</string>
|
||||
<string name="settings_column_count_2">2</string>
|
||||
<string name="settings_column_count_3">3</string>
|
||||
<string name="settings_column_count_4">4</string>
|
||||
<string name="settings_column_count_5">5</string>
|
||||
<string name="settings_column_count_6">6</string>
|
||||
<string name="storeName">Nome</string>
|
||||
<string name="note">Nota</string>
|
||||
<string name="cardId">Identificador do cartão</string>
|
||||
<string name="barcodeType">Tipo de código de barras</string>
|
||||
<string name="noBarcode">Sem código de barras</string>
|
||||
<string name="star">Adicionar aos favoritos</string>
|
||||
<string name="unstar">Retirar dos favoritos</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="save">Guardar</string>
|
||||
<string name="edit">Editar</string>
|
||||
<string name="delete">Eliminar</string>
|
||||
<string name="confirm">Confirmar</string>
|
||||
<string name="deleteTitle">Eliminar cartão</string>
|
||||
<plurals name="deleteCardsTitle">
|
||||
<item quantity="one">Eliminar <xliff:g>%d</xliff:g> cartão</item>
|
||||
<item quantity="many">Eliminar <xliff:g>%d</xliff:g> cartões</item>
|
||||
<item quantity="other">Eliminar <xliff:g>%d</xliff:g> cartões</item>
|
||||
</plurals>
|
||||
<string name="deleteConfirmation">Eliminar este cartão permanentemente?</string>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
<item quantity="one">Eliminar o cartão <xliff:g>%d</xliff:g> permanentemente?</item>
|
||||
<item quantity="many">Eliminar os cartões <xliff:g>%d</xliff:g> permanentemente?</item>
|
||||
<item quantity="other">Eliminar os cartões <xliff:g>%d</xliff:g> permanentemente?</item>
|
||||
</plurals>
|
||||
<string name="ok">OK</string>
|
||||
<string name="share">Partilhar</string>
|
||||
<string name="sendLabel">Enviar…</string>
|
||||
<string name="editCardTitle">Editar cartão</string>
|
||||
<string name="scanCardBarcode">Digitalizar código de barras</string>
|
||||
<string name="cardShortcut">Atalho do cartão</string>
|
||||
<string name="noCardsMessage">Adicione um cartão primeiro</string>
|
||||
<string name="barcodeImageDescriptionWithType">Imagem do código de barras <xliff:g>%s</xliff:g></string>
|
||||
<string name="failedParsingImportUriError">Não foi possível analisar o URI de importação</string>
|
||||
<string name="importExport">Importar / Exportar</string>
|
||||
<string name="exportName">Exportar</string>
|
||||
<string name="importExportHelp">A cópia de segurança dos seus dados permite-lhe movê-los para outro dispositivo.</string>
|
||||
<string name="importSuccessfulTitle">Importado</string>
|
||||
<string name="importFailedTitle">A importação falhou</string>
|
||||
<string name="importing">A importar…</string>
|
||||
<string name="exporting">A exportar…</string>
|
||||
<string name="storageReadPermissionRequired">É necessária a permissão para ler o armazenamento para esta ação…</string>
|
||||
<string name="cameraPermissionRequired">É necessária a permissão para aceder à câmara para esta ação…</string>
|
||||
<string name="permissionReadCardsLabel">Ler Cartões Catima</string>
|
||||
<string name="permissionReadCardsDescription">leia os seus cartões do Catima e todos os seus pormenores, incluindo notas e imagens</string>
|
||||
<string name="noCameraPermissionDirectToSystemSetting">Para digitalizar códigos de barras, o Catima tem de aceder à câmara. Clique aqui para mudar as configurações de permissão.</string>
|
||||
<string name="exportOptionExplanation">Os dados serão guardados num local à sua escolha.</string>
|
||||
<string name="importOptionFilesystemTitle">Importar do sistema de ficheiros</string>
|
||||
<string name="importOptionFilesystemExplanation">Escolha um ficheiro específico a partir do sistema de ficheiros.</string>
|
||||
<string name="importOptionApplicationTitle">Usar outra aplicação</string>
|
||||
<string name="importOptionApplicationExplanation">Utilize qualquer aplicação ou o seu gestor de ficheiros favorito para abrir um ficheiro.</string>
|
||||
<string name="importOptionApplicationButton">Utilizar outra aplicação</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019-<xliff:g>%d</xliff:g> Sylvia van Os e contribuidores</string>
|
||||
<string name="app_copyright_short">Copyright © Sylvia van Os e contribuidores</string>
|
||||
<string name="app_copyright_old">Baseado no Loyalty Card Keychain \ndireitos de autor © 2016–2020 Branden Archer</string>
|
||||
<string name="app_license">Software livre de partilha sob a mesma licença e segundo a licença GPLv3+</string>
|
||||
<string name="about_title_fmt">Sobre o <xliff:g id="app_name">%s</xliff:g></string>
|
||||
<string name="debug_version_fmt">Versão: <xliff:g id="version">%s</xliff:g></string>
|
||||
<string name="app_libraries">Bibliotecas livres de terceiros: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="selectBarcodeTitle">Selecionar código de barras</string>
|
||||
<string name="app_resources">Recursos livres de terceiros: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="thumbnailDescription">Miniatura</string>
|
||||
<string name="starImage">Favorito</string>
|
||||
<string name="settings">Configurações</string>
|
||||
<string name="settings_theme">Tema</string>
|
||||
<string name="settings_system_theme">Sistema</string>
|
||||
<string name="settings_light_theme">Claro</string>
|
||||
<string name="settings_dark_theme">Escuro</string>
|
||||
<string name="settings_card_orientation">Orientação do ecrã</string>
|
||||
<string name="settings_follow_system_orientation">Definido no sistema</string>
|
||||
<string name="settings_follow_sensor_orientation">Rodar sempre (ignora as definições do sistema)</string>
|
||||
<string name="settings_landscape_orientation">Paisagem</string>
|
||||
<string name="settings_keep_screen_on">Manter ecrã ligado</string>
|
||||
<string name="settings_keep_screen_on_summary">Desativa o tempo limite do ecrã ao visualizar um cartão</string>
|
||||
<string name="settings_lock_on_opening_orientation">Bloqueio da orientação usada ao abrir o cartão</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Desativar bloqueio do ecrã</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card_summary">Desativa o bloqueio de ecrã ao visualizar um cartão</string>
|
||||
<string name="settings_allow_content_provider_read_title">Permitir que outras apps acessem os meus dados</string>
|
||||
<string name="settings_allow_content_provider_read_summary">Apps ainda terão que solicitar permissão para receber acesso</string>
|
||||
<string name="settings_use_volume_keys_navigation">Mudar de cartão usando os botões de volume</string>
|
||||
<string name="settings_use_volume_keys_navigation_summary">Utilize os botões de volume para alterar o cartão que é apresentado</string>
|
||||
<string name="intent_import_card_from_url_share_text">Quero partilhar um cartão</string>
|
||||
<string name="importSuccessful">Dados importados</string>
|
||||
<string name="exportSuccessful">Dados exportados</string>
|
||||
<string name="enter_group_name">Introduza o nome do grupo</string>
|
||||
<string name="group_edit">Editar grupo</string>
|
||||
<string name="noGroups">Clique no botão + para adicionar grupos para categorização.</string>
|
||||
<string name="noGroupCards">Este grupo está vazio</string>
|
||||
<plurals name="groupCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> cartão</item>
|
||||
<item quantity="many"><xliff:g>%d</xliff:g> cartões</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> cartões</item>
|
||||
</plurals>
|
||||
<string name="group_name_already_in_use">O nome do grupo já está a ser usado</string>
|
||||
<string name="group_name_is_empty">O nome do grupo não pode ser vazio</string>
|
||||
<string name="failedOpeningFileManager">Instalar primeiro um gestor de ficheiros.</string>
|
||||
<string name="moveUp">Subir</string>
|
||||
<string name="moveDown">Descer</string>
|
||||
<string name="leaveWithoutSaveTitle">Sair</string>
|
||||
<string name="leaveWithoutSaveConfirmation">Sair sem guardar?</string>
|
||||
<string name="addManually">Insira o código de barras manualmente</string>
|
||||
<string name="addFromImage">Selecione uma imagem da galeria</string>
|
||||
<string name="groupsList">Grupos: <xliff:g>%s</xliff:g></string>
|
||||
<string name="editGroup">A editar grupo: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Expiram: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Expirados: <xliff:g>%s</xliff:g></string>
|
||||
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> ponto</item>
|
||||
<item quantity="many"><xliff:g>%s</xliff:g> pontos</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> pontos</item>
|
||||
</plurals>
|
||||
<string name="editBarcode">Editar código de barras</string>
|
||||
<string name="expiryDate">Data de validade</string>
|
||||
<string name="never">Nunca</string>
|
||||
<string name="chooseExpiryDate">Escolher validade</string>
|
||||
<string name="moveBarcodeToTopOfScreen">Mover o código de barras para o topo do ecrã</string>
|
||||
<string name="noBarcodeFound">Não foi encontrado nenhum código de barras</string>
|
||||
<string name="errorReadingImage">Não foi possível ler a imagem</string>
|
||||
<string name="currency">Moeda</string>
|
||||
<string name="points">Pontos</string>
|
||||
<string name="balanceParsingFailed">Saldo inválido</string>
|
||||
<string name="chooseImportType">Importar dados de</string>
|
||||
<string name="privacy_policy">Política de privacidade</string>
|
||||
<string name="accept">Aceitar</string>
|
||||
<string name="importCatima">Importar do Catima</string>
|
||||
<string name="importCatimaMessage">Selecione a exportação <i>catima.zip</i> do Catima a importar. \nPrimeiro crie a exportação no menu \"Importar / exportar\" de outra aplicação Catima pressionando \"Exportar\" nesse menu.</string>
|
||||
<string name="importFidme">Importar do FidMe</string>
|
||||
<string name="importFidmeMessage">Selecione a exportação <i>fidme-export-request-xxxxxx.zip</i> do FidMe para importar e depois selecione os tipos de código de barras manualmente. \nPrimeiro crie a exportação no seu perfil do FidMe escolhendo a opção \"Proteção de dados\" e em seguida pressionando \"Extrair os meus dados\".</string>
|
||||
<string name="importLoyaltyCardKeychain">Importar do Loyalty Card Keychain</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Selecione a exportação <i>LoyaltyCardKeychain.csv</i> do Loyalty Card Keychain para importar. \nPrimeiro crie a exportação no menu \"Importar / exportar\" no Loyalty Card Keychain pressionando \"Exportar\".</string>
|
||||
<string name="importStocard">Importar do Stocard</string>
|
||||
<string name="importStocardMessage">Selecione a exportação <i>***.zip</i> do Stocard para importar. \nObtenha-o através do e-mail support@stocardapp.com solicitando uma exportação dos seus dados.</string>
|
||||
<string name="importVoucherVault">Importar do Voucher Vault</string>
|
||||
<string name="importVoucherVaultMessage">Selecione a exportação <i>vouchervault.json</i> do Voucher Vault para importar. \nCrie-a primeiro pressionando a opção \"Exportar\" no Voucher Vault.</string>
|
||||
<string name="unsupportedBarcodeType">Este tipo de código de barras ainda não pode ser mostrado. Pode vir a ser suportado numa versão posterior da aplicação.</string>
|
||||
<string name="wrongValueForBarcodeType">O valor não é válido para o tipo de código de barras selecionado</string>
|
||||
<string name="barcodeId">Valor do código de barras</string>
|
||||
<string name="sameAsCardId">Igual ao identificador</string>
|
||||
<string name="setBarcodeId">Definir o valor do código de barras</string>
|
||||
<string name="intent_import_card_from_url_share_multiple_text">Quero partilhar alguns cartões</string>
|
||||
<string name="frontImageDescription">Imagem frontal</string>
|
||||
<string name="backImageDescription">Imagem de trás</string>
|
||||
<string name="photos">Fotografias</string>
|
||||
<string name="setFrontImage">Definir imagem frontal</string>
|
||||
<string name="setBackImage">Definir imagem de trás</string>
|
||||
<string name="removeImage">Remover imagem</string>
|
||||
<string name="takePhoto">Tirar uma fotografia</string>
|
||||
<string name="updateBarcodeQuestionTitle">Atualizar o valor do código de barras?</string>
|
||||
<string name="updateBarcodeQuestionText">Alterou o identificador. Também quer atualizar o código de barras para usar o mesmo valor?</string>
|
||||
<string name="passwordRequired">Introduza a palavra-passe</string>
|
||||
<string name="exportPassword">Defina uma palavra-passe para proteger a exportação (opcional)</string>
|
||||
<string name="exportPasswordHint">Digite a palavra-passe</string>
|
||||
<string name="failedGeneratingShareURL">Não foi possível gerar um URL partilhável. Por favor reporte isto aos programadores.</string>
|
||||
<string name="turn_flashlight_on">Ligar lanterna</string>
|
||||
<string name="turn_flashlight_off">Desligar lanterna</string>
|
||||
<string name="settings_locale">Idioma</string>
|
||||
<string name="settings_oled_dark">Fundo preto puro para tema negro</string>
|
||||
<string name="settings_oled_dark_summary">Reduz a utilização da pilha em ecrãs OLED</string>
|
||||
<string name="settings_system_locale">Sistema</string>
|
||||
<string name="selectColor">Selecionar cor</string>
|
||||
<string name="setIcon">Definir miniatura</string>
|
||||
<string name="settings_theme_color">Cor do tema</string>
|
||||
<string name="settings_catima_theme">Catima</string>
|
||||
<string name="settings_pink_theme">Rosa</string>
|
||||
<string name="settings_magenta_theme">Magenta</string>
|
||||
<string name="settings_violet_theme">Violeta</string>
|
||||
<string name="settings_blue_theme">Azul</string>
|
||||
<string name="settings_sky_blue_theme">Azul céu</string>
|
||||
<string name="settings_green_theme">Verde</string>
|
||||
<string name="settings_brown_theme">Castanho</string>
|
||||
<string name="app_contributors">Tornado possível por: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="sort">Ordenar</string>
|
||||
<string name="showMoreInfo">Mostrar informação</string>
|
||||
<string name="updateBalance">Atualizar saldo</string>
|
||||
<string name="failedToRetrieveImageFile">Falha ao recuperar o ficheiro de imagem</string>
|
||||
<string name="barcodeLongPressMessage">Só podem ser abertas imagens na aplicação da galeria</string>
|
||||
<string name="sort_by_name">Nome</string>
|
||||
<string name="sort_by_most_recently_used">Mais usados recentemente</string>
|
||||
<string name="sort_by_valid_from">Válido a partir de</string>
|
||||
<string name="sort_by_expiry">Validade</string>
|
||||
<string name="reverse">…na ordem inversa</string>
|
||||
<string name="sort_by">Ordenar por</string>
|
||||
<string name="version_history">Histórico de versões</string>
|
||||
<string name="credits">Créditos</string>
|
||||
<string name="help_translate_this_app">Ajude a traduzir esta aplicação</string>
|
||||
<string name="license">Licença</string>
|
||||
<string name="source_repository">Repositório do código-fonte</string>
|
||||
<string name="on_github">no GitHub</string>
|
||||
<string name="and_data_usage">e utilização de dados</string>
|
||||
<string name="rate_this_app">Avalie esta aplicação</string>
|
||||
<string name="on_google_play">no Google Play</string>
|
||||
<string name="report_error">Reportar erro</string>
|
||||
<string name="translate_platform">no Weblate</string>
|
||||
<string name="shortcutSelectCard">Selecione um cartão</string>
|
||||
<string name="options">Opções</string>
|
||||
<string name="starred">Estrela</string>
|
||||
<string name="include_if_asking_support">Se quiser pedir ajuda, inclua as seguintes informações:</string>
|
||||
<string name="duplicateCard">Duplicar</string>
|
||||
<string name="archive">Arquivar</string>
|
||||
<string name="unarchive">Desarquivar</string>
|
||||
<string name="archived">Cartão arquivado</string>
|
||||
<string name="unarchived">Cartão desarquivado</string>
|
||||
<string name="failedLaunchingPhotoPicker">Não foi encontrada nenhuma aplicação de galeria de imagens</string>
|
||||
<string name="previousCard">Anterior</string>
|
||||
<plurals name="groupCardCountWithArchived">
|
||||
<item quantity="one"><xliff:g>%1$d</xliff:g> cartão (<xliff:g id="archivedCount">%2$d</xliff:g> arquivado)</item>
|
||||
<item quantity="many"><xliff:g>%1$d</xliff:g> cartões (<xliff:g id="archivedCount">%2$d</xliff:g> arquivados)</item>
|
||||
<item quantity="other"><xliff:g>%1$d</xliff:g> cartões (<xliff:g id="archivedCount">%2$d</xliff:g> arquivados)</item>
|
||||
</plurals>
|
||||
<string name="nextCard">Próximo</string>
|
||||
<string name="failedToOpenUrl">Instale primeiro um navegador de Internet</string>
|
||||
<string name="welcome">Bem-vindo ao Catima</string>
|
||||
<string name="updateBalanceTitle">Quanto gastou ou recebeu?</string>
|
||||
<string name="importCards">Importar cartões</string>
|
||||
<string name="updateBalanceHint">Introduza o valor</string>
|
||||
<string name="currentBalanceSentence">Saldo atual: <xliff:g>%s</xliff:g></string>
|
||||
<string name="newBalanceSentence">Novo saldo: <xliff:g>%s</xliff:g></string>
|
||||
<string name="validFromDate">Válido desde</string>
|
||||
<string name="anyDate">Qualquer data</string>
|
||||
<string name="chooseValidFromDate">Escolha uma data desde válida</string>
|
||||
<string name="validFromSentence">Válido desde: <xliff:g>%s</xliff:g></string>
|
||||
<string name="height">Altura:</string>
|
||||
<string name="switchToFrontImage">Mudar para imagem frontal</string>
|
||||
<string name="switchToBackImage">Mudar para a imagem de trás</string>
|
||||
<string name="switchToBarcode">Mudar para o código de barras</string>
|
||||
<string name="openFrontImageInGalleryApp">Abrir a imagem frontal na aplicação da galeria</string>
|
||||
<string name="openBackImageInGalleryApp">Abrir a imagem traseira na aplicação da galeria</string>
|
||||
<string name="setBarcodeHeight">Definir altura do código de barras</string>
|
||||
<string name="donate">Doar</string>
|
||||
<string name="icon_header_click_text">Pressione e segure para editar o icone</string>
|
||||
<string name="show_name_below_image_thumbnail">Mostrar nome abaixo da miniatura do ícone</string>
|
||||
<string name="show_note">Mostrar nota</string>
|
||||
<string name="show_balance">Mostrar saldo</string>
|
||||
<string name="show_validity">Mostrar validade</string>
|
||||
<string name="settings_category_title_cards_overview">Resumo dos cartões</string>
|
||||
<string name="settings_column_count_portrait">Colunas no modo vertical</string>
|
||||
<string name="settings_column_count_landscape">Colunas no modo horizontal</string>
|
||||
<string name="settings_automatic_column_count">Automático</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
<string name="settings_category_title_general">Geral</string>
|
||||
<string name="settings_category_title_privacy">Privacidade</string>
|
||||
<string name="action_display_options">Opções de visualização</string>
|
||||
<string name="show_archived_cards">Mostrar cartões arquivados</string>
|
||||
<string name="view_online">Ver online</string>
|
||||
<string name="action_more_options">Mais opções</string>
|
||||
<string name="addWithoutBarcode">Adicione um cartão sem código de barras</string>
|
||||
<string name="enter_card_id">Digite o número ID ou o texto no seu cartão</string>
|
||||
<string name="card_id_must_not_be_empty">O ID do cartão não pode estar vazio</string>
|
||||
<string name="add_a_card_in_a_different_way">Adicione um cartão de uma forma diferente</string>
|
||||
<string name="field_must_not_be_empty">O campo não pode estar vazio</string>
|
||||
<string name="manually_enter_barcode_instructions">Digite o número ID ou o texto no seu cartão e pressione o código de barras que se parece com o que está no seu cartão.</string>
|
||||
<string name="add_manually_warning_title">Recomenda-se a digitalização</string>
|
||||
<string name="add_manually_warning_message">Em algumas lojas, o valor do código de barras é diferente do número escrito no cartão. Por este motivo, a introdução manual de um código de barras pode nem sempre funcionar. Recomenda-se vivamente que, em vez disso, digitalize o código de barras com a sua câmara. Ainda quer continuar?</string>
|
||||
<string name="continue_">Continuar</string>
|
||||
<string name="spend">Gastar</string>
|
||||
<string name="receive">Receber</string>
|
||||
<string name="amountParsingFailed">Montante inválido</string>
|
||||
<string name="addFromPdfFile">Selecionar um ficheiro PDF</string>
|
||||
<string name="errorReadingFile">Não foi possível ler o ficheiro</string>
|
||||
<string name="failedLaunchingFileManager">Não foi possível encontrar um gestor de ficheiros suportado</string>
|
||||
<string name="multipleBarcodesFoundPleaseChooseOne">Qual dos códigos de barras encontrados pretende utilizar?</string>
|
||||
<string name="pageWithNumber">Página <xliff:g>%d</xliff:g></string>
|
||||
<string name="noCameraFoundGuideText">O seu dispositivo não parece ter uma câmara. Se tiver, tente reiniciar o dispositivo. Caso contrário, utilize o botão \"Mais opções\" abaixo para adicionar um código de barras de outra maneira.</string>
|
||||
<string name="importCancelled">Importação cancelada</string>
|
||||
<string name="exportCancelled">Exportação cancelada</string>
|
||||
<string name="useFrontImage">Utilizar imagem frontal</string>
|
||||
<string name="useBackImage">Utilizar imagem do verso</string>
|
||||
<string name="addFromPkpass">Selecionar um ficheiro Passbook (.pkpass)</string>
|
||||
<string name="unsupportedFile">Este ficheiro não é suportado</string>
|
||||
<string name="generic_error_please_retry">Lamento, ocorreu um erro, tente novamente...</string>
|
||||
</resources>
|
||||
@@ -9,7 +9,7 @@
|
||||
<string name="action_add">Adăugați</string>
|
||||
<string name="action_search">Căutare</string>
|
||||
<string name="sendLabel">Trimiteți…</string>
|
||||
<string name="share">Împărtășiți</string>
|
||||
<string name="share">Partajați</string>
|
||||
<string name="deleteConfirmation">Să șterg definitiv acest card\?</string>
|
||||
<string name="deleteTitle">Ștergeți cardul</string>
|
||||
<string name="confirm">Confirmați</string>
|
||||
@@ -25,7 +25,7 @@
|
||||
<string name="settings_theme">Tema</string>
|
||||
<string name="all">Toate</string>
|
||||
<string name="noCardsMessage">Adăugați mai întâi un card</string>
|
||||
<string name="noCardExistsError">Acel card nu a putut fi găsit</string>
|
||||
<string name="noCardExistsError">Cardul nu a putut fi găsit</string>
|
||||
<string name="failedParsingImportUriError">Nu s-a putut analiza URI-ul de import</string>
|
||||
<string name="importExport">Importă/Exportă</string>
|
||||
<string name="exportName">Exportați</string>
|
||||
@@ -38,7 +38,7 @@
|
||||
<string name="exportOptionExplanation">Datele vor fi scrise într-o locație aleasă de dumneavoastră.</string>
|
||||
<string name="importOptionFilesystemTitle">Import din sistemul de fișiere</string>
|
||||
<string name="importOptionApplicationTitle">Utilizați o altă aplicație</string>
|
||||
<string name="starImage">Steaua preferată</string>
|
||||
<string name="starImage">Stea de preferintă</string>
|
||||
<string name="settings">Setări</string>
|
||||
<string name="intent_import_card_from_url_share_text">Vreau să împărtășesc o carte cu tine</string>
|
||||
<string name="moveUp">Mutarea în sus</string>
|
||||
@@ -49,8 +49,8 @@
|
||||
<string name="about">Despre</string>
|
||||
<string name="app_license">Software liber cu copyleft, licențiat GPLv3+</string>
|
||||
<string name="settings_system_theme">Sistemul</string>
|
||||
<string name="settings_light_theme">Lumină</string>
|
||||
<string name="settings_dark_theme">Întuneric</string>
|
||||
<string name="settings_light_theme">Luminos</string>
|
||||
<string name="settings_dark_theme">Întunecat</string>
|
||||
<string name="noBarcodeFound">Nu a fost găsit niciun cod de bare</string>
|
||||
<string name="settings_display_barcode_max_brightness">Iluminare ecran</string>
|
||||
<string name="settings_keep_screen_on">Păstrați ecranul pornit</string>
|
||||
@@ -71,15 +71,15 @@
|
||||
<string name="addFromImage">Selectați o imagine din galerie</string>
|
||||
<string name="never">Niciodată</string>
|
||||
<string name="groups">Grupuri</string>
|
||||
<string name="leaveWithoutSaveConfirmation">Să pleci fără să salvezi\?</string>
|
||||
<string name="leaveWithoutSaveConfirmation">Ieșiți fără să salvați?</string>
|
||||
<string name="expiryDate">Data expirării</string>
|
||||
<string name="moveBarcodeToTopOfScreen">Mutați codul de bare în partea de sus a ecranului</string>
|
||||
<string name="errorReadingImage">Nu s-a putut citi imaginea</string>
|
||||
<string name="points">Puncte</string>
|
||||
<string name="cardShortcut">Scurtătură de card</string>
|
||||
<string name="scanCardBarcode">Scanați codul de bare</string>
|
||||
<string name="importExportHelp">Copierea de rezervă a datelor vă permite să le mutați pe un alt dispozitiv.</string>
|
||||
<string name="exportSuccessfulTitle">Exportată</string>
|
||||
<string name="importExportHelp">Copia de rezervă a datelor vă permite să le mutați pe un alt dispozitiv.</string>
|
||||
<string name="exportSuccessfulTitle">Exportat</string>
|
||||
<string name="exportFailedTitle">Export eșuat</string>
|
||||
<string name="importOptionFilesystemExplanation">Alegeți un anumit fișier din sistemul de fișiere.</string>
|
||||
<string name="importOptionApplicationButton">Utilizați o altă aplicație</string>
|
||||
@@ -87,7 +87,7 @@
|
||||
<string name="enter_group_name">Introduceți numele grupului</string>
|
||||
<string name="yes">Da</string>
|
||||
<string name="no">Nu</string>
|
||||
<string name="archive">Arhivați</string>
|
||||
<string name="archive">Arhivare</string>
|
||||
<string name="passwordRequired">Vă rugăm, introduceți parola</string>
|
||||
<string name="unsupportedBarcodeType">Acest tip de cod de bare nu poate fi afișat. Este posibil ca acesta să se poată afișa într-o versiune mai nouă a aplicației.</string>
|
||||
<string name="photos">Imagini</string>
|
||||
@@ -97,17 +97,17 @@
|
||||
<string name="intent_import_card_from_url_share_multiple_text">Aș dori să partajez niște carduri cu tine</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Drepturi de autor © 2019–<xliff:g>%d</xliff:g> Sylvia van Os și contribuitorii</string>
|
||||
<string name="translate_platform">pe Weblate</string>
|
||||
<string name="card_id_must_not_be_empty">Identificatorul cardului nu poate fi liber</string>
|
||||
<string name="card_id_must_not_be_empty">Identificatorul cardului nu poate fi gol</string>
|
||||
<string name="duplicateCard">Duplicare</string>
|
||||
<string name="balanceParsingFailed">Sold invalid</string>
|
||||
<string name="exportPasswordHint">Introduceți o parolă</string>
|
||||
<string name="about_title_fmt">Despre <xliff:g id="app_name">%s</xliff:g></string>
|
||||
<string name="barcodeImageDescriptionWithType">Imagine <xliff:g>%s</xliff:g> cod de bare</string>
|
||||
<string name="openFrontImageInGalleryApp">Deschideți imaginea față în aplicația galerie</string>
|
||||
<string name="openFrontImageInGalleryApp">Deschideți imaginea frontală în aplicația galerie</string>
|
||||
<string name="show_name_below_image_thumbnail">Afișați numele sub imaginea miniaturii</string>
|
||||
<string name="removeImage">Ștergeți imaginea</string>
|
||||
<string name="help_translate_this_app">Ajutați la traducerea aplicației</string>
|
||||
<string name="sort_by_expiry">Expirație</string>
|
||||
<string name="sort_by_expiry">Expirare</string>
|
||||
<string name="add_a_card_in_a_different_way">Adăugați un card într-o altă modalitate</string>
|
||||
<string name="settings_portrait_orientation">Portret</string>
|
||||
<string name="takePhoto">Faceți o poză</string>
|
||||
@@ -119,7 +119,7 @@
|
||||
<string name="group_edit">Editați Grup</string>
|
||||
<string name="debug_version_fmt">Versiune: <xliff:g id="version">%s</xliff:g></string>
|
||||
<string name="show_validity">Afișați validitatea</string>
|
||||
<string name="backImageDescription">Imagine spate</string>
|
||||
<string name="backImageDescription">Imagine din spate</string>
|
||||
<string name="view_online">Vizualizați online</string>
|
||||
<string name="noCameraPermissionDirectToSystemSetting">Pentru a scana codurile de bare, Catima necesită acces la cameră. Apăsați aici pentru a schimba setările permisiunilor dvs.</string>
|
||||
<string name="settings_lock_on_opening_orientation">Blocați orientația folosită când deschideți cardul</string>
|
||||
@@ -128,22 +128,21 @@
|
||||
<string name="height">Înălțime:</string>
|
||||
<string name="expiryStateSentence">Expiră: <xliff:g>%s</xliff:g></string>
|
||||
<string name="setIcon">Setați miniatura</string>
|
||||
<string name="barcodeLongPressMessage">Doar imaginile pot vi deschise în aplicația galerie</string>
|
||||
<string name="barcodeLongPressMessage">Doar imagini pot fi deschise în aplicația galerie</string>
|
||||
<string name="settings_category_title_general">General</string>
|
||||
<string name="manually_enter_barcode_instructions">Introduceți numărul de identificare sau textul de pe cardul dumneavoastră iar apoi apăsați codul de bare care arată ca și cel de pe cardul dumneavoastră.</string>
|
||||
<string name="manually_enter_barcode_instructions">Introduceți numărul de identificare sau textul de pe cardul dumneavoastră iar apoi selectați codul de bare ce arată ca și cel de pe cardul dumneavoastră.</string>
|
||||
<string name="balanceSentence">Sold: <xliff:g>%s</xliff:g></string>
|
||||
<string name="switchToBarcode">Schimbați la codul de bare</string>
|
||||
<string name="switchToBarcode">Comutați la codul de bare</string>
|
||||
<string name="importFidme">Importați din FidMe</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card_summary">Dezactivează blocarea ecranului când vizualizați un card</string>
|
||||
<string name="action_more_options">Mai multe opțiuni</string>
|
||||
<string name="app_copyright_old">Bazat pe Loyalty Card Keychain
|
||||
\ndrepturi de autor rezervate © 2016-2020 Branden Archer</string>
|
||||
<string name="importVoucherVaultMessage">Selectați exportul dvs. <i>vouchervault.json</i> din Voucher Vault pentru a-l importa.
|
||||
\nCreați-l prin apăsarea butonului Export în Voucher Vault mai întâi.</string>
|
||||
<string name="importVoucherVaultMessage">Selectați exportul dvs. <i>vouchervault.json</i> din Voucher Vault pentru a-l importa.\nCreați întâi fișierul prin apăsarea butonului Export în Voucher Vault.</string>
|
||||
<string name="chooseImportType">Importați date din</string>
|
||||
<string name="frontImageDescription">Imagine față</string>
|
||||
<string name="frontImageDescription">Imagine frontală</string>
|
||||
<string name="showMoreInfo">Afișați informații</string>
|
||||
<string name="failedToOpenUrl">Instalați un browser web mai întâi</string>
|
||||
<string name="failedToOpenUrl">Mai întâi instalați un browser web</string>
|
||||
<string name="setBackImage">Setați imaginea din spate</string>
|
||||
<string name="permissionReadCardsDescription">citiți cardurile dumneavoastră Catima și toate detaliile lor, inclusiv notițele și imaginile</string>
|
||||
<string name="anyDate">Orice dată</string>
|
||||
@@ -156,7 +155,7 @@
|
||||
<string name="enter_card_id">Introduceți numărul de identificare sau textul de pe cardul dumneavoastră</string>
|
||||
<string name="unarchived">Card dezarhivat</string>
|
||||
<string name="chooseValidFromDate">Alegeți data de început</string>
|
||||
<string name="action_display_options">Opțiuni afisare</string>
|
||||
<string name="action_display_options">Opțiuni afișare</string>
|
||||
<string name="settings_display_barcode_max_brightness_summary">Necesar pentru ca unele scanere să funcționeze</string>
|
||||
<plurals name="deleteCardsTitle">
|
||||
<item quantity="one">Șterge <xliff:g>%d</xliff:g> card</item>
|
||||
@@ -164,7 +163,7 @@
|
||||
<item quantity="other">Ștergere <xliff:g>%d</xliff:g> carduri</item>
|
||||
</plurals>
|
||||
<string name="settings_oled_dark_summary">Reduce utilizarea bateriei pe ecrane OLED</string>
|
||||
<string name="group_name_is_empty">Numele grupului nu poate fi liber</string>
|
||||
<string name="group_name_is_empty">Numele grupului nu poate fi gol</string>
|
||||
<string name="importCards">Importați carduri</string>
|
||||
<string name="icon_header_click_text">Apăsați lung pentru a edita miniatura</string>
|
||||
<string name="settings_category_title_cards">Afișare carduri</string>
|
||||
@@ -172,21 +171,21 @@
|
||||
<string name="ok">OK</string>
|
||||
<string name="unarchive">Dezarhivare</string>
|
||||
<string name="addWithoutBarcode">Adăugați un card fără cod de bare</string>
|
||||
<string name="sort_by">Sortați în</string>
|
||||
<string name="sort_by">Sortați după</string>
|
||||
<string name="on_google_play">pe Google Play</string>
|
||||
<string name="turn_flashlight_off">Opriți lanterna</string>
|
||||
<string name="show_note">Afișați notița</string>
|
||||
<string name="report_error">Raportați o eroare</string>
|
||||
<string name="switchToBackImage">Schimbați la imaginea spate</string>
|
||||
<string name="settings_follow_system_orientation">Urmare sistem</string>
|
||||
<string name="switchToBackImage">Comutați către imaginea din spate</string>
|
||||
<string name="settings_follow_system_orientation">Urmează setările sistemului</string>
|
||||
<string name="reverse">...în ordine inversă</string>
|
||||
<string name="settings_brown_theme">Maro</string>
|
||||
<string name="app_contributors">Făcut posibil de: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="app_copyright_short">Drepturi de autor © Sylvia van Os și contribuabilii</string>
|
||||
<string name="settings_oled_dark">Fundal pur negru pentru tema închisă</string>
|
||||
<string name="app_copyright_short">Drepturi de autor © Sylvia van Os și contribuitorii</string>
|
||||
<string name="settings_oled_dark">Fundal pur negru pentru tema întunecată</string>
|
||||
<string name="starred">Favorite</string>
|
||||
<string name="field_must_not_be_empty">Câmpul nu poate fi liber</string>
|
||||
<string name="switchToFrontImage">Schimbați la imaginea față</string>
|
||||
<string name="field_must_not_be_empty">Câmpul nu poate fi gol</string>
|
||||
<string name="switchToFrontImage">Comutați către imaginea frontală</string>
|
||||
<string name="validFromSentence">Valid de la data de: <xliff:g>%s</xliff:g></string>
|
||||
<string name="settings_catima_theme">Catima</string>
|
||||
<string name="previousCard">Precedent</string>
|
||||
@@ -199,17 +198,16 @@
|
||||
<item quantity="few"><xliff:g>%1$d</xliff:g> carduri (<xliff:g id="archivedCount">%2$d</xliff:g> arhivate)</item>
|
||||
<item quantity="other"><xliff:g>%1$d</xliff:g> de carduri (<xliff:g id="archivedCount">%2$d</xliff:g> arhivate)</item>
|
||||
</plurals>
|
||||
<string name="sameAsCardId">La fel cu identificatorul</string>
|
||||
<string name="sameAsCardId">Acelașil cu identificatorul</string>
|
||||
<string name="options">Opțiuni</string>
|
||||
<string name="settings_magenta_theme">Magenta</string>
|
||||
<string name="failedGeneratingShareURL">Nu s-a putut genera un URL partajabil. Vă rugăm raportați asta.</string>
|
||||
<string name="failedGeneratingShareURL">Nu s-a putut genera un URL partajabil. Vă rugăm să raportați aceasta eroare.</string>
|
||||
<string name="selectColor">Selectați o culoare</string>
|
||||
<string name="setBarcodeHeight">Setați înălțimea codului de bare</string>
|
||||
<string name="settings_landscape_orientation">Orizontal</string>
|
||||
<string name="privacy_policy">Politica de Confidențialitate</string>
|
||||
<string name="importStocardMessage">Selectați exportul dvs. <i>***.zip</i> din Stocard pentru a-l importa.
|
||||
\nLuați-l prin e-mail către support@stocardapp.com cerând un export al datelor dumneavoastră.</string>
|
||||
<string name="openBackImageInGalleryApp">Deschideți imaginea spate în aplicația galerie</string>
|
||||
<string name="importStocardMessage">Selectați exportul dvs. <i>***.zip</i> din Stocard pentru a-l importa.\nGenerați întâi fișierul solicitând prin e-mail către support@stocardapp.com un export al datelor dumneavoastră.</string>
|
||||
<string name="openBackImageInGalleryApp">Deschideți imaginea din spate în aplicația galerie</string>
|
||||
<string name="settings_system_locale">Sistem</string>
|
||||
<string name="updateBalance">Actualizați balanța</string>
|
||||
<string name="sort_by_most_recently_used">Cele mai recent utilizate</string>
|
||||
@@ -219,12 +217,11 @@
|
||||
<string name="settings_locale">Limbă</string>
|
||||
<string name="sort_by_name">Nume</string>
|
||||
<string name="setFrontImage">Setați imaginea din față</string>
|
||||
<string name="settings_sky_blue_theme">Albastru cer</string>
|
||||
<string name="cameraPermissionRequired">Permisiunea pentru a accesa camera este necesară pentru această acțiune…</string>
|
||||
<string name="settings_sky_blue_theme">Albastru ca cerul</string>
|
||||
<string name="cameraPermissionRequired">Pentru această acțiune este necesară permisiunea de acces la camera …</string>
|
||||
<string name="settings_allow_content_provider_read_title">Permiteți altor aplicații să acceseze datele mele</string>
|
||||
<string name="updateBarcodeQuestionText">Ați schimbat identificatorul. Doriți să actualizați codul de bare pentru a utiliza aceeași valoare?</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Selectați exportul dvs. <i>LoyaltyCardKeychain.csv</i> din Loyalty Card Keychain pentru a-l importa.
|
||||
\nCreați-l din meniul Import/Export în Loyalty Card Keychain prin apăsarea butonului Export acolo mai întâi.</string>
|
||||
<string name="updateBarcodeQuestionText">Ați schimbat identificatorul. Doriți să actualizați și codul de bare pentru a utiliza aceeași valoare?</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Selectați exportul dvs. <i>LoyaltyCardKeychain.csv</i> din Loyalty Card Keychain pentru a-l importa. \nCreați întâi fișierul din meniul Import/Export în Loyalty Card Keychain prin apăsarea butonului Export.</string>
|
||||
<string name="currentBalanceSentence">Balanța curentă: <xliff:g>%s</xliff:g></string>
|
||||
<string name="importLoyaltyCardKeychain">Importați din Loyalty Card Keychain</string>
|
||||
<string name="group_updated">Grup actualizat</string>
|
||||
@@ -232,7 +229,7 @@
|
||||
<string name="on_github">pe GitHub</string>
|
||||
<string name="sort">Sortați</string>
|
||||
<string name="permissionReadCardsLabel">Citiți cardurile Catima</string>
|
||||
<string name="storageReadPermissionRequired">Permisiunea pentru a citi stocarea este necesară pentru această acțiune…</string>
|
||||
<string name="storageReadPermissionRequired">Pentru această acțiune este necesară permisiunea de citire a mediului de stocare …</string>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
<item quantity="one">Ștergeți acest <xliff:g>%d</xliff:g> card permanent?</item>
|
||||
<item quantity="few">Ștergeți aceste <xliff:g>%d</xliff:g> carduri permanent?</item>
|
||||
@@ -242,15 +239,15 @@
|
||||
<string name="archived">Card arhivat</string>
|
||||
<string name="failedToRetrieveImageFile">Nu s-a putut recupera fișierul imaginii</string>
|
||||
<string name="donate">Donați</string>
|
||||
<string name="group_name_already_in_use">Numele grupului este deja în uz</string>
|
||||
<string name="settings_violet_theme">Violet</string>
|
||||
<string name="group_name_already_in_use">Acest nume de grup este deja utilizat</string>
|
||||
<string name="settings_violet_theme">Mov</string>
|
||||
<string name="include_if_asking_support">Dacă doriți să cereți ajutor, includeți informațiile următoare:</string>
|
||||
<string name="show_archived_cards">Afișați cardurile arhivate</string>
|
||||
<string name="settings_card_orientation">Orientare ecran</string>
|
||||
<string name="app_libraries">Biblioteci terță deschise: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="app_libraries">Listă de biblioteci libere de la terți: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="updateBalanceTitle">Cât de mult ați cheltuit sau primit?</string>
|
||||
<string name="settings_blue_theme">Albastru</string>
|
||||
<string name="app_resources">Resurse terță deschise: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="app_resources">Listă de resurse gratuite de la terți: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="app_name">Catima</string>
|
||||
<string name="shortcutSelectCard">Selectați un card</string>
|
||||
<string name="accept">Acceptă</string>
|
||||
@@ -268,36 +265,34 @@
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> selectate</item>
|
||||
</plurals>
|
||||
<string name="version_history">Istoric versiuni</string>
|
||||
<string name="importCatimaMessage">Selectați exportul dvs. <i>catima.zip</i> din Catima pentru a importa.
|
||||
\nCreați-l din meniul Import/Export al unei alte aplicații Catima apăsând Export acolo mai întâi.</string>
|
||||
<string name="importCatimaMessage">Selectați exportul dvs. <i>catima.zip</i> din Catima pentru a importa. \nCreați întâi fișierul din meniul Import/Export al unei alte aplicații Catima apăsând acolo butonul de Export.</string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> punct</item>
|
||||
<item quantity="few"><xliff:g>%s</xliff:g> puncte</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> de puncte</item>
|
||||
</plurals>
|
||||
<string name="importFidmeMessage">Selectați exportul dvs. <i>fidme-export-request-xxxxx.zip</i> din FidMe pentru a-l importa, și selectați tipurile de cod de bare manual după.
|
||||
\nCreați-l din profilul dvs. FidMe prin alegerea Protecție Date și apoi apăsând Extrageți datele mele prima dată.</string>
|
||||
<string name="importFidmeMessage">Selectați exportul dvs. <i>fidme-export-request-xxxxx.zip</i> din FidMe pentru a-l importa, și apoi selectați tipurile de cod de bare manual.\nCreați întâi fișierul din profilul dvs. FidMe prin alegerea Protecție Date și apoi apăsând Extrageți datele mele.</string>
|
||||
<string name="updateBarcodeQuestionTitle">Actualizați valoarea codului de bare?</string>
|
||||
<string name="settings_keep_screen_on_summary">Dezactivează temporizatorul de ecran când vizualizați un card</string>
|
||||
<string name="rate_this_app">Acordați o recenzie acestei aplicații</string>
|
||||
<string name="credits">Contribuabili</string>
|
||||
<string name="credits">Contribuitori</string>
|
||||
<string name="settings_follow_sensor_orientation">Rotește întotdeauna (ignora setările de sistem)</string>
|
||||
<string name="continue_">Continua</string>
|
||||
<string name="add_manually_warning_title">Se recomandă scanarea</string>
|
||||
<string name="add_manually_warning_message">Pentru unele magazine, valoarea codului de bare diferă de numărul scris pe card. Din acest motiv, este posibil ca introducerea manuală a unui cod de bare să nu funcționeze întotdeauna. În schimb, este recomandat să scanați codul de bare cu camera dvs. Mai vrei să continui?</string>
|
||||
<string name="spend">Cheltuie</string>
|
||||
<string name="receive">Primește</string>
|
||||
<string name="amountParsingFailed">Sumă nevalidă</string>
|
||||
<string name="amountParsingFailed">Sumă invalidă</string>
|
||||
<string name="addFromPdfFile">Selectați un fișier PDF</string>
|
||||
<string name="errorReadingFile">Nu am putut citi fișierul</string>
|
||||
<string name="failedLaunchingFileManager">Nu s-a găsit un manager de fișiere suportat</string>
|
||||
<string name="multipleBarcodesFoundPleaseChooseOne">Pe care dintre codurile de bare găsite dorești să-l folosești?</string>
|
||||
<string name="multipleBarcodesFoundPleaseChooseOne">Care dintre codurile de bare găsite dorești să-l folosești?</string>
|
||||
<string name="pageWithNumber">Pagina <xliff:g>%d</xliff:g></string>
|
||||
<string name="noCameraFoundGuideText">Dispozitivul dvs. nu pare să aibă o cameră foto/video. Daca are, încercați să vă reporniți dispozitivul. Altfel, folosiți butonul cu opțiunea \'Mai multe\' de mai jos pentru a adăuga un cod de bare prin altă modalitate.</string>
|
||||
<string name="noCameraFoundGuideText">Dispozitivul dvs. nu pare să aibă o cameră foto/video. Daca are, încercați să vă reporniți dispozitivul. Alternativ, folosiți butonul cu opțiunea \'Mai multe\' de mai jos pentru a adăuga un cod de bare prin altă metodă.</string>
|
||||
<string name="importCancelled">Importare anulată</string>
|
||||
<string name="exportCancelled">Exportare anulată</string>
|
||||
<string name="useBackImage">Utilizează imaginea din spate</string>
|
||||
<string name="useFrontImage">Utilizează imaginea din față</string>
|
||||
<string name="useFrontImage">Utilizează imaginea frontală</string>
|
||||
<string name="settings_use_volume_keys_navigation">Schimbă cardurile folosind butoanele de volum</string>
|
||||
<string name="settings_use_volume_keys_navigation_summary">Folosiți butoanele de volum pentru a schimba ce card este afișat</string>
|
||||
<string name="settings_automatic_column_count">Automat</string>
|
||||
@@ -308,4 +303,11 @@
|
||||
<string name="settings_column_count_5">5</string>
|
||||
<string name="settings_column_count_6">6</string>
|
||||
<string name="settings_column_count_7">7</string>
|
||||
</resources>
|
||||
<string name="settings_column_count_landscape">Coloane in mod orizontal</string>
|
||||
<string name="settings_category_title_cards_overview">Vedere de ansamblu al cardlui</string>
|
||||
<string name="sort_by_valid_from">Forma validă</string>
|
||||
<string name="settings_column_count_portrait">Coloane in mod portret</string>
|
||||
<string name="addFromPkpass">Selectează un fișier de tip Passbook (.pkpass)</string>
|
||||
<string name="unsupportedFile">Acest fișier nu este suportat</string>
|
||||
<string name="generic_error_please_retry">Scuze, ceva nu a funționat. Încearcă din nou ...</string>
|
||||
</resources>
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
<string name="updateBalance">Ažuriraj stanje</string>
|
||||
<string name="failedToRetrieveImageFile">Preuzimanje fotografije nije uspelo</string>
|
||||
<string name="sort_by_name">Ime</string>
|
||||
<string name="sort_by_most_recently_used">Nedevno korišćeno</string>
|
||||
<string name="sort_by_most_recently_used">Nedavno korišćeno</string>
|
||||
<string name="sort_by_expiry">Ističe</string>
|
||||
<string name="reverse">…u obrnutom redosledu</string>
|
||||
<string name="sort_by">Sortiraj po</string>
|
||||
@@ -298,4 +298,5 @@
|
||||
<string name="useBackImage">Koristi zadnju fotografiju</string>
|
||||
<string name="pageWithNumber">Strana <xliff:g>%d</xliff:g></string>
|
||||
<string name="noCameraFoundGuideText">Čini se da tvoj uređaj nema kameru. Ako je ima, pokušaj da ponovo pokreneš uređaj. U suprotnom, koristi dugme Više opcija, koje se nalazi ispod, da bi dodao bar-kod na drugi način.</string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">Važi od</string>
|
||||
</resources>
|
||||
|
||||
@@ -302,4 +302,5 @@
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">பதிப்புரிமை © 2019–<xliff:g>%d</xliff:g> சில்வியா வான் ஓஎச் மற்றும் பங்களிப்பாளர்கள்</string>
|
||||
<string name="app_resources">விடுதலை மூன்றாம் தரப்பு வளங்கள்: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="groupsList">குழுக்கள்: <xliff:g>%s</xliff:g></string>
|
||||
</resources>
|
||||
<string name="sort_by_valid_from">இருந்து செல்லுபடியாகும்</string>
|
||||
</resources>
|
||||
|
||||
@@ -285,7 +285,7 @@
|
||||
<string name="enter_card_id">Введіть ID або текст на вашій картці</string>
|
||||
<string name="addWithoutBarcode">Додати картку без штрих-коду</string>
|
||||
<string name="field_must_not_be_empty">Поле вводу не повинно бути порожнім</string>
|
||||
<string name="app_name">Катіма</string>
|
||||
<string name="app_name">Catima</string>
|
||||
<string name="settings_follow_sensor_orientation">Завжди обертати (ігнорувати системні налаштування)</string>
|
||||
<string name="add_manually_warning_message">У деяких магазинах значення штрихкоду відрізняється від номера, записаного на картці. Через це введення штрихкоду вручну може не завжди спрацювати. Наполегливо рекомендуємо відсканувати штрихкод за допомогою камери. Ви все ще хочете продовжити?</string>
|
||||
<string name="continue_">Продовжити</string>
|
||||
|
||||
@@ -140,6 +140,7 @@
|
||||
<item>nl</item>
|
||||
<item>oc</item>
|
||||
<item>pl</item>
|
||||
<item>pt</item>
|
||||
<item>pt-rBR</item>
|
||||
<item>pt-rPT</item>
|
||||
<item>ro-rRO</item>
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
<locale android:name="nl" />
|
||||
<locale android:name="oc" />
|
||||
<locale android:name="pl" />
|
||||
<locale android:name="pt" />
|
||||
<locale android:name="pt-BR" />
|
||||
<locale android:name="pt-PT" />
|
||||
<locale android:name="ro-RO" />
|
||||
|
||||
171
app/src/test/java/protect/card_locker/AboutActivityTest.kt
Normal file
171
app/src/test/java/protect/card_locker/AboutActivityTest.kt
Normal file
@@ -0,0 +1,171 @@
|
||||
package protect.card_locker
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import androidx.core.view.isVisible
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertNotNull
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Assert.fail
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.robolectric.Robolectric
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.Shadows.shadowOf
|
||||
import org.robolectric.shadows.ShadowActivity
|
||||
import org.robolectric.shadows.ShadowLog
|
||||
import java.lang.reflect.Method
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
class AboutActivityTest {
|
||||
private lateinit var activityController: org.robolectric.android.controller.ActivityController<AboutActivity>
|
||||
private lateinit var activity: AboutActivity
|
||||
private lateinit var shadowActivity: ShadowActivity
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
ShadowLog.stream = System.out
|
||||
activityController = Robolectric.buildActivity(AboutActivity::class.java)
|
||||
activity = activityController.get()
|
||||
shadowActivity = shadowOf(activity)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testActivityCreation() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Verify activity title is set correctly
|
||||
assertEquals(activity.title.toString(),
|
||||
activity.getString(R.string.about_title_fmt, activity.getString(R.string.app_name)))
|
||||
|
||||
// Check key elements are initialized
|
||||
assertNotNull(activity.findViewById(R.id.toolbar))
|
||||
assertNotNull(activity.findViewById(R.id.credits_sub))
|
||||
assertNotNull(activity.findViewById(R.id.version_history_sub))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testDisplayOptionsBasedOnConfig() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Test Google Play rate button visibility based on BuildConfig
|
||||
val rateButton = activity.findViewById<View>(R.id.rate)
|
||||
assertEquals(BuildConfig.showRateOnGooglePlay, rateButton.isVisible)
|
||||
|
||||
// Test donate button visibility based on BuildConfig
|
||||
val donateButton = activity.findViewById<View>(R.id.donate)
|
||||
assertEquals(BuildConfig.showDonate, donateButton.isVisible)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testClickListeners() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Test clicking on a link that opens external browser
|
||||
val repoButton = activity.findViewById<View>(R.id.repo)
|
||||
repoButton.performClick()
|
||||
|
||||
val startedIntent = shadowActivity.nextStartedActivity
|
||||
assertEquals(Intent.ACTION_VIEW, startedIntent.action)
|
||||
assertEquals(Uri.parse("https://github.com/CatimaLoyalty/Android/"),
|
||||
startedIntent.data)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testActivityDestruction() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Verify a view exists before destruction
|
||||
assertNotNull(activity.findViewById(R.id.credits_sub))
|
||||
|
||||
activityController.pause().stop().destroy()
|
||||
|
||||
// Verify activity was destroyed
|
||||
assertTrue(activity.isDestroyed)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testDialogContentMethods() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Use reflection to test private methods
|
||||
try {
|
||||
val showCreditsMethod: Method = AboutActivity::class.java.getDeclaredMethod("showCredits")
|
||||
showCreditsMethod.isAccessible = true
|
||||
showCreditsMethod.invoke(activity) // Should not throw exception
|
||||
|
||||
val showHistoryMethod: Method = AboutActivity::class.java.getDeclaredMethod("showHistory", View::class.java)
|
||||
showHistoryMethod.isAccessible = true
|
||||
showHistoryMethod.invoke(activity, activity.findViewById(R.id.version_history)) // Should not throw exception
|
||||
} catch (e: Exception) {
|
||||
fail("Exception when calling dialog methods: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testExternalBrowserWithDifferentURLs() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
try {
|
||||
// Get access to the private method
|
||||
val openExternalBrowserMethod: Method = AboutActivity::class.java.getDeclaredMethod("openExternalBrowser", View::class.java)
|
||||
openExternalBrowserMethod.isAccessible = true
|
||||
|
||||
// Create test URLs
|
||||
val testUrls = arrayOf(
|
||||
"https://hosted.weblate.org/engage/catima/",
|
||||
"https://github.com/CatimaLoyalty/Android/blob/main/LICENSE",
|
||||
"https://catima.app/privacy-policy/",
|
||||
"https://github.com/CatimaLoyalty/Android/issues"
|
||||
)
|
||||
|
||||
for (url in testUrls) {
|
||||
// Create a View with the URL as tag
|
||||
val testView = View(activity)
|
||||
testView.tag = url
|
||||
|
||||
// Call the method directly
|
||||
openExternalBrowserMethod.invoke(activity, testView)
|
||||
|
||||
// Verify the intent
|
||||
val intent = shadowActivity.nextStartedActivity
|
||||
assertNotNull("No intent launched for URL: $url", intent)
|
||||
assertEquals(Intent.ACTION_VIEW, intent.action)
|
||||
assertEquals(Uri.parse(url), intent.data)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
fail("Exception during reflection: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testButtonVisibilityBasedOnBuildConfig() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Get the current values from BuildConfig
|
||||
val showRateOnGooglePlay = BuildConfig.showRateOnGooglePlay
|
||||
val showDonate = BuildConfig.showDonate
|
||||
|
||||
// Test that the visibility matches the BuildConfig values
|
||||
assertEquals(showRateOnGooglePlay, activity.findViewById<View>(R.id.rate).isVisible)
|
||||
assertEquals(showDonate, activity.findViewById<View>(R.id.donate).isVisible)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testAboutScreenTextContent() {
|
||||
activityController.create().start().resume()
|
||||
|
||||
// Verify that text fields contain the expected content
|
||||
val creditsSub = activity.findViewById<TextView>(R.id.credits_sub)
|
||||
assertNotNull(creditsSub.text)
|
||||
assertFalse(creditsSub.text.toString().isEmpty())
|
||||
|
||||
val versionHistorySub = activity.findViewById<TextView>(R.id.version_history_sub)
|
||||
assertNotNull(versionHistorySub.text)
|
||||
assertFalse(versionHistorySub.text.toString().isEmpty())
|
||||
}
|
||||
}
|
||||
@@ -176,6 +176,69 @@ class PkpassTest {
|
||||
Assert.assertTrue(imageBitmap.sameAs(parser.image))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFakeEmptyEurowingsPassForGitHubIssue2317() {
|
||||
// Prepare
|
||||
val context: Context = ApplicationProvider.getApplicationContext()
|
||||
val pkpass = "pkpass/Eurowings_fake_empty_for_gh_issue_2317/Eurowings.pkpass"
|
||||
val image = "pkpass/Eurowings_fake_empty_for_gh_issue_2317/logo@2x.png"
|
||||
|
||||
val pkpassUri = Uri.parse(pkpass)
|
||||
val imageUri = Uri.parse(image)
|
||||
ShadowContentResolver().registerInputStream(pkpassUri, javaClass.getResourceAsStream(pkpass))
|
||||
ShadowContentResolver().registerInputStream(imageUri, javaClass.getResourceAsStream(image))
|
||||
|
||||
val parser = PkpassParser(context, pkpassUri)
|
||||
val imageBitmap = BitmapFactory.decodeStream(context.contentResolver.openInputStream(imageUri))
|
||||
|
||||
// Confirm this does not have languages
|
||||
Assert.assertEquals(listOf("de", "en"), parser.listLocales())
|
||||
|
||||
// Confirm correct parsing (en)
|
||||
var parsedCard = parser.toLoyaltyCard("de")
|
||||
|
||||
Assert.assertEquals(-1, parsedCard.id)
|
||||
Assert.assertEquals("EUROWINGS", parsedCard.store)
|
||||
Assert.assertEquals("Eurowings Boarding Pass", parsedCard.note)
|
||||
Assert.assertEquals(Date(1567911600000), parsedCard.validFrom)
|
||||
Assert.assertEquals(null, parsedCard.expiry)
|
||||
Assert.assertEquals(BigDecimal(0), parsedCard.balance)
|
||||
Assert.assertEquals(null, parsedCard.balanceType)
|
||||
Assert.assertEquals("M1DOE/JOHN JBZPPP CGNDBVEW 0954 251A012D0073 148>5181W 9250BEW 00000000000002A0000000000000 0 N", parsedCard.cardId)
|
||||
Assert.assertEquals(null, parsedCard.barcodeId)
|
||||
Assert.assertEquals(BarcodeFormat.AZTEC, parsedCard.barcodeType!!.format())
|
||||
Assert.assertEquals(Color.parseColor("#FFFFFF"), parsedCard.headerColor)
|
||||
Assert.assertEquals(0, parsedCard.starStatus)
|
||||
Assert.assertEquals(0, parsedCard.archiveStatus)
|
||||
Assert.assertEquals(0, parsedCard.lastUsed)
|
||||
Assert.assertEquals(DBHelper.DEFAULT_ZOOM_LEVEL, parsedCard.zoomLevel)
|
||||
|
||||
// Confirm correct image is used
|
||||
Assert.assertTrue(imageBitmap.sameAs(parser.image))
|
||||
|
||||
// Confirm correct parsing (en)
|
||||
parsedCard = parser.toLoyaltyCard("en")
|
||||
|
||||
Assert.assertEquals(-1, parsedCard.id)
|
||||
Assert.assertEquals("EUROWINGS", parsedCard.store)
|
||||
Assert.assertEquals("Eurowings Boarding Pass", parsedCard.note)
|
||||
Assert.assertEquals(Date(1567911600000), parsedCard.validFrom)
|
||||
Assert.assertEquals(null, parsedCard.expiry)
|
||||
Assert.assertEquals(BigDecimal(0), parsedCard.balance)
|
||||
Assert.assertEquals(null, parsedCard.balanceType)
|
||||
Assert.assertEquals("M1DOE/JOHN JBZPPP CGNDBVEW 0954 251A012D0073 148>5181W 9250BEW 00000000000002A0000000000000 0 N", parsedCard.cardId)
|
||||
Assert.assertEquals(null, parsedCard.barcodeId)
|
||||
Assert.assertEquals(BarcodeFormat.AZTEC, parsedCard.barcodeType!!.format())
|
||||
Assert.assertEquals(Color.parseColor("#FFFFFF"), parsedCard.headerColor)
|
||||
Assert.assertEquals(0, parsedCard.starStatus)
|
||||
Assert.assertEquals(0, parsedCard.archiveStatus)
|
||||
Assert.assertEquals(0, parsedCard.lastUsed)
|
||||
Assert.assertEquals(DBHelper.DEFAULT_ZOOM_LEVEL, parsedCard.zoomLevel)
|
||||
|
||||
// Confirm correct image is used
|
||||
Assert.assertTrue(imageBitmap.sameAs(parser.image))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testDCBPkPass() {
|
||||
// Prepare
|
||||
|
||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 7.5 KiB |
@@ -1,7 +1,7 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
plugins {
|
||||
id("com.android.application") version "8.8.0" apply false
|
||||
id("com.android.application") version "8.9.1" apply false
|
||||
id("com.github.spotbugs") version "5.1.4" apply false
|
||||
id("org.jetbrains.kotlin.android") version "2.1.10" apply false
|
||||
}
|
||||
|
||||
BIN
fastlane/metadata/android/ca/images/featureGraphic.png
Normal file
BIN
fastlane/metadata/android/ca/images/featureGraphic.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
@@ -1,5 +1,5 @@
|
||||
- Předvyplnění stávajícího ID do začátku úprava ID karty. (pull #94)
|
||||
- Omezení šířky generovaných čárových kódů, aby byla snížena spotřeba paměti a chyby nedostatku paměti. (pull #103)
|
||||
- Při editaci karty změněno tlačítko „Zadat kartu“ na „Upravit kartu“, pokud ID karty již existuje. (pull #104)
|
||||
- Změněno barevné schéma tak, aby bylo jemnější a kompatibilní s ikonou aplikace, a změněno rozložení při prohlížení karty, aby bylo přehlednější. (pull #107)
|
||||
- Přidán úvodní průvodce, který se spustí při prvním spuštění aplikace. (pull #108)
|
||||
- Předvyplnění stávajícího ID do začátku úprava ID karty.
|
||||
- Omezení šířky generovaných čárových kódů, aby byla snížena spotřeba paměti a chyby nedostatku paměti.
|
||||
- Při editaci karty změněno tlačítko „Zadat kartu“ na „Upravit kartu“, pokud ID karty již existuje.
|
||||
- Změněno barevné schéma tak, aby bylo jemnější a kompatibilní s ikonou aplikace, a změněno rozložení při prohlížení karty, aby bylo přehlednější.
|
||||
- Přidán úvodní průvodce, který se spustí při prvním spuštění aplikace.
|
||||
|
||||
3
fastlane/metadata/android/cs-CZ/changelogs/147.txt
Normal file
3
fastlane/metadata/android/cs-CZ/changelogs/147.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Cíl Android 15
|
||||
- Opraven pád při čtení nepodporovaných souborů pkpass
|
||||
- Vylepšení podpory pkpass
|
||||
@@ -1,5 +1,5 @@
|
||||
- PŘELOMOVÁ ZMĚNA: Formát zálohování se změnil, viz https://github.com/TheLastProject/Catima/wiki/Export-format
|
||||
- PŘELOMOVÁ ZMĚNA: Změnil se formát sdílení URL, viz https://github.com/TheLastProject/Catima/wiki/Card-sharing-URL-format
|
||||
- PŘELOMOVÁ ZMĚNA: Formát zálohování se změnil, viz GitHub
|
||||
- PŘELOMOVÁ ZMĚNA: Změnil se formát sdílení URL, viz GitHub
|
||||
- Umožnění zapnutí nebo vypnutí svítilny při skenování
|
||||
- Přidána podpora UPC-E
|
||||
- Podpora přidávání přední a zadní fotografie ke každé kartě
|
||||
@@ -7,5 +7,4 @@
|
||||
- Podpora importu ze Stocard (beta)
|
||||
- Oprava zbytečných bílých znaků v poznámkách z importu Fidme
|
||||
- Podpora nového formátu exportu z trezoru voucherů
|
||||
- Oprava tlačítek plovoucích akcí, která jsou v systému Android 4 za ostatními prvky rozhraní
|
||||
- Oprava horního okraje panelu aplikace pro prohlížení věrnostních karet
|
||||
- Spousta dalších změn
|
||||
|
||||
3
fastlane/metadata/android/de-DE/changelogs/147.txt
Normal file
3
fastlane/metadata/android/de-DE/changelogs/147.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Angepasst für Android 15
|
||||
- Kein Absturz mehr beim Lesen nicht unterstützter pkpass-Dateien
|
||||
- Verbesserte Unterstützung des pkpass Imports
|
||||
3
fastlane/metadata/android/en-US/changelogs/147.txt
Normal file
3
fastlane/metadata/android/en-US/changelogs/147.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Target Android 15
|
||||
- Fix crash reading unsupported pkpass files
|
||||
- Improve pkpass support
|
||||
3
fastlane/metadata/android/fa-IR/changelogs/10.txt
Normal file
3
fastlane/metadata/android/fa-IR/changelogs/10.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- تغییر نام پیشفرض فایلهای وارد/صادر شده. (pull #84 (https://github.com/brarcher/loyalty-card-locker/pull/84))
|
||||
- تصحیح متن در صفحه وارد/صادر کردن. (pull #87 (https://github.com/brarcher/loyalty-card-locker/pull/87))
|
||||
- بهبود طرحبندی صفحه نمایش کارت. متن خواناتر شده و با یک کلیک طولانی قابل انتخاب است. (pull #91 (https://github.com/brarcher/loyalty-card-locker/pull/91))
|
||||
2
fastlane/metadata/android/fa-IR/changelogs/100.txt
Normal file
2
fastlane/metadata/android/fa-IR/changelogs/100.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- پنهان کردن جستجو، گسترش و مرتب کردن نمادها تا زمانی که حداقل 1 کارت وجود دارد
|
||||
- رفع پوسته های مختلف
|
||||
3
fastlane/metadata/android/fa-IR/changelogs/101.txt
Normal file
3
fastlane/metadata/android/fa-IR/changelogs/101.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- رفع عدم استفاده از رنگ پوسته برش دهنده
|
||||
- رفع مشکلات جزئی پوسته
|
||||
- اضافه شدن پوسته سیاه خالص برای صفحه نمایش های OLED
|
||||
2
fastlane/metadata/android/fa-IR/changelogs/102.txt
Normal file
2
fastlane/metadata/android/fa-IR/changelogs/102.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- اصلاحات جزئی مختلف
|
||||
- رفع خرابی هنگام استفاده از ترجمه نروژی
|
||||
2
fastlane/metadata/android/fa-IR/changelogs/103.txt
Normal file
2
fastlane/metadata/android/fa-IR/changelogs/103.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- انتخاب زبان دستی را برطرف کنید که همه جا اعمال نمی شود
|
||||
- رفع خرابی در نمای ویرایش در محل بدون منطقه
|
||||
2
fastlane/metadata/android/fa-IR/changelogs/104.txt
Normal file
2
fastlane/metadata/android/fa-IR/changelogs/104.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- وضعیت گسترش جزئیات کارت را ذخیره کنید
|
||||
- اصلاحات جزئی رابط
|
||||
2
fastlane/metadata/android/fa-IR/changelogs/105.txt
Normal file
2
fastlane/metadata/android/fa-IR/changelogs/105.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- رفع بلوک خاکستری ظاهر شدن در مقدار نامعتبر برای بارکد
|
||||
- رفع واردات Stocard
|
||||
1
fastlane/metadata/android/fa-IR/changelogs/106.txt
Normal file
1
fastlane/metadata/android/fa-IR/changelogs/106.txt
Normal file
@@ -0,0 +1 @@
|
||||
- رفع برخی از دنباله های کاراکتر که به عنوان یک کاراکتر نشان داده می شوند
|
||||
1
fastlane/metadata/android/fa-IR/changelogs/107.txt
Normal file
1
fastlane/metadata/android/fa-IR/changelogs/107.txt
Normal file
@@ -0,0 +1 @@
|
||||
- رفع واردات Stocard
|
||||
5
fastlane/metadata/android/fa-IR/changelogs/108.txt
Normal file
5
fastlane/metadata/android/fa-IR/changelogs/108.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
- قابلیت تکثیر کارت را اضافه کنید
|
||||
- اجازه ندهید انتخاب قبل از سال 1970 منقضی شود (به هر حال آنها هرگز کار نکردند)
|
||||
- اضافه کردن پشتیبانی برای آرشیو کارت
|
||||
- حذف را از ویرایش به نمایش منتقل کنید
|
||||
- نماد قفل چرخش را به نفع تنظیم قفل چرخشی جدید حذف کنید
|
||||
1
fastlane/metadata/android/fa-IR/changelogs/109.txt
Normal file
1
fastlane/metadata/android/fa-IR/changelogs/109.txt
Normal file
@@ -0,0 +1 @@
|
||||
- رفع رنگ متن نادرست روی دکمه "بدون بارکد"
|
||||
5
fastlane/metadata/android/fa-IR/changelogs/11.txt
Normal file
5
fastlane/metadata/android/fa-IR/changelogs/11.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
- هنگام ویرایش شناسه کارت، شناسه موجود را از قبل پر کنید تا شروع شود. (pull #94 (https://github.com/brarcher/loyalty-card-locker/pull/94))
|
||||
- محدودیت عرض بارکدهای تولید شده را برای کاهش مصرف و خطا حافظه. (pull #103 (https://github.com/brarcher/loyalty-card-locker/pull/103))
|
||||
- هنگام ویرایش کارت، تغییر دکمه "تایید کارت" در صورتی که شناسه کارت از قبل وجود دارد. "Edit Card". (pull #104 (https://github.com/brarcher/loyalty-card-locker/pull/104))
|
||||
- تغییر رنگ بندی به نرمی و سازگاری با نماد برنامه و تمیزتر کردن طرح هنگام مشاهده کارت. (pull #107 (https://github.com/brarcher/loyalty-card-locker/pull/107))
|
||||
- اضافه کردن یک جادوگر معرفی که در اولین اجرا برنامه راه اندازی می شود. (pull #108 (https://github.com/brarcher/loyalty-card-locker/pull/108))
|
||||
7
fastlane/metadata/android/fa-IR/changelogs/111.txt
Normal file
7
fastlane/metadata/android/fa-IR/changelogs/111.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
- پشتیبانی از زبان عربی
|
||||
- نمایش تعداد کارت های آرشیو شده در نمای کلی گروه
|
||||
- رفع اشکالات تجزیه تعادل (کارت های ساخته شده به زبان عربی و سایر زبان ها با اعداد غیر غربی قابل ذخیره نیستند)
|
||||
- رفع عدم اعمال تم سفارشی به صفحه اصلی به درستی
|
||||
- بهبود نمایش کارت های انتخاب شده
|
||||
- رفع خرابی هنگام خروج cardview در طرحبندیهای RTL برای کارتهای دارای انقضا یا موجودی
|
||||
- فلش عقب را در نمای کارتی که در طرحبندیهای RTL به مسیر اشتباه اشاره میکند، رفع کنید
|
||||
1
fastlane/metadata/android/fa-IR/changelogs/112.txt
Normal file
1
fastlane/metadata/android/fa-IR/changelogs/112.txt
Normal file
@@ -0,0 +1 @@
|
||||
- امکان تنظیم یک سربرگ سفارشی را بیشتر نمایان کنید
|
||||
3
fastlane/metadata/android/fa-IR/changelogs/113.txt
Normal file
3
fastlane/metadata/android/fa-IR/changelogs/113.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- دکمه های قبلی و بعدی را به نمای کارت وفاداری اضافه کنید
|
||||
- رفع رنگ پیش زمینه در دکمه ویرایش
|
||||
- نماد ذخیره فلاپی دیسک را با علامت چک جایگزین کنید
|
||||
3
fastlane/metadata/android/fa-IR/changelogs/114.txt
Normal file
3
fastlane/metadata/android/fa-IR/changelogs/114.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- اضافه کردن نماد تک رنگ برای اندروید 13
|
||||
- صفحه نمایش اولین راه اندازی را بهبود بخشید
|
||||
- رفع واردات Fidme
|
||||
4
fastlane/metadata/android/fa-IR/changelogs/115.txt
Normal file
4
fastlane/metadata/android/fa-IR/changelogs/115.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
- باز کردن تصویر در گالری با فشار طولانی
|
||||
- اعمال سبک متریال به دیالوگ ها
|
||||
- با اشتراک گذاری یک تصویر در Catima از ایجاد کارت پشتیبانی کنید
|
||||
- دکمه خرج سریع را به صفحه کارت اضافه کنید
|
||||
2
fastlane/metadata/android/fa-IR/changelogs/116.txt
Normal file
2
fastlane/metadata/android/fa-IR/changelogs/116.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- رفع عدم اجازه گفتگوی خرج سریع، جدا کردن
|
||||
- پشتیبانی از بارگذاری تصویر از مدیر فایل
|
||||
2
fastlane/metadata/android/fa-IR/changelogs/117.txt
Normal file
2
fastlane/metadata/android/fa-IR/changelogs/117.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- حذف مجوزهای غیر ضروری
|
||||
- اندروید 13 را هدف قرار دهید
|
||||
2
fastlane/metadata/android/fa-IR/changelogs/118.txt
Normal file
2
fastlane/metadata/android/fa-IR/changelogs/118.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- پشتیبانی از تنظیم شروع اعتبار کارت
|
||||
- رفع واردات Stocard (فرمت صادرات Stocard تغییر کرد)
|
||||
1
fastlane/metadata/android/fa-IR/changelogs/119.txt
Normal file
1
fastlane/metadata/android/fa-IR/changelogs/119.txt
Normal file
@@ -0,0 +1 @@
|
||||
- از رنگهای Material You در دستگاههای بیشتری استفاده کنید (بهروزرسانی کتابخانه Google)
|
||||
1
fastlane/metadata/android/fa-IR/changelogs/12.txt
Normal file
1
fastlane/metadata/android/fa-IR/changelogs/12.txt
Normal file
@@ -0,0 +1 @@
|
||||
- هنگام چرخاندن صفحه نمایش در اولین اجرای جادوگر، از خرابی جلوگیری کنید.
|
||||
3
fastlane/metadata/android/fa-IR/changelogs/120.txt
Normal file
3
fastlane/metadata/android/fa-IR/changelogs/120.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- طراحی مجدد کامل صفحه نمایش کارت اصلی و وفاداری
|
||||
- سبک Material You برای صفحه تنظیمات
|
||||
- رفع خرابی هنگام استفاده از "عکس گرفتن" با برنامه دوربین غیرفعال
|
||||
1
fastlane/metadata/android/fa-IR/changelogs/121.txt
Normal file
1
fastlane/metadata/android/fa-IR/changelogs/121.txt
Normal file
@@ -0,0 +1 @@
|
||||
- بهروز رسانی کتابخانه های استفاده شده
|
||||
3
fastlane/metadata/android/fa-IR/changelogs/122.txt
Normal file
3
fastlane/metadata/android/fa-IR/changelogs/122.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- برای تغییر آیکون کارت در نمای فعالیت، فشار طولانی دهید
|
||||
- بهبود استایل دکمه در صفحه گروه ها
|
||||
- مقادیر بارکد طولانی را ثابت کنید که باعث می شود بارکد به اندازه کم شود
|
||||
2
fastlane/metadata/android/fa-IR/changelogs/123.txt
Normal file
2
fastlane/metadata/android/fa-IR/changelogs/123.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- بهبودهای جزئی رابط کاربری
|
||||
- رفع عدم استفاده از طراحی جدید در دستگاه های با صفحه نمایش مربع
|
||||
1
fastlane/metadata/android/fa-IR/changelogs/124.txt
Normal file
1
fastlane/metadata/android/fa-IR/changelogs/124.txt
Normal file
@@ -0,0 +1 @@
|
||||
- پشتیبانی از انتخاب دقیق جزئیات برای مشاهده در نمای کلی کارت
|
||||
1
fastlane/metadata/android/fa-IR/changelogs/125.txt
Normal file
1
fastlane/metadata/android/fa-IR/changelogs/125.txt
Normal file
@@ -0,0 +1 @@
|
||||
- با رنگهای از دست رفته سرصفحه با ظرافت بیشتری برخورد کنید
|
||||
1
fastlane/metadata/android/fa-IR/changelogs/126.txt
Normal file
1
fastlane/metadata/android/fa-IR/changelogs/126.txt
Normal file
@@ -0,0 +1 @@
|
||||
- رفع انواع RTL
|
||||
4
fastlane/metadata/android/fa-IR/changelogs/127.txt
Normal file
4
fastlane/metadata/android/fa-IR/changelogs/127.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
- بهبود رندر بارکد
|
||||
- قابلیت همکاری اولیه با برنامه های خارجی (اندروید 6.0+)
|
||||
- صفحه تنظیمات سازماندهی مجدد
|
||||
- وارد کردن از برخی مرورگرهایی که یک دنباله / را به نشانی اشتراکگذاری اضافه میکنند، رفع کنید
|
||||
1
fastlane/metadata/android/fa-IR/changelogs/128.txt
Normal file
1
fastlane/metadata/android/fa-IR/changelogs/128.txt
Normal file
@@ -0,0 +1 @@
|
||||
- رفع خرابی نادر
|
||||
22
fastlane/metadata/android/fa-IR/full_description.txt
Normal file
22
fastlane/metadata/android/fa-IR/full_description.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
جستجوی کارتهای پاداش پلاستیکی را در حین تسویهحساب فروشگاه یا فروشگاه اینترنتی متوقف کنید.
|
||||
<b>بارکدها را با استفاده از دوربین دستگاه خود اسکن کنید، کارتها را فراموش کنید.</b>
|
||||
|
||||
کیف پول خود را فراموش کنید یا آن را برای اشیاء قیمتی بسیار سبک نگه دارید.
|
||||
|
||||
با استفاده از این ابزار ضروری حمل روزانه (EDC) می توانید پلاستیک بی مصرف را با پول نقد جایگزین کنید.
|
||||
|
||||
- از جاسوسی با مجوزهای بسیار کم خودداری کنید. بدون دسترسی به اینترنت و بدون تبلیغات.
|
||||
- کارت ها یا کدهایی را با نام و رنگ های قابل تنظیم اضافه کنید.
|
||||
- اگر بارکدی برای ذخیره وجود ندارد یا نمی توان از آن استفاده کرد، وارد کردن کد دستی.
|
||||
- کارت ها و کدها را از فایل ها، کاتیما، FidMe، K، جاکلیدی کارت وفاداری، Stocard و صندوق کوپن وارد کنید.
|
||||
- از تمام کارت های خود یک نسخه پشتیبان تهیه کنید و در صورت تمایل آنها را به دستگاه جدیدی انتقال دهید.
|
||||
- کوپن ها، پیشنهادات انحصاری، کدهای تبلیغاتی، یا کارت ها و کدها را با استفاده از هر برنامه ای به اشتراک بگذارید.
|
||||
- تم تیره و گزینه های دسترسی برای کاربران دارای اختلال بینایی.
|
||||
- ساخته شده برای همه توسط انجمن نرم افزار libre.
|
||||
- ترجمه های دست ساز محلی برای بیش از 40 زبان.
|
||||
- رایگان، توسط مشارکت های جامعه پشتیبانی می شود.
|
||||
- استفاده کنید، مطالعه کنید، تغییر دهید و آن را به دلخواه به اشتراک بگذارید. <i>با همه</i>.
|
||||
- نه تنها نرم افزار آزاد / منبع باز. مدیریت کارت نرم افزار رایگان <i>Copylefted</i> (GPLv3+).
|
||||
|
||||
زندگی و خرید خود را ساده کنید و هرگز رسید کاغذی، کارت هدیه پرداخت در فروشگاه یا بلیط هواپیما را گم نکنید.
|
||||
تمام جوایز و جوایز خود را با خود ببرید و در حین حرکت پس انداز کنید.
|
||||
BIN
fastlane/metadata/android/fa-IR/images/featureGraphic.png
Normal file
BIN
fastlane/metadata/android/fa-IR/images/featureGraphic.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
1
fastlane/metadata/android/fa-IR/short_description.txt
Normal file
1
fastlane/metadata/android/fa-IR/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
برای بارکدها، عضویتها، برنامههای وفاداری، کوپنها و بلیطهای شما.
|
||||
1
fastlane/metadata/android/fa-IR/title.txt
Normal file
1
fastlane/metadata/android/fa-IR/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
کاتیما – کیف پول کارت وفاداری
|
||||
3
fastlane/metadata/android/lv/changelogs/147.txt
Normal file
3
fastlane/metadata/android/lv/changelogs/147.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Android 15 atbalsts
|
||||
- Novērsts avārija neatbalstītu pkpass datņu lasīšanas laikā
|
||||
- Uzlabots pkpass atbalsts
|
||||
2
fastlane/metadata/android/lv/changelogs/15.txt
Normal file
2
fastlane/metadata/android/lv/changelogs/15.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Pievienots lietotnes īsinājumikonu atbalsts (Android 7.1+), kas nodrošina, ka visnesenāk izmantotās kartes parādīsies kā īsinājumikonas. (izmaiņu pieprasījums #145 (https://github.com/brarcher/loyalty-card-locker/pull/145))
|
||||
- Pievienots logrīks, kas darbojas kā piesprausta lietotnes īsinājumikona, lai atbalstītu ierīces, kurās darbojas Android vecāks par 7.1. (izmaiņu pieprasījums #142 (https://github.com/brarcher/loyalty-card-locker/pull/142))
|
||||
1
fastlane/metadata/android/pt-PT/changelogs/138.txt
Normal file
1
fastlane/metadata/android/pt-PT/changelogs/138.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Corrigir gesto de voltar no ecrã principal descartando o teclado e a pesquisa no Android 13+
|
||||
@@ -1 +1,3 @@
|
||||
- Opção para navegar entre cartões usando os botões de volume
|
||||
- Corrigir importação de Stocard
|
||||
- Corrigir a mensagem "Importe cancelado" de aparecer após importações bem sucedidas
|
||||
|
||||
1
fastlane/metadata/android/pt-PT/changelogs/140.txt
Normal file
1
fastlane/metadata/android/pt-PT/changelogs/140.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Corrigir o embrulho de texto na caixa de diálogo de adicionar
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user