Merge branch 'main' into feature/android_17_target

This commit is contained in:
Sylvia van Os
2026-07-15 17:20:37 +02:00
committed by GitHub
96 changed files with 658 additions and 305 deletions

View File

@@ -32,8 +32,8 @@ jobs:
matrix:
flavor: [Foss, Gplay]
steps:
- uses: actions/checkout@v6.0.2
- uses: gradle/actions/wrapper-validation@v6
- uses: actions/checkout@v7.0.0
- uses: gradle/actions/wrapper-validation@v6.2.0
- name: set up OpenJDK 25
run: |
sudo apt-get update
@@ -41,6 +41,10 @@ jobs:
sudo update-alternatives --auto java
- name: Build
run: ./gradlew assemble${{ matrix.flavor }}Release
- name: Check for non-free libraries
run: |
wget -q https://codeberg.org/Katastima/apkscanner/releases/download/v0.0.7/apk-scanner_v0.0.7.jar
java -jar apk-scanner_v0.0.7.jar scan-apk "$(echo 'app/build/outputs/apk/${{ matrix.flavor }}/release/app-${{ matrix.flavor }}-release-unsigned.apk' | tr '[:upper:]' '[:lower:]')"
- name: Check lint
run: ./gradlew lint${{ matrix.flavor }}Release
- name: Run unit tests
@@ -51,13 +55,13 @@ jobs:
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Run instrumented tests (API 23)
uses: ReactiveCircus/android-emulator-runner@v2
uses: ReactiveCircus/android-emulator-runner@v2.37.0
with:
api-level: 23
arch: x86_64
script: ./gradlew connected${{ matrix.flavor }}DebugAndroidTest
- name: Run instrumented tests (API 35)
uses: ReactiveCircus/android-emulator-runner@v2
uses: ReactiveCircus/android-emulator-runner@v2.37.0
with:
api-level: 35
arch: x86_64

View File

@@ -19,9 +19,9 @@ jobs:
steps:
- name: Checkout repo
id: checkout
uses: actions/checkout@v6.0.2
uses: actions/checkout@v7.0.0
- name: Setup Python
uses: actions/setup-python@v6.2.0
uses: actions/setup-python@v6.3.0
with:
python-version: '3.x'
- name: Run converter script

View File

@@ -17,7 +17,7 @@ jobs:
steps:
- name: Checkout repo
id: checkout
uses: actions/checkout@v6.0.2
uses: actions/checkout@v7.0.0
- name: Update contributors
id: update_contributors
uses: TheLastProject/contributors-to-file-action@v3.2.0

View File

@@ -17,7 +17,7 @@ jobs:
generate-feature-graphic:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- name: Install requirements
run: |
sudo apt-get update

View File

@@ -27,7 +27,7 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- name: Fail on bad translations
run: if grep -ri "<xliff" app/src/main/res/values*/strings.xml; then echo "Invalidly escaped translations found"; exit 1; fi
- name: Check app_name consistency

View File

@@ -17,7 +17,7 @@ jobs:
update-locales:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- name: Add new locales
run: .scripts/new-locales.py
- name: Update locales

View File

@@ -1,5 +1,11 @@
# Changelog
## v2.43.0 - 167 (2026-07-12)
- Add support for showing the card ID in the card list
- Add support to sort by most recently added
- Add internal image viewer for zooming card front/back/icon images
## v2.42.1 - 166 (2026-05-16)
- Prevent crash on devices with misbehaving NFC

View File

@@ -23,7 +23,9 @@ for good reason.
## Code Changes
Note: submitting LLM ("AI") generated code is strongly discouraged, as such
### LLM ("AI") and coding agents
**Note:** submitting LLM ("AI") generated code is strongly discouraged, as such
code is often (subtly) incorrect or overcomplicated (for example: unnecessarily
pulling in extra libraries for functionality already covered by existing
libraries). It also often makes unrelated changes that increase the risk of
@@ -47,6 +49,14 @@ risk.
Please never submit LLM-generated code as-is.
### Kotlin and Compose migration
Catima uses a lot of "legacy" tech, Java, Android XML. This will be ported to Kotlin,
then Jetpack Compose; for further details, see
<https://github.com/CatimaLoyalty/Android/issues/2483>.
Thus, prefer Kotlin and Jetpack Compose for new code/UI where practical, especially new files/features.
### Test Your Code
There are four possible tests you can run to verify your code. The first

View File

@@ -8,8 +8,8 @@ GEM
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.4.0)
aws-partitions (1.1249.0)
aws-sdk-core (3.247.0)
aws-partitions (1.1269.0)
aws-sdk-core (3.254.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
@@ -17,11 +17,11 @@ GEM
bigdecimal
jmespath (~> 1, >= 1.6.1)
logger
aws-sdk-kms (1.125.0)
aws-sdk-core (~> 3, >= 3.247.0)
aws-sdk-kms (1.130.0)
aws-sdk-core (~> 3, >= 3.254.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.222.0)
aws-sdk-core (~> 3, >= 3.247.0)
aws-sdk-s3 (1.227.0)
aws-sdk-core (~> 3, >= 3.254.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.12.1)
@@ -42,8 +42,9 @@ GEM
domain_name (0.6.20240107)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.112.0)
faraday (1.10.5)
excon (1.5.0)
logger
faraday (1.10.6)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
@@ -72,22 +73,22 @@ GEM
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.4.1)
fastlane (2.234.0)
fastlane (2.237.0)
CFPropertyList (>= 2.3, < 5.0.0)
abbrev (~> 0.1)
addressable (>= 2.8, < 3.0.0)
addressable (>= 2.9.0, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.197)
babosa (>= 1.0.3, < 2.0.0)
base64 (~> 0.2)
benchmark (>= 0.1.0)
bundler (>= 1.17.3, < 5.0.0)
bundler (>= 2.4.0, < 5.0.0)
colored (~> 1.2)
commander (~> 4.6)
csv (~> 3.3)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
excon (>= 0.71.0, < 1.0.0)
excon (>= 0.71.0, < 2.0.0)
faraday (~> 1.0)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
@@ -96,14 +97,15 @@ GEM
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-env (>= 1.6.0, <= 2.1.1)
google-cloud-env (>= 1.6.0, < 2.3.0)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
jwt (>= 2.10.3, < 4)
logger (>= 1.6, < 2.0)
mini_magick (>= 4.9.4, < 5.0.0)
multi_json (~> 1.12)
multipart-post (>= 2.0.0, < 3.0.0)
mutex_m (~> 0.3)
naturally (~> 2.2)
@@ -124,7 +126,7 @@ GEM
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-sirp (1.1.0)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.100.0)
google-apis-androidpublisher_v3 (0.104.0)
google-apis-core (>= 0.15.0, < 2.a)
google-apis-core (0.18.0)
addressable (~> 2.5, >= 2.5.1)
@@ -134,19 +136,20 @@ GEM
mutex_m
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
google-apis-iamcredentials_v1 (0.27.0)
google-apis-iamcredentials_v1 (0.28.0)
google-apis-core (>= 0.15.0, < 2.a)
google-apis-playcustomapp_v1 (0.17.0)
google-apis-playcustomapp_v1 (0.18.0)
google-apis-core (>= 0.15.0, < 2.a)
google-apis-storage_v1 (0.62.0)
google-apis-storage_v1 (0.64.0)
google-apis-core (>= 0.15.0, < 2.a)
google-cloud-core (1.8.0)
google-cloud-core (1.9.0)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (2.1.1)
google-cloud-env (2.2.2)
base64 (~> 0.2)
faraday (>= 1.0, < 3.a)
google-cloud-errors (1.6.0)
google-cloud-storage (1.60.0)
google-cloud-errors (1.7.0)
google-cloud-storage (1.62.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-core (>= 0.18, < 2)
@@ -155,12 +158,14 @@ GEM
google-cloud-core (~> 1.6)
googleauth (~> 1.9)
mini_mime (~> 1.0)
googleauth (1.11.2)
google-logging-utils (0.2.0)
googleauth (1.17.1)
faraday (>= 1.0, < 3.a)
google-cloud-env (~> 2.1)
jwt (>= 1.4, < 3.0)
multi_json (~> 1.11)
google-cloud-env (~> 2.2)
google-logging-utils (~> 0.1)
jwt (>= 1.4, < 4.0)
os (>= 0.9, < 2.0)
pstore (~> 0.1)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.8)
@@ -168,8 +173,8 @@ GEM
httpclient (2.9.0)
mutex_m
jmespath (1.6.2)
json (2.19.5)
jwt (2.10.2)
json (2.21.1)
jwt (3.2.0)
base64
logger (1.7.0)
mini_magick (4.13.2)
@@ -179,28 +184,28 @@ GEM
mutex_m (0.3.0)
nanaimo (0.4.0)
naturally (2.3.0)
nkf (0.2.0)
nkf (0.3.0)
optparse (0.8.1)
os (1.1.4)
ostruct (0.6.3)
plist (3.7.2)
pstore (0.2.1)
public_suffix (7.0.5)
rake (13.4.2)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.4.1)
retriable (3.8.0)
rexml (3.4.4)
rouge (3.28.0)
ruby2_keywords (0.0.5)
rubyzip (2.4.1)
security (0.1.5)
signet (0.21.0)
signet (0.22.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 4.0)
multi_json (~> 1.10)
simctl (1.6.10)
CFPropertyList
naturally
@@ -215,12 +220,14 @@ GEM
uber (0.1.0)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
xcodeproj (1.27.0)
xcodeproj (1.28.1)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
base64
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.4.0)
nkf
rexml (>= 3.3.6, < 4.0)
xcpretty (0.4.1)
rouge (~> 3.28.0)

View File

@@ -25,8 +25,8 @@ android {
targetSdk {
version = release(37)
}
versionCode = 166
versionName = "2.42.1"
versionCode = 167
versionName = "2.43.0"
vectorDrawables.useSupportLibrary = true
multiDexEnabled = true

View File

@@ -101,6 +101,9 @@
android:name=".cardview.LoyaltyCardViewActivity"
android:exported="true"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".cardimageview.LoyaltyCardImageViewActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".LoyaltyCardEditActivity"
android:exported="true"

View File

@@ -76,6 +76,7 @@ public class DBHelper extends SQLiteOpenHelper {
public enum LoyaltyCardOrder {
Alpha,
LastAdded,
LastUsed,
ValidFrom,
Expiry
@@ -1089,6 +1090,10 @@ public class DBHelper extends SQLiteOpenHelper {
return LoyaltyCardDbIds.STORE;
}
if (order == LoyaltyCardOrder.LastAdded) {
return LoyaltyCardDbIds.ID;
}
if (order == LoyaltyCardOrder.LastUsed) {
return LoyaltyCardDbIds.LAST_USED;
}
@@ -1105,8 +1110,8 @@ public class DBHelper extends SQLiteOpenHelper {
}
private static String getDbDirection(LoyaltyCardOrder order, LoyaltyCardOrderDirection direction) {
if (order == LoyaltyCardOrder.LastUsed) {
// We want the default sorting to put the most recently used first
if (order == LoyaltyCardOrder.LastAdded || order == LoyaltyCardOrder.LastUsed) {
// We want the default sorting to put the most recently added/used first
return direction == LoyaltyCardOrderDirection.Descending ? "ASC" : "DESC";
}

View File

@@ -105,6 +105,12 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
inputHolder.setNoteField(null);
}
if (mLoyaltyCardListDisplayOptions.showingCardId() && !loyaltyCard.cardId.isEmpty()) {
inputHolder.setExtraField(inputHolder.mCardIdField, loyaltyCard.cardId, null, showDivider);
} else {
inputHolder.setExtraField(inputHolder.mCardIdField, null, null, false);
}
if (mLoyaltyCardListDisplayOptions.showingBalance() && !loyaltyCard.balance.equals(new BigDecimal("0"))) {
inputHolder.setExtraField(inputHolder.mBalanceField, Utils.formatBalance(mContext, loyaltyCard.balance, loyaltyCard.balanceType), null, showDivider);
} else {
@@ -211,7 +217,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
public class LoyaltyCardListItemViewHolder extends RecyclerView.ViewHolder {
public TextView mCardText, mStoreField, mNoteField, mBalanceField, mValidFromField, mExpiryField;
public TextView mCardText, mStoreField, mNoteField, mCardIdField, mBalanceField, mValidFromField, mExpiryField;
public ImageView mCardIcon, mTickIcon;
public MaterialCardView mRow;
public ConstraintLayout mStar, mArchived;
@@ -224,6 +230,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
mDivider = loyaltyCardLayoutBinding.infoDivider;
mStoreField = loyaltyCardLayoutBinding.store;
mNoteField = loyaltyCardLayoutBinding.note;
mCardIdField = loyaltyCardLayoutBinding.cardId;
mBalanceField = loyaltyCardLayoutBinding.balance;
mValidFromField = loyaltyCardLayoutBinding.validFrom;
mExpiryField = loyaltyCardLayoutBinding.expiry;

View File

@@ -35,6 +35,7 @@ public class LoyaltyCardListDisplayOptionsManager {
private boolean mShowNameBelowThumbnail;
private boolean mShowNote;
private boolean mShowCardId;
private boolean mShowBalance;
private boolean mShowValidity;
private boolean mShowArchivedCards;
@@ -50,6 +51,7 @@ public class LoyaltyCardListDisplayOptionsManager {
Context.MODE_PRIVATE);
mShowNameBelowThumbnail = mCardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_name_below_thumbnail), false);
mShowNote = mCardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_note), true);
mShowCardId = mCardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_card_id), false);
mShowBalance = mCardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_balance), true);
mShowValidity = mCardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_validity), true);
mShowArchivedCards = mCardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_archived_cards), true);
@@ -83,6 +85,17 @@ public class LoyaltyCardListDisplayOptionsManager {
return mShowNote;
}
public void showCardId(boolean show) {
mShowCardId = show;
mRefreshCardsCallback.run();
saveDetailState(R.string.sharedpreference_card_details_show_card_id, show);
}
public boolean showingCardId() {
return mShowCardId;
}
public void showBalance(boolean show) {
mShowBalance = show;
mRefreshCardsCallback.run();
@@ -137,6 +150,11 @@ public class LoyaltyCardListDisplayOptionsManager {
showingNote(),
this::showNote
));
displayOptions.add(new LoyaltyCardDisplayOption(
mContext.getString(R.string.show_card_id),
showingCardId(),
this::showCardId
));
displayOptions.add(new LoyaltyCardDisplayOption(
mContext.getString(R.string.show_balance),
showingBalance(),

View File

@@ -0,0 +1,199 @@
package protect.card_locker.cardimageview
import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.os.Bundle
import android.view.WindowManager
import android.widget.Toast
import androidx.activity.OnBackPressedDispatcher
import androidx.activity.compose.setContent
import androidx.annotation.StringRes
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.gestures.detectTapGestures
import androidx.compose.foundation.gestures.rememberTransformableState
import androidx.compose.foundation.gestures.transformable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableFloatStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.IntSize
import protect.card_locker.CatimaComponentActivity
import protect.card_locker.ImageLocationType
import protect.card_locker.R
import protect.card_locker.Utils
import protect.card_locker.compose.CatimaTopAppBar
import protect.card_locker.compose.theme.CatimaTheme
import protect.card_locker.preferences.Settings
class LoyaltyCardImageViewActivity : CatimaComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
fixedEdgeToEdge()
applyWindowPreferences()
val imageLocationType = intent.imageLocationType()
val loyaltyCardId = intent.getIntExtra(BUNDLE_ID, 0)
val bitmap = imageLocationType?.let {
Utils.retrieveCardImage(this, loyaltyCardId, it)
}
if (loyaltyCardId == 0 || imageLocationType == null || bitmap == null) {
Toast.makeText(this, R.string.failedToRetrieveImageFile, Toast.LENGTH_SHORT).show()
finish()
return
}
title = getString(imageLocationType.descriptionRes())
setContent {
CatimaTheme {
LoyaltyCardImageViewScreen(
bitmap = bitmap,
contentDescriptionRes = imageLocationType.descriptionRes(),
onBackPressedDispatcher = onBackPressedDispatcher
)
}
}
}
private fun applyWindowPreferences() {
val settings = Settings(this)
val currentWindow = window ?: return
val attributes = currentWindow.attributes
if (settings.useMaxBrightnessDisplayingBarcode()) {
attributes.screenBrightness = 1F
}
if (settings.keepScreenOn) {
currentWindow.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
currentWindow.attributes = attributes
}
private fun Intent.imageLocationType(): ImageLocationType? {
val name = getStringExtra(BUNDLE_IMAGE_LOCATION_TYPE) ?: return null
return runCatching { ImageLocationType.valueOf(name) }.getOrNull()
}
private fun ImageLocationType.descriptionRes(): Int {
return when (this) {
ImageLocationType.icon -> R.string.thumbnailDescription
ImageLocationType.front -> R.string.frontImageDescription
ImageLocationType.back -> R.string.backImageDescription
}
}
companion object {
const val BUNDLE_ID = "id"
const val BUNDLE_IMAGE_LOCATION_TYPE = "imageLocationType"
@JvmStatic
fun createIntent(
context: Context,
loyaltyCardId: Int,
imageLocationType: ImageLocationType
): Intent {
return Intent(context, LoyaltyCardImageViewActivity::class.java)
.putExtra(BUNDLE_ID, loyaltyCardId)
.putExtra(BUNDLE_IMAGE_LOCATION_TYPE, imageLocationType.name)
}
}
}
@Composable
fun LoyaltyCardImageViewScreen(
bitmap: Bitmap,
@StringRes contentDescriptionRes: Int,
onBackPressedDispatcher: OnBackPressedDispatcher,
) {
var scale by remember { mutableFloatStateOf(1F) }
var offset by remember { mutableStateOf(Offset.Zero) }
var size by remember { mutableStateOf(IntSize.Zero) }
val zoomState = rememberTransformableState { _, zoomChange, panChange, _ ->
val nextScale = (scale * zoomChange).coerceIn(1F, MAX_IMAGE_SCALE)
scale = nextScale
offset = if (nextScale == 1F) {
Offset.Zero
} else {
(offset + panChange).clampTo(size, nextScale)
}
}
Scaffold(
topBar = {
CatimaTopAppBar(
title = stringResource(contentDescriptionRes),
onBackPressedDispatcher = onBackPressedDispatcher
)
}
) { innerPadding ->
Box(
modifier = Modifier
.fillMaxSize()
.padding(innerPadding)
.background(MaterialTheme.colorScheme.background)
.testTag("card_image_zoom")
) {
Image(
bitmap = bitmap.asImageBitmap(),
contentDescription = stringResource(contentDescriptionRes),
contentScale = ContentScale.Fit,
modifier = Modifier
.fillMaxSize()
.onSizeChanged { size = it }
.pointerInput(bitmap) {
detectTapGestures(
onDoubleTap = {
scale = 1F
offset = Offset.Zero
}
)
}
.transformable(zoomState)
.graphicsLayer {
scaleX = scale
scaleY = scale
translationX = offset.x
translationY = offset.y
}
.testTag("card_image")
)
}
}
}
private fun Offset.clampTo(size: IntSize, scale: Float): Offset {
if (size.width == 0 || size.height == 0) {
return this
}
val maxX = size.width * (scale - 1F) / 2F
val maxY = size.height * (scale - 1F) / 2F
return Offset(
x = x.coerceIn(-maxX, maxX),
y = y.coerceIn(-maxY, maxY)
)
}
private const val MAX_IMAGE_SCALE = 5F

View File

@@ -1,6 +1,5 @@
package protect.card_locker.cardview;
import android.content.ActivityNotFoundException;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Intent;
@@ -34,7 +33,6 @@ import androidx.activity.OnBackPressedCallback;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.FileProvider;
import androidx.core.graphics.BlendModeColorFilterCompat;
import androidx.core.graphics.BlendModeCompat;
import androidx.core.graphics.ColorUtils;
@@ -44,7 +42,6 @@ import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.snackbar.Snackbar;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.nio.charset.Charset;
@@ -53,6 +50,7 @@ import java.util.Arrays;
import java.util.List;
import protect.card_locker.*;
import protect.card_locker.cardimageview.LoyaltyCardImageViewActivity;
import protect.card_locker.databinding.LoyaltyCardViewLayoutBinding;
import protect.card_locker.preferences.Settings;
import protect.card_locker.preferences.SettingsActivity;
@@ -136,46 +134,27 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
return;
}
// If this is an image, open it in the gallery.
openImageInGallery(imageType);
openImage(imageType);
}
private void openImageInGallery(LoyaltyCardImageType imageType) {
File file = null;
private void openImage(LoyaltyCardImageType imageType) {
switch (imageType) {
case NONE:
return;
case ICON:
file = Utils.retrieveCardImageAsFile(this, loyaltyCardId, ImageLocationType.icon);
startImageActivity(ImageLocationType.icon);
break;
case IMAGE_FRONT:
file = Utils.retrieveCardImageAsFile(this, loyaltyCardId, ImageLocationType.front);
startImageActivity(ImageLocationType.front);
break;
case IMAGE_BACK:
file = Utils.retrieveCardImageAsFile(this, loyaltyCardId, ImageLocationType.back);
startImageActivity(ImageLocationType.back);
break;
case BARCODE:
Toast.makeText(this, R.string.barcodeLongPressMessage, Toast.LENGTH_SHORT).show();
return;
default:
Log.w(TAG, "openImage called with unsupported image type!");
}
}
// Do nothing if there is no file
if (file == null) {
Toast.makeText(this, R.string.failedToRetrieveImageFile, Toast.LENGTH_SHORT).show();
return;
}
try {
Intent intent = new Intent(Intent.ACTION_VIEW)
.setDataAndType(FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID, file), "image/*")
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
} catch (ActivityNotFoundException e) {
// Display a toast message if an image viewer is not installed on device
Toast.makeText(this, R.string.failedLaunchingPhotoPicker, Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
private void startImageActivity(ImageLocationType imageLocationType) {
startActivity(LoyaltyCardImageViewActivity.createIntent(this, loyaltyCardId, imageLocationType));
}
@Override
@@ -291,7 +270,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
binding.iconContainer.setOnClickListener(view -> {
if (loyaltyCard.getImageThumbnail(this) != null) {
openImageInGallery(LoyaltyCardImageType.ICON);
openImage(LoyaltyCardImageType.ICON);
} else {
Toast.makeText(LoyaltyCardViewActivity.this, R.string.icon_header_click_text, Toast.LENGTH_LONG).show();
}
@@ -887,9 +866,9 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
int accessibilityClickAction;
LoyaltyCardImageType currentImageType = cardNavigator.getCurrent();
if (currentImageType == LoyaltyCardImageType.IMAGE_FRONT) {
accessibilityClickAction = R.string.openFrontImageInGalleryApp;
accessibilityClickAction = R.string.zoomFrontImage;
} else if (currentImageType == LoyaltyCardImageType.IMAGE_BACK) {
accessibilityClickAction = R.string.openBackImageInGalleryApp;
accessibilityClickAction = R.string.zoomBackImage;
} else {
accessibilityClickAction = R.string.moveBarcodeToTopOfScreen;
}

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M2,6h2v12L2,18L2,6zM5,6h1v12L5,18L5,6zM7,6h3v12L7,18L7,6zM11,6h1v12h-1L11,6zM13,6h2v12h-2L13,6zM16,6h2v12h-2L16,6zM19,6h1v12h-1L19,6zM21,6h1v12h-1L21,6z"/>
</vector>

View File

@@ -158,10 +158,31 @@
android:visibility="gone"
tools:visibility="visible"
app:layout_constraintTop_toBottomOf="@+id/note"
app:layout_constraintBottom_toTopOf="@+id/balance"
app:layout_constraintBottom_toTopOf="@+id/cardId"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<TextView
android:id="@+id/cardId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="4dp"
android:textAppearance="?attr/textAppearanceBody2"
app:drawableLeftCompat="@drawable/ic_card_id_24dp"
android:drawablePadding="4dp"
android:maxLines="1"
android:ellipsize="end"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@+id/info_divider"
app:layout_constraintBottom_toTopOf="@+id/balance"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible"
tools:text="1234567890"/>
<TextView
android:id="@+id/balance"
android:layout_width="match_parent"
@@ -174,7 +195,7 @@
app:drawableLeftCompat="@drawable/ic_baseline_payments_24"
android:drawablePadding="4dp"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@+id/info_divider"
app:layout_constraintTop_toBottomOf="@+id/cardId"
app:layout_constraintBottom_toTopOf="@+id/validFrom"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -19,8 +19,8 @@ Edgars Andersons
Liner Seven
Altonss
Fjuro
GitSpoon
Joel A
GitSpoon
Michael Moroni
Priit Jõerüüt
Eric
@@ -28,16 +28,16 @@ GM
laralem
Petr Novák
Taco
Vasilis
pfaffenrodt
nadiafekihahmed
Milo Ivir
nadiafekihahmed
pfaffenrodt
Vasilis
Aayush Gupta
Scrambled777
josé m
Giovanni Donisi
Nyatsuki
ikanakova
Nyatsuki
Giovanni Donisi
Kachelkaiser
Jiri Grönroos
HudobniVolk
@@ -48,20 +48,20 @@ Traductor
Samantaz Fox
mdvhimself
AMIR-G98
Feike
Arno-github
Cliff Heraldo
Sergio Paredes
Ankit Tiwari
Feike
Arno-github
Jose Delvani
Robin
Milan Šalka
damjang
Gideon
Govindgopalyadav
Skrripy
huuhaa
Robin
தமிழ்நேரம்
huuhaa
Skrripy
Govindgopalyadav
Gideon
waffshappen
Marnick L'Eau
JungHee Lee
@@ -73,13 +73,14 @@ Quentin PAGÈS
Projjal Moitra
Aliaksandr Trush
e-michalak
தமிழ் நேரம்
hajertabbane
inavleb
Ziad OUALHADJ
Robin Liu
Ricky Tigg
Renko
Denis Shilin
Renko
Ricky Tigg
Robin Liu
Ziad OUALHADJ
inavleb
しいたけ
Alexander Ivanov
Miha Frangež
@@ -95,11 +96,11 @@ Andre Costa
arshbeerSingh
Augustin LAVILLE
Freddo espresso
Govind S Nair
Kim Seohyun
echo r"0xX4H" | rev
rudy3
Michael Gangolf
Peter Dave Hello
PRATHAMESH BHAGAT
Michael Gangolf
rudy3
echo r"0xX4H" | rev
Kim Seohyun
Govind S Nair
Thomas Bertels

View File

@@ -2,21 +2,21 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
<string name="action_search">بحث</string>
<string name="action_add">إضافة</string>
<string name="noGiftCards">اضغط على زر + لإضافة بطاقة، أو استورد من خلال قائمة ⋮</string>
<string name="noGiftCards">انقر على زر + لإضافة بطاقة، أو استوردها من قائمة ⋮</string>
<string name="noMatchingGiftCards">لا توجد نتائج. حاول تغيير بحثك.</string>
<string name="storeName">اسم</string>
<string name="storeName">الاسم</string>
<string name="note">ملاحظة</string>
<string name="cardId">معرّف البطاقة</string>
<string name="barcodeType">نوع الباركود</string>
<string name="noBarcode">لا يوجد باركود</string>
<string name="star">إضافة إلى المفضّلة</string>
<string name="unstar">حذف من المفضّلة</string>
<string name="star">إضافة إلى المفضلة</string>
<string name="unstar">إزالة من المفضلة</string>
<string name="cancel">إلغاء</string>
<string name="save">حفظ</string>
<string name="edit">تعديل</string>
<string name="delete">حذف</string>
<string name="confirm">تأكيد</string>
<string name="deleteConfirmation">حذف هذه البطاقة نهائيًا؟</string>
<string name="deleteConfirmation">حذف هذه البطاقة نهائيًّا؟</string>
<string name="ok">حسنًا</string>
<string name="share">مشاركة</string>
<string name="sendLabel">إرسال…</string>
@@ -122,15 +122,15 @@
<string name="archived">تمت أرشفة البطاقة</string>
<string name="unarchived">البطاقة غير مؤرشفة</string>
<string name="failedLaunchingPhotoPicker">تعذر العثور على تطبيق معرض مدعوم</string>
<string name="noGiftCardsGroup">أنشئ بعض البطاقات، ثم عيّنهم لهذه المجموعة</string>
<string name="noGiftCardsGroup">أنشئ بعض البطاقات، ثم عيّنها للمجموعة هنا</string>
<string name="deleteTitle">حذف البطاقة</string>
<plurals name="selectedCardCount">
<item quantity="zero"><xliff:g>%d</xliff:g> محدد</item>
<item quantity="zero"><xliff:g>%d</xliff:g> محددة</item>
<item quantity="one"><xliff:g>%d</xliff:g> محددة</item>
<item quantity="two"><xliff:g>%d</xliff:g> محدد</item>
<item quantity="few"><xliff:g>%d</xliff:g> محدد</item>
<item quantity="many"><xliff:g>%d</xliff:g> محدد</item>
<item quantity="other"><xliff:g>%d</xliff:g> محدد</item>
<item quantity="two"><xliff:g>%d</xliff:g> محددتين</item>
<item quantity="few"><xliff:g>%d</xliff:g> محددة</item>
<item quantity="many"><xliff:g>%d</xliff:g> محددة</item>
<item quantity="other"><xliff:g>%d</xliff:g> محددة</item>
</plurals>
<string name="importing">جارٍ الاستيراد…</string>
<string name="exportName">تصدير</string>
@@ -220,7 +220,6 @@
<string name="previousCard">السابق</string>
<string name="nextCard">التالي</string>
<string name="failedToRetrieveImageFile">فشل في استخراج ملف الصورة</string>
<string name="barcodeLongPressMessage">يمكن فتح صور فقط في تطبيق معرض الصور</string>
<string name="failedToOpenUrl">ثبت متصفح ويب أولاً</string>
<string name="welcome">مرحبًا بك في كاتيما</string>
<string name="updateBalanceTitle">كم أنفقت أو استلمت؟</string>
@@ -243,7 +242,6 @@
<string name="permissionReadCardsLabel">اقرأ بطاقات كاتيما</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">حقوق النشر © 2019<xliff:g>%d</xliff:g> Sylvia van Os والمساهمون</string>
<string name="app_copyright_short">حقوق النشر © Sylvia van Os والمساهمون</string>
<string name="openFrontImageInGalleryApp">افتح الصورة الأمامية في تطبيق المعرض</string>
<string name="show_name_below_image_thumbnail">إظهار الاسم أسفل الصورة المصغرة</string>
<string name="show_validity">إظهار الصلاحية</string>
<string name="view_online">مشاهدة حية</string>
@@ -259,7 +257,6 @@
<string name="switchToFrontImage">التبديل إلى الصورة الأمامية</string>
<string name="settings_allow_content_provider_read_summary">سيظل يتعين على التطبيقات طلب الإذن لمنحها حق الوصول</string>
<string name="setBarcodeHeight">ضبط ارتفاع الباركود</string>
<string name="openBackImageInGalleryApp">فتح الصورة الخلفية في تطبيق المعرض</string>
<string name="settings_allow_content_provider_read_title">السماح للتطبيقات الأخرى بالوصول إلى بياناتي</string>
<string name="donate">تبرّع</string>
<string name="show_archived_cards">عرض البطاقات المؤرشفة</string>

View File

@@ -163,7 +163,6 @@
<string name="showMoreInfo">Паказаць інфармацыю</string>
<string name="updateBalance">Абнавіць баланс</string>
<string name="failedToRetrieveImageFile">Не ўдалося атрымаць файл відарысу</string>
<string name="barcodeLongPressMessage">У галерэі можна адкрываць толькі відарысы</string>
<string name="sort_by_name">Назва</string>
<string name="sort_by_most_recently_used">Частата выкарыстання</string>
<string name="sort_by_valid_from">Дзейнічае ад</string>
@@ -203,7 +202,6 @@
<string name="validFromSentence">Дзейнічае з: <xliff:g>%s</xliff:g></string>
<string name="height">Вышыня</string>
<string name="switchToFrontImage">Пераключыцца на пярэдні відарыс</string>
<string name="openBackImageInGalleryApp">Адкрыць задні відарыс у галерэі</string>
<string name="setBarcodeHeight">Задаць вышыню штрыхкода</string>
<string name="donate">Ахвяраваць</string>
<string name="icon_header_click_text">Доўгі націск для рэдагавання мініяцюры</string>
@@ -288,7 +286,6 @@
<string name="report_error">Паведаміць пра памылку</string>
<string name="failedLaunchingPhotoPicker">Не атрымалася знайсці праграму для галерэі, якая падтрымліваецца</string>
<string name="unsupportedFile">Гэты файл не падтрымліваецца</string>
<string name="openFrontImageInGalleryApp">Адкрыць пярэдні відарыс у галерэі</string>
<string name="field_must_not_be_empty">Поле не павінна быць пустым</string>
<string name="add_manually_warning_title">Рэкамендуецца сканаванне</string>
<string name="errorReadingFile">Не атрымалася прачытаць файл</string>

View File

@@ -198,7 +198,6 @@
<string name="nextCard">Следваща</string>
<string name="failedToOpenUrl">Първо инсталирайте уеб браузър</string>
<string name="welcome">Добре дошли при Катима</string>
<string name="barcodeLongPressMessage">В приложението галерия могат да бъдат отваряни само изображения</string>
<string name="failedToRetrieveImageFile">Не е възможно извличане на изображение</string>
<string name="noCameraPermissionDirectToSystemSetting">За да сканирате щрихкодове с Catima е необходим достъп до камерата. За да промените разрешението докоснете тук.</string>
<string name="updateBalanceTitle">Колко е похарчено или получено?</string>
@@ -218,8 +217,6 @@
<string name="switchToFrontImage">Показване на предната страна</string>
<string name="switchToBackImage">Показване на задната страна</string>
<string name="switchToBarcode">Показване на щрихкода</string>
<string name="openFrontImageInGalleryApp">Отваряне на изображението на предната страна в приложение за преглед за изображения</string>
<string name="openBackImageInGalleryApp">Отваряне на изображението на задната страна в приложение за преглед за изображения</string>
<string name="setBarcodeHeight">Задаване на височина на щрихкода</string>
<string name="donate">Даряване</string>
<string name="icon_header_click_text">Задръжте, за да промените миниатюрата</string>

View File

@@ -193,7 +193,6 @@
<string name="settings_oled_dark">অন্ধকার থিমের জন্য খাঁটি কালো পটভূমি</string>
<string name="setIcon">আইকন সেট করুন</string>
<string name="updateBalance">ব্যালেন্স আপডেট করুন</string>
<string name="barcodeLongPressMessage">গ্যালারি অ্যাপে শুধুমাত্র ছবি খোলা যাবে</string>
<string name="translate_platform">Weblate-এ</string>
<string name="on_google_play">Google Play-তে</string>
<string name="shortcutSelectCard">একটি কার্ড নির্বাচন করুন</string>
@@ -225,8 +224,6 @@
<string name="switchToBackImage">পিছনের ছবিটিতে সুইচ করুন</string>
<string name="switchToFrontImage">সামনের ছবিটিতে সুইচ করুন</string>
<string name="switchToBarcode">বারকোডে সুইচ করুন</string>
<string name="openFrontImageInGalleryApp">সামনের ছবিটি গ্যালারি অ্যাপে খুলুন</string>
<string name="openBackImageInGalleryApp">পিছনের ছবিটি গ্যালারি অ্যাপে খুলুন</string>
<string name="setBarcodeHeight">বারকোডের উচ্চতা সেট করুন</string>
<string name="icon_header_click_text">দীর্ঘক্ষন টাচ করে থাম্বনেইল এডিট করবেন</string>
<string name="show_balance">ব্যালান্স দেখান</string>

View File

@@ -174,7 +174,6 @@
<string name="importLoyaltyCardKeychainMessage">Odaberite svoj izvoz iz Privjeska za ključeve s karticom vjernosti za uvoz.\nKreirajte ga iz menija Uvoz/Izvoz u Privjesku za ključeve s karticom vjernosti pritiskom na Izvoz.</string>
<string name="importVoucherVaultMessage">Odaberite izvoz iz Voucher Vaulta za uvoz. \nKreirajte ga pritiskom na Izvoz u Voucher Vaultu.</string>
<string name="switchToBarcode">Prebaci na barkod</string>
<string name="openFrontImageInGalleryApp">Otvorite prednju sliku u aplikaciji za pregled slika</string>
<string name="switchToBackImage">Prebaci na sliku iz pozadine</string>
<string name="switchToFrontImage">Prebaci na prednju sliku</string>
<string name="height">Visina</string>
@@ -213,7 +212,6 @@
<string name="credits">Zasluge</string>
<string name="version_history">Historija verzija</string>
<string name="sort_by_valid_from">Vrijedi od</string>
<string name="barcodeLongPressMessage">U aplikaciji galerija mogu se otvoriti samo slike</string>
<string name="failedToRetrieveImageFile">Neuspjevam preuzimanje slikovne datoteke</string>
<string name="updateBalance">Ažuriraj stanje</string>
<string name="showMoreInfo">Prikaži informacije</string>
@@ -241,7 +239,6 @@
<string name="group_name_is_empty">Naziv grupe ne smije biti prazan</string>
<string name="group_updated">Grupa ažurirana</string>
<string name="deleteConfirmationGroup">Izbrisati grupu?</string>
<string name="openBackImageInGalleryApp">Otvori sliku pozadi u aplikaciji za pregled slika</string>
<string name="setBarcodeHeight">Postavi visinu barkoda</string>
<string name="donate">Donirajte</string>
<string name="icon_header_click_text">Dugo pritisnite za uređivanje sličice</string>

View File

@@ -72,7 +72,6 @@
<string name="no">No</string>
<string name="sort">Ordenar</string>
<string name="failedToRetrieveImageFile">Ha fallat l\'obtenció del fitxer d\'imatge</string>
<string name="barcodeLongPressMessage">Les imatges només es poden obrir desde la app galeria</string>
<string name="settings_category_title_privacy">Privacitat</string>
<plurals name="deleteCardsTitle">
<item quantity="one">Eliminar <xliff:g>%d</xliff:g> targeta</item>
@@ -167,7 +166,6 @@
<string name="noCardsMessage">Afegeix primer una targeta</string>
<string name="noCardExistsError">No s\'ha pogut trobar aquesta targeta</string>
<string name="failedParsingImportUriError">No s\'ha pogut analitzar l\'URI d\'importació</string>
<string name="openFrontImageInGalleryApp">Obrir la imatge frontal a l\'app de galeria</string>
<string name="settings_use_volume_keys_navigation_summary">Utilitza els botons de volum per canviar la targeta que es mostra</string>
<string name="updateBarcodeQuestionText">Ha canviat el valor ID. Vol actualitzar també el codi de barres per uter utilitzar el mateix valor?</string>
<string name="starred">Preferides</string>
@@ -183,7 +181,6 @@
<string name="on_github">al Github</string>
<string name="include_if_asking_support">Si vol demanar suport tècnic, inclogui la següent informació:</string>
<string name="newBalanceSentence">Nou balanç: <xliff:g>%s</xliff:g></string>
<string name="openBackImageInGalleryApp">Obrir la imatge posterior a l\'app de la galeria</string>
<string name="generic_error_please_retry">Perdoni, alguna cosa ha anat malament, siusplau torni-ho a provar...</string>
<string name="settings_column_count_6">6</string>
<string name="useBackImage">Utilitzar la imatge posterior</string>

View File

@@ -203,7 +203,6 @@
<string name="nextCard">Následující</string>
<string name="failedToOpenUrl">Nejprve nainstalujte webový prohlížeč</string>
<string name="welcome">Vítejte v Catima</string>
<string name="barcodeLongPressMessage">V aplikaci pro galerii mohou být otevírány pouze obrázky</string>
<string name="failedToRetrieveImageFile">Nepodařilo se získat soubor obrázku</string>
<string name="cameraPermissionDeniedTitle">Nepodařilo se získat přístup k fotoaparátu</string>
<string name="importCards">Importovat karty</string>
@@ -223,8 +222,6 @@
<string name="switchToFrontImage">Přepnout na přední obrázek</string>
<string name="switchToBackImage">Přepnout na zadní obrázek</string>
<string name="switchToBarcode">Přepnout na čárový kód</string>
<string name="openFrontImageInGalleryApp">Otevřít přední obrázek v aplikaci prohlížeče obrázků</string>
<string name="openBackImageInGalleryApp">Otevřít zadní obrázek v aplikaci prohlížeče obrázků</string>
<string name="setBarcodeHeight">Nastavit výšku čárového kódu</string>
<string name="donate">Přispět</string>
<string name="icon_header_click_text">Dlouhým stisknutím miniaturu upravíte</string>

View File

@@ -197,7 +197,6 @@
<string name="nextCard">Nächste</string>
<string name="failedToOpenUrl">Bitte installiere zuerst einen Webbrowser</string>
<string name="welcome">Willkommen bei Catima</string>
<string name="barcodeLongPressMessage">In der Galerie können nur Bilder geöffnet werden</string>
<string name="failedToRetrieveImageFile">Bilddatei konnte nicht abgerufen werden</string>
<string name="updateBalanceTitle">Wie viel hast du ausgegeben oder erhalten?</string>
<string name="cameraPermissionDeniedTitle">Kein Zugriff auf die Kamera</string>
@@ -215,8 +214,6 @@
<string name="anyDate">Beliebiges Datum</string>
<string name="icon_header_click_text">Zum Bearbeiten des Vorschaubildes lang drücken</string>
<string name="switchToBarcode">Zum Barcode wechseln</string>
<string name="openFrontImageInGalleryApp">Vorderseite in Bildbetrachter öffnen</string>
<string name="openBackImageInGalleryApp">Rückseite in Bildbetrachter öffnen</string>
<string name="height">Höhe</string>
<string name="switchToFrontImage">Zur Vorderseite wechseln</string>
<string name="switchToBackImage">Zur Rückseite wechseln</string>

View File

@@ -200,7 +200,6 @@
<string name="previousCard">Προηγούμενη</string>
<string name="nextCard">Επόμενη</string>
<string name="updateBalance">Ενημέρωση υπολοίπου</string>
<string name="barcodeLongPressMessage">Μόνο εικόνες μπορούν να ανοιχτούν στην εφαρμογή φωτογραφιών</string>
<string name="noCameraPermissionDirectToSystemSetting">Για να σκανάρετε γραμμωτούς κώδικες, θα χρειαστεί πρόσβαση στην κάμερα από το Catima. Πατήστε εδώ για να δώσετε πρόσβαση.</string>
<string name="importCards">Εισαγωγή καρτών</string>
<string name="updateBalanceHint">Εισάγετε ποσό</string>
@@ -219,11 +218,9 @@
<string name="switchToBarcode">Μετάβαση σε γραμμωτό κώδικα</string>
<string name="validFromSentence">Ισχύει από: <xliff:g>%s</xliff:g></string>
<string name="permissionReadCardsLabel">Διαβάστε τις κάρτες Catima</string>
<string name="openBackImageInGalleryApp">Ανοίξτε την οπίσθια εικόνα στη συλλογή εικόνων</string>
<string name="permissionReadCardsDescription">Διάβασε τις Κάρτες σου Catima και όλες τους τις λεπτομέρειες, συμπεριλαμβανομένων των σημειώσεων και των εικόνων</string>
<string name="donate">Δωρεά</string>
<string name="icon_header_click_text">Πατήστε παρατεταμένα για επεξεργασία του εικονιδίου</string>
<string name="openFrontImageInGalleryApp">Ανοίξτε την εμπρόσθια εικόνα στη συλλογή εικόνων</string>
<string name="storageReadPermissionRequired">Δικαίωμα ανάγνωσης του χώρου αποθήκευσης απαραίτητο για αυτήν την ενέργεια…</string>
<string name="validFromDate">Ισχύει από</string>
<string name="anyDate">Οποιαδήποτε ημερομηνία</string>

View File

@@ -165,7 +165,6 @@
<string name="chooseImportType">Importi datumojn de</string>
<string name="importCatima">Importi el Catima</string>
<string name="updateBalance">Ĝisdatigi saldon</string>
<string name="barcodeLongPressMessage">Nur bildoj povas esti malfermitaj en la galeria apo</string>
<string name="sort_by_name">Nomo</string>
<string name="sort_by_most_recently_used">Plej laste uzitaj</string>
<string name="sort_by_expiry">Dato de eksvalidiĝo</string>
@@ -180,8 +179,6 @@
<string name="newBalanceSentence">Nova saldo: <xliff:g>%s</xliff:g></string>
<string name="anyDate">Iam ajn</string>
<string name="switchToFrontImage">Ŝanĝi al antaŭa bildo</string>
<string name="openFrontImageInGalleryApp">Malfermi la antaŭan bildon en galeria apo</string>
<string name="openBackImageInGalleryApp">Malfermi la malantaŭan bildon en galeria apo</string>
<string name="show_name_below_image_thumbnail">Montri nomon sub la bildeto</string>
<string name="show_note">Montri noton</string>
<string name="settings_category_title_cards">Kartoj</string>

View File

@@ -182,7 +182,6 @@
<string name="selectColor">Seleccionar color</string>
<string name="sort">Ordenar</string>
<string name="app_contributors">Hecho posible por: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="barcodeLongPressMessage">Solo se puede abrir imágenes en la aplicación de galería</string>
<string name="yes">Si</string>
<string name="no">No</string>
<string name="passwordRequired">Ingresa la contraseña</string>
@@ -236,8 +235,6 @@
<string name="switchToFrontImage">Cambiar a imagen frontal</string>
<string name="switchToBackImage">Cambiar a imagen trasera</string>
<string name="switchToBarcode">Cambiar a código de barras</string>
<string name="openFrontImageInGalleryApp">Abrir imagen frontal en aplicación para ver imágenes</string>
<string name="openBackImageInGalleryApp">Abrir imagen trasera en galería de fotos</string>
<string name="setBarcodeHeight">Definir altura de código de barras</string>
<string name="show_name_below_image_thumbnail">Mostrar nombre de la imagen bajo su miniatura</string>
<string name="show_balance">Mostrar saldo</string>

View File

@@ -16,7 +16,7 @@
<string name="addCardTitle">Añadir tarjeta</string>
<string name="scanCardBarcode">Escanear código de barras</string>
<string name="cardShortcut">Atajo de tarjeta</string>
<string name="noCardsMessage">Añada una tarjeta primero</string>
<string name="noCardsMessage">Añada una primera tarjeta</string>
<string name="noCardExistsError">No se ha podido encontrar esa tarjeta</string>
<string name="importExport">Importar/Exportar</string>
<string name="exportName">Exportar</string>
@@ -25,7 +25,7 @@
<string name="importFailedTitle">Falló la importación</string>
<string name="importFailed">No se ha podido realizar la importación</string>
<string name="exportSuccessfulTitle">Exportado</string>
<string name="exportFailedTitle">Falló la exportación</string>
<string name="exportFailedTitle">Exportación incorrecta</string>
<string name="exportFailed">No se han podido exportar</string>
<string name="importing">Importando…</string>
<string name="exporting">Exportando…</string>
@@ -47,7 +47,7 @@
<string name="settings_theme">Tema</string>
<string name="app_copyright_old">Basado en Loyalty Card Keychain
\nderechos de autor © 2016-2020 de Branden Archer</string>
<string name="exportOptionExplanation">Los datos se guardarán en la ubicación que elija</string>
<string name="exportOptionExplanation">Los datos serán escritos en el lugar que elija</string>
<string name="failedParsingImportUriError">No se pudo procesar el URI de importación</string>
<string name="share">Compartir</string>
<string name="barcodeType">Tipo de código de barras</string>
@@ -205,13 +205,12 @@
</plurals>
<string name="starred">Estrellado</string>
<string name="failedToRetrieveImageFile">No se pudo recuperar el archivo de imagen</string>
<string name="barcodeLongPressMessage">Solo se pueden abrir imágenes en la aplicación de galería</string>
<string name="updateBalanceTitle">¿Cuánto has gastado o recibido?</string>
<string name="currentBalanceSentence">Saldo actual: <xliff:g>%s</xliff:g></string>
<string name="noCameraPermissionDirectToSystemSetting">Para escanear códigos de barras, Catima necesitará acceso a su cámara. Toque aquí para cambiar la configuración de sus permisos.</string>
<string name="noCameraPermissionDirectToSystemSetting">Para escanear códigos de barras, Catima necesitará acceso a su cámara. Toque aquí para cambiar los ajustes de su permiso.</string>
<string name="updateBalanceHint">Introduzca el importe</string>
<string name="newBalanceSentence">Nuevo balance: <xliff:g>%s</xliff:g></string>
<string name="cameraPermissionDeniedTitle">No se pudo acceder a la cámara</string>
<string name="cameraPermissionDeniedTitle">No pudo acceder a la cámara</string>
<string name="updateBalance">Actualizar el balance</string>
<string name="importCards">Importar tarjetas</string>
<string name="storageReadPermissionRequired">Se necesita permiso para leer el almacenamiento para esta acción…</string>
@@ -222,8 +221,6 @@
<string name="validFromSentence">Válido desde: <xliff:g>%s</xliff:g></string>
<string name="height">Alto</string>
<string name="switchToFrontImage">Cambiar a imagen frontal</string>
<string name="openFrontImageInGalleryApp">Abrir imagen frontal en la aplicación de la galería</string>
<string name="openBackImageInGalleryApp">Abrir imagen trasera en la aplicación de visor de imagen</string>
<string name="setBarcodeHeight">Ajustar la altura del código de barras</string>
<string name="donate">Donar</string>
<string name="switchToBarcode">Cambiar a código de barras</string>
@@ -234,7 +231,7 @@
<string name="show_validity">Mostrar la validez</string>
<string name="show_balance">Mostrar el saldo</string>
<string name="permissionReadCardsLabel">Leer Tarjetas Catima</string>
<string name="permissionReadCardsDescription">leer tus tarjetas Catima y todos sus detalles, incluidas notas e imágenes</string>
<string name="permissionReadCardsDescription">lea sus tarjetas Catima y todos sus detalles, incluyendo notas e imágenes</string>
<string name="settings_allow_content_provider_read_title">Permite a otras aplicaciones acceder a mis datos</string>
<string name="settings_display_barcode_max_brightness_summary">Necesario para que funcione en algunos escáneres</string>
<string name="settings_keep_screen_on_summary">Deshabilita el tiempo de espera de la pantalla mientras se ve una tarjeta</string>

View File

@@ -118,7 +118,6 @@
<string name="updateBarcodeQuestionTitle">Kas uuendame triipkoodi väärtust?</string>
<string name="yes">Jah</string>
<string name="no">Ei</string>
<string name="barcodeLongPressMessage">Galeriirakenduses saad avada vaid pilte</string>
<string name="sort_by_most_recently_used">Viimati kasutatud</string>
<string name="sort_by_expiry">Aegumine</string>
<string name="reverse">…tagurpidi järjekorras</string>
@@ -230,8 +229,6 @@
<string name="switchToFrontImage">Vaata esikülje pilti</string>
<string name="switchToBackImage">Vaata tagakülje pilti</string>
<string name="switchToBarcode">Vaata triipkoodi</string>
<string name="openFrontImageInGalleryApp">Ava esikülje pilt pildivalijas</string>
<string name="openBackImageInGalleryApp">Ava tagakülje pilt pildivalijas</string>
<string name="setBarcodeHeight">Määra triipkoodi kõrgus</string>
<string name="donate">Toeta rahaliselt</string>
<string name="icon_header_click_text">Pisipildi muutmiseks vajuta pikalt</string>

View File

@@ -139,7 +139,7 @@
<string name="group_updated">گروه به روز شد</string>
<string name="all">همه</string>
<string name="deleteConfirmationGroup">حذف گروه؟</string>
<string name="failedOpeningFileManager">ابتدا یک مدیریت فایل نصب کنید.</string>
<string name="failedOpeningFileManager">نمی توان مدیر پرونده را باز کرد</string>
<string name="moveUp">به بالا حرکت کن</string>
<string name="moveDown">به پایین حرکت کن</string>
<string name="leaveWithoutSaveConfirmation">بدون ذخیره ترک می‌کنید؟</string>
@@ -179,7 +179,7 @@
<string name="importCards">واردات کارت ها</string>
<string name="height">ارتفاع</string>
<string name="add_manually_warning_message">برای برخی از فروشگاه‌ها، مقدار بارکد با عدد نوشته شده روی کارت متفاوت است. به همین دلیل، وارد کردن دستی بارکد ممکن است همیشه کار نکند. اکیداً توصیه می‌شود که به جای آن، بارکد را با دوربین خود اسکن کنید. آیا هنوز می‌خواهید ادامه دهید؟</string>
<string name="generic_error_please_retry">ببخشید، مشکلی پیش آمده، لطفا دوباره امتحان کنید...</string>
<string name="generic_error_please_retry">مشکلی پیش آمده</string>
<string name="welcome">یه کتیما خوش آمدید</string>
<string name="chooseValidFromDate">مقداری درست از تاریخ برگزینید</string>
<string name="intent_import_card_from_url_share_multiple_text">می‌خواهم چند کارت به شما بدهم</string>
@@ -191,7 +191,7 @@
<string name="no">نه</string>
<string name="updateBarcodeQuestionTitle">مقدار بارکد را به‌روز می‌کنید؟</string>
<string name="updateBarcodeQuestionText">شما شناسه را تغییر دادید. می‌خواهید بارکد را هم به‌روز کنید تا همین مقدار را به‌کار ببرید؟</string>
<string name="failedGeneratingShareURL">نتوانستم آدرس هم‌رسانی‌پذیر بسازم. لطفن این را گزارش کنید.</string>
<string name="failedGeneratingShareURL">نتوانستم نشانی هم‌رسانی‌پذیر بسازم.</string>
<string name="turn_flashlight_on">چراغ‌قوه را روشن کنید</string>
<string name="settings_locale">زبان</string>
<string name="settings_oled_dark">پس‌زمینه‌ی یک‌دست سیاه برای حالت تاریک</string>
@@ -209,11 +209,10 @@
<string name="wrongValueForBarcodeType">مقدار برای نوع بارکد برگزیده درست نیست</string>
<string name="setBackImage">عکس پشتِ‌سر را بگذارید</string>
<string name="removeImage">عکس را برچینید</string>
<string name="passwordRequired">لطفا گذرواژه را وارد کنید</string>
<string name="passwordRequired">گذرواژه را وارد کنید</string>
<string name="previousCard">پیشین</string>
<string name="turn_flashlight_off">چراغ‌قوه را خاموش کنید</string>
<string name="updateBalance">به‌روزرسانی موجودی</string>
<string name="barcodeLongPressMessage">تنها عکس می‌تواند در گالری برنامه باز شود</string>
<string name="sort_by_name">نام</string>
<string name="sort_by_most_recently_used">به‌تازگی استفاده‌شده</string>
<string name="sort_by_expiry">انقضا</string>
@@ -221,7 +220,6 @@
<string name="include_if_asking_support">اگر می‌خواهید پشتیبانی درخواست کنید، اطلاعات زیر را پر کنید:</string>
<string name="unarchive">برچیدن بایگانی</string>
<string name="switchToBackImage">به عکس پشتِ‌سر جابه‌جا کنید</string>
<string name="openBackImageInGalleryApp">عکس پشتِ‌سر را در برنامه‌ی گالری باز کنید</string>
<string name="setBarcodeHeight">ارتفاع بارگد را بگمارید</string>
<string name="donate">کمک مالی کنید</string>
<string name="icon_header_click_text">برای ویرایش قاب پیش‌نمایه فشار داده و نگه‌دارید</string>
@@ -235,7 +233,7 @@
<string name="settings_column_count_4">۴</string>
<string name="settings_column_count_5">۵</string>
<string name="settings_column_count_6">۶</string>
<string name="failedLaunchingPhotoPicker">نتوانستم یک برنامه‌ی گالری پشتیبانی‌شده بیابم</string>
<string name="failedLaunchingPhotoPicker">نتوانستم یک برنامه‌ی انتخاب تصویر پشتیبانی‌شده بیابم</string>
<string name="show_balance">موجودی را نشان دهید</string>
<string name="settings_column_count_landscape">ستون‌ها در حالت لنداسکیپ</string>
<string name="settings_column_count_1">۱</string>
@@ -265,7 +263,6 @@
<string name="failedToOpenUrl">نخست یک مرورگر وب نصب کنید</string>
<string name="updateBalanceTitle">چقدر خرج یا دریافت کردید؟</string>
<string name="switchToBarcode">به بارکد جابه‌جا کنید</string>
<string name="openFrontImageInGalleryApp">عکس روبه‌رو را در برنامه‌ی گالری باز کنید</string>
<string name="add_a_card_in_a_different_way">یک کارت به روشی متفاوت بیافزایید</string>
<string name="takePhoto">عکس بگیرید</string>
<string name="settings_column_count_7">۷</string>
@@ -286,4 +283,8 @@
<string name="addFromPkpass">یک فایل دفترچه حساب (.pkpass) انتخاب کنید</string>
<string name="noCameraFoundGuideText">به نظر نمی‌رسد دستگاه شما دوربین داشته باشد. اگر دارد، دستگاه را مجدداً راه‌اندازی کنید. در غیر این صورت، از دکمه گزینه‌های بیشتر در زیر برای افزودن بارکد به روش دیگری استفاده کنید.</string>
<string name="card_list_widget_empty">بعد از اینکه چند کارت وفاداری در کاتیما اضافه کردید، آنها اینجا ظاهر می‌شوند. اگر کارت دارید، مطمئن شوید که همه آنها بایگانی نشده‌اند.</string>
<string name="card_list_widget_name">فهرست کارت</string>
<string name="cardWithNumber">کارت <xliff:g>%d</xliff:g></string>
<string name="cardWithNumberAndLocale">کارت <xliff:g>%d</xliff:g> (<xliff:g>%s</xliff:g>)</string>
<string name="pleaseDoNotRotateTheDevice">لطفا دستگاه‌تان را نچرخوانید، زیرا کار در حال انجام را لغو میکند</string>
</resources>

View File

@@ -200,7 +200,6 @@
<string name="welcome">Tervetuloa Catimaan</string>
<string name="updateBalanceTitle">Kuinka paljon kulutit tai tienasit?</string>
<string name="updateBalanceHint">Syötä summa</string>
<string name="barcodeLongPressMessage">Vain kuvia on mahdollista avata galleriasovelluksessa</string>
<string name="archive">Arkistoi</string>
<string name="importCards">Tuo kortteja</string>
<string name="failedToRetrieveImageFile">Kuvatiedoston noutaminen epäonnistui</string>
@@ -223,14 +222,12 @@
<string name="height">Korkeus</string>
<string name="switchToFrontImage">Vaihda etukuvaan</string>
<string name="switchToBarcode">Vaihda viivakoodiin</string>
<string name="openFrontImageInGalleryApp">Avaa etukuva kuvankatselusovelluksessa</string>
<string name="settings_display_barcode_max_brightness_summary">Välttämätön, jotta jotkin skannerit toimivat</string>
<string name="settings_keep_screen_on_summary">Poistaa näytön aikakatkaisun korttia katsellessa</string>
<string name="settings_disable_lockscreen_while_viewing_card_summary">Poistaa näyttölukituksen käytöstä korttia katsellessa</string>
<string name="settings_allow_content_provider_read_title">Salli muiden sovellusten käyttää omaa dataa</string>
<string name="settings_oled_dark_summary">Vähentää akun käyttöä OLED-näytöillä</string>
<string name="switchToBackImage">Vaihda takakuvaan</string>
<string name="openBackImageInGalleryApp">Avaa takakuva kuvankatselusovelluksessa</string>
<string name="setBarcodeHeight">Aseta viivakoodin korkeus</string>
<string name="icon_header_click_text">Pitkä painallus pikkukuvan muokkaamiseksi</string>
<string name="show_name_below_image_thumbnail">Näytä nimi pikkukuvan alapuolella</string>

View File

@@ -203,7 +203,6 @@
<string name="previousCard">Précédent</string>
<string name="failedToOpenUrl">Installez d\'abord un navigateur web</string>
<string name="welcome">Bienvenue dans Catima</string>
<string name="barcodeLongPressMessage">Seules les images peuvent être ouvertes dans lapplication galerie</string>
<string name="failedToRetrieveImageFile">Impossible de récupérer le fichier image</string>
<string name="currentBalanceSentence">Solde actuel : <xliff:g>%s</xliff:g></string>
<string name="updateBalanceHint">Entrez le montant</string>
@@ -223,8 +222,6 @@
<string name="switchToFrontImage">Passer à l\'image avant</string>
<string name="switchToBackImage">Passer à l\'image arrière</string>
<string name="switchToBarcode">Passer au code barre</string>
<string name="openFrontImageInGalleryApp">Ouvrir l\'image du recto dans l\'application de visualisation des images</string>
<string name="openBackImageInGalleryApp">Ouvrir l\'image du verso dans l\'application de visualisation des images</string>
<string name="setBarcodeHeight">Définir la hauteur du code-barres</string>
<string name="donate">Faire un don</string>
<string name="icon_header_click_text">Appuyez longuement pour modifier la vignette</string>

View File

@@ -150,7 +150,6 @@
<string name="showMoreInfo">Ver info</string>
<string name="updateBalance">Actualizar saldo</string>
<string name="failedToRetrieveImageFile">Fallou a obtención do ficheiro de imaxe</string>
<string name="barcodeLongPressMessage">Só imaxes que se abren na app de galería</string>
<string name="sort_by_name">Nome</string>
<string name="sort_by_most_recently_used">Usadas recentemente</string>
<string name="sort_by_expiry">Caducidade</string>
@@ -194,8 +193,6 @@
<string name="height">Altura</string>
<string name="switchToFrontImage">Cambiar á imaxe frontal</string>
<string name="switchToBackImage">Cambiar á imaxe posterior</string>
<string name="openFrontImageInGalleryApp">Abrir imaxe frontal no visor de imaxes</string>
<string name="openBackImageInGalleryApp">Abrir imaxe posterior no visor de imaxes</string>
<string name="setBarcodeHeight">Establecer altura do código de barras</string>
<string name="icon_header_click_text">Pulsación longa para editar a miniatura</string>
<string name="show_name_below_image_thumbnail">Mostrar nome debaixo da miniatura</string>

View File

@@ -212,7 +212,6 @@
<string name="version_history">वर्जन तिहास</string>
<string name="archive">पुरालेख/संग्रहित (Archive)</string>
<string name="archived">कार्ड संग्रहीत (Archived)</string>
<string name="barcodeLongPressMessage">गैलरी ऐप में केवल छवियां ही खोली जा सकती हैं</string>
<string name="license">अनुज्ञप्ति (लाइसेंस)</string>
<string name="source_repository">स्रोत रिपोजिटरी</string>
<string name="include_if_asking_support">यदि आप सहायता का अनुरोध करना चाहते हैं, तो निम्नलिखित जानकारी शामिल करें:</string>
@@ -245,8 +244,6 @@
<string name="switchToFrontImage">सामने वाली छवि पर स्विच करें</string>
<string name="switchToBackImage">पिछली छवि पर स्विच करें</string>
<string name="switchToBarcode">बारकोड पर स्विच करें</string>
<string name="openFrontImageInGalleryApp">इमेज दर्शक सामने वाली इमेज खोलें</string>
<string name="openBackImageInGalleryApp">पिछली इमेज खोलें</string>
<string name="setBarcodeHeight">बारकोड ऊंचाई सेट करें</string>
<string name="icon_header_click_text">छोटी छवि (थंबनेल) संपादित करने के लिए देर तक दबाएँ</string>
<string name="enter_card_id">अपने कार्ड पर आईडी नंबर या टेक्स्ट दर्ज करें</string>

View File

@@ -128,8 +128,6 @@
<string name="switchToFrontImage">Prebaci na prednju sliku</string>
<string name="switchToBackImage">Prebaci na stražnju sliku</string>
<string name="switchToBarcode">Prebaci na crtični kod</string>
<string name="openFrontImageInGalleryApp">Otvori prednju sliku u aplikaciji prikazivača slika</string>
<string name="openBackImageInGalleryApp">Otvori stražnju sliku u aplikaciji prikazivača slika</string>
<string name="setBarcodeHeight">Postavi visinu crtičnog koda</string>
<plurals name="selectedCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> odabrana</item>
@@ -159,7 +157,6 @@
<string name="importVoucherVaultMessage">Odaberi tvoj izvoz iz Voucher Vault za uvoz. \nStvori ga u aplikaciji Voucher Vault pritiskom na „Izvoz”.</string>
<string name="failedToRetrieveImageFile">Neuspjelo dohvaćanje slikovne datoteke</string>
<string name="license">Licenca</string>
<string name="barcodeLongPressMessage">U aplikaciji galerije se mogu otvoriiti samo slike</string>
<string name="source_repository">Izvorni repozitorij</string>
<string name="on_github">na GitHubu</string>
<string name="on_google_play">na stranici Google Play</string>

View File

@@ -202,7 +202,6 @@
<string name="newBalanceSentence">Új egyenleg: <xliff:g>%s</xliff:g></string>
<string name="cameraPermissionDeniedTitle">Nem sikerült hozzáférni a kamerához</string>
<string name="failedToRetrieveImageFile">Nem sikerült lekérni a képfájlt</string>
<string name="barcodeLongPressMessage">Csak képek nyithatók meg a galéria alkalmazásban</string>
<string name="unarchived">Kártya archiválása megszüntetve</string>
<string name="welcome">Üdvözöljük a Catimában</string>
<string name="updateBalance">Egyenleg frissítése</string>
@@ -218,8 +217,6 @@
<string name="switchToBackImage">Hátulnézeti képre váltás</string>
<string name="switchToBarcode">Vonalkódra váltás</string>
<string name="donate">Adományozás</string>
<string name="openBackImageInGalleryApp">Hátulnézeti kép megnyitása a galéria alkalmazásban</string>
<string name="openFrontImageInGalleryApp">Elölnézeti kép megnyitása a galéria alkalmazásban</string>
<string name="setBarcodeHeight">Vonalkód magasságának megadása</string>
<string name="icon_header_click_text">Hosszan nyomja meg a miniatűr szerkesztéséhez</string>
<string name="show_note">Megjegyzés megjelenítése</string>

View File

@@ -189,7 +189,6 @@
<string name="archive">Arsip</string>
<string name="archived">Kartu diarsipkan</string>
<string name="failedToRetrieveImageFile">Gagal mengambil file gambar</string>
<string name="barcodeLongPressMessage">Hanya gambar yang dapat dibuka di aplikasi galeri</string>
<string name="unarchive">Ekstrak</string>
<string name="unarchived">Kartu tidak diarsipkan</string>
<string name="options">Opsi</string>
@@ -212,8 +211,6 @@
<string name="switchToFrontImage">Ubah ke depan gambar</string>
<string name="switchToBackImage">Ubah ke belakang gambar</string>
<string name="switchToBarcode">Ubah ke kode batang</string>
<string name="openFrontImageInGalleryApp">Buka gambar depan di aplikasi penampil gambar</string>
<string name="openBackImageInGalleryApp">Buka gambar di aplikasi penampil gambar</string>
<string name="setBarcodeHeight">Atur tinggi kode batang</string>
<string name="donate">Donasi</string>
<string name="show_validity">Tunjukkan validitas</string>
@@ -295,4 +292,9 @@
<string name="nothing_to_copy">Tidak ditemukan nilai</string>
<string name="barcodeEncoding">Pengkodean barcode</string>
<string name="back">Kembali</string>
<string name="settings_disable_nfc_while_viewing_card">Jeda NFC</string>
<string name="settings_disable_nfc_while_viewing_card_summary">Menjeda NFC untuk mencegah pembayaran NFC terpicu saat melihat kartu</string>
<string name="nfc_blocked_while_viewing_card">NFC dijeda</string>
<string name="change_settings">Ubah pengaturan</string>
<string name="nfc_block_system_error">Gagal menjeda NFC</string>
</resources>

View File

@@ -204,7 +204,6 @@
<string name="welcome">Benvenuti su Catima</string>
<string name="failedToOpenUrl">Installa prima un browser web</string>
<string name="failedToRetrieveImageFile">Impossibile ottenere il file dell\'immagine</string>
<string name="barcodeLongPressMessage">Si possono aprire solo immagini dell\'app della galleria</string>
<string name="cameraPermissionDeniedTitle">Impossibile accedere alla fotocamera</string>
<string name="noCameraPermissionDirectToSystemSetting">Per poter scansionare i codici a barre, Catima ha bisogno di accedere alla tua fotocamera. Premi qui per poter cambiare le impostazioni dei permessi.</string>
<string name="updateBalance">Aggiorna bilancio</string>
@@ -223,9 +222,7 @@
<string name="switchToFrontImage">Passa all\'immagine frontale</string>
<string name="switchToBackImage">Passa all\'immagine dietro</string>
<string name="switchToBarcode">Passa al codice a barre</string>
<string name="openFrontImageInGalleryApp">Apri immagine frontale nell\'app per la visualizzazione di immagini</string>
<string name="donate">Dona</string>
<string name="openBackImageInGalleryApp">Apri l\'immagine retro nell\'app per la visualizzazione di immagini</string>
<string name="setBarcodeHeight">Imposta l\'altezza del codice a barre</string>
<string name="icon_header_click_text">Premi a lungo per modificare l\'immagine</string>
<string name="show_note">Mostra nota</string>

View File

@@ -233,7 +233,6 @@
<string name="showMoreInfo">情報を確認</string>
<string name="updateBalance">残高を更新</string>
<string name="failedToRetrieveImageFile">画像ファイルを取得できませんでした</string>
<string name="barcodeLongPressMessage">ギャラリーアプリは画像のみ開けます</string>
<string name="sort_by_valid_from">有効期限</string>
<string name="starred">スター付き</string>
<string name="include_if_asking_support">サポートを依頼する場合、以下の情報を含めて下さい:</string>
@@ -250,8 +249,6 @@
<string name="switchToFrontImage">前面画像へ切り替え</string>
<string name="switchToBackImage">背面画像へ切り替え</string>
<string name="switchToBarcode">バーコードへ切り替え</string>
<string name="openFrontImageInGalleryApp">前面画像を画像ビューワーアプリで開く</string>
<string name="openBackImageInGalleryApp">背面画像を画像ビューワーアプリで開く</string>
<string name="setBarcodeHeight">バーコードの高さを設定</string>
<string name="icon_header_click_text">サムネイルを長押しして編集</string>
<string name="settings_category_title_cards_overview">カードの概要</string>

View File

@@ -37,7 +37,6 @@
<string name="donate">ದಾನ ಮಾಡಿ</string>
<string name="action_more_options">ಹೆಚ್ಚಿನ ಆಯ್ಕೆಗಳು</string>
<string name="add_a_card_in_a_different_way">ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಕಾರ್ಡ್ ಸೇರಿಸಿ</string>
<string name="barcodeLongPressMessage">ಗ್ಯಾಲರಿ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಚಿತ್ರಗಳನ್ನು ಮಾತ್ರ ತೆರೆಯಬಹುದು</string>
<string name="all">ಎಲ್ಲವೂ</string>
<string name="chooseValidFromDate">ದಿನಾಂಕದಿಂದ ಮಾನ್ಯವಾಗಿ ಆಯ್ಕೆಮಾಡಿ</string>
<string name="delete">ಅಳಿಸಿ</string>

View File

@@ -91,7 +91,6 @@
<string name="showMoreInfo">정보 보기</string>
<string name="updateBalance">잔액 업데이트</string>
<string name="failedToRetrieveImageFile">이미지 파일을 검색하지 못했습니다</string>
<string name="barcodeLongPressMessage">갤러리 앱에서는 이미지만 열 수 있습니다</string>
<string name="sort_by_name">이름</string>
<string name="reverse">... 역순으로</string>
<string name="sort_by">정렬 기준</string>
@@ -138,8 +137,6 @@
<string name="group_updated">그룹 업데이트됨</string>
<string name="moveBarcodeToTopOfScreen">바코드를 화면 상단으로 이동</string>
<string name="height"></string>
<string name="openFrontImageInGalleryApp">갤러리 앱에서 전면 이미지 열기</string>
<string name="openBackImageInGalleryApp">갤러리 앱에서 다시 이미지 열기</string>
<string name="setBarcodeHeight">바코드 높이 설정</string>
<string name="setFrontImage">전면 이미지 설정</string>
<plurals name="selectedCardCount">

View File

@@ -191,7 +191,6 @@
</plurals>
<string name="updateBalance">Atnaujinti balansą</string>
<string name="failedToRetrieveImageFile">Nepavyko gauti vaizdo failo</string>
<string name="barcodeLongPressMessage">Galerijos programėlėje galima atidaryti tik vaizdus</string>
<string name="translate_platform">Weblate svetainėje</string>
<string name="shortcutSelectCard">Pasirinkti kortelę</string>
<string name="options">Parinktys</string>
@@ -220,7 +219,6 @@
<string name="importCards">Importuoti korteles</string>
<string name="storageReadPermissionRequired">Šio veiksmo atlikimui reikalinga prieiga prie saugyklos…</string>
<string name="cameraPermissionRequired">Šio veiksmo atlikimui reikalinga prieiga prie kameros…</string>
<string name="openBackImageInGalleryApp">Atidarykite galinį vaizdą galerijos programėlėje</string>
<string name="setBarcodeHeight">Nustatyti brūkšninio kodo aukštį</string>
<string name="validFromDate">Galioja nuo</string>
<string name="anyDate">Bet kuri data</string>
@@ -230,7 +228,6 @@
<string name="switchToBarcode">Perjungti į brūkšninį kodą</string>
<string name="height">Aukštis</string>
<string name="switchToFrontImage">Perjungti į priekinį vaizdą</string>
<string name="openFrontImageInGalleryApp">Atidarykite priekinį vaizdą galerijos programėlėje</string>
<string name="donate">Aukoti</string>
<string name="settings_keep_screen_on_summary">Išjungti ekrano užmigdymą kol peržiūrite kortelę</string>
<string name="manually_enter_barcode_instructions">Įveskite ID numerį arba tekstą ant jūsų kortelės ir paspauskite brūkšninį kodą, kuris atrodo kaip ant jūsų kortelės.</string>

View File

@@ -80,7 +80,6 @@
<string name="never">Nekad</string>
<string name="chooseExpiryDate">Izvēlēties beigu datumu</string>
<string name="failedToRetrieveImageFile">Neizdevās iegūt attēla datni</string>
<string name="barcodeLongPressMessage">Galerijas lietotnē var atvērt tikai attēlus</string>
<string name="sort_by_expiry">Derīgums</string>
<string name="reverse">...apgrieztā secībā</string>
<string name="credits">Pateicības</string>
@@ -215,7 +214,6 @@
<string name="icon_header_click_text">Ilgi piespiest, lai labotu sīktēlu</string>
<string name="anyDate">Jebkurš datums</string>
<string name="height">Augstums</string>
<string name="openBackImageInGalleryApp">Atvērt aizmugures attēlu attēlu skatītāja lietotnē</string>
<string name="donate">Ziedot</string>
<string name="field_must_not_be_empty">Lauks nedrīkst būt tukšs</string>
<string name="card_id_must_not_be_empty">Kartes identifikators nedrīkst būt tukšs</string>
@@ -224,7 +222,6 @@
<string name="noCameraFoundGuideText">Šķiet, ka ierīcei nav kameras. Ja tā tomēr ir, jāmēģina pārsāknēt ierīci. Pretējā gadījumā jāizmanto zemāk esošā poga \"Vairāk iespēju\", lai pievienot svītrkodu citā veidā.</string>
<string name="settings_allow_content_provider_read_title">Ļaut citām lietotnēm piekļūt maniem datiem</string>
<string name="settings_allow_content_provider_read_summary">Lietotnēm joprojām būs jāpieprasa atļauja, lai nodrošinātu piekļuvi</string>
<string name="openFrontImageInGalleryApp">Atvērt priekšpuses attēlu attēlu skatītāja lietotnē</string>
<string name="show_note">Rādīt piezīmi</string>
<string name="show_balance">Rādīt atlikumu</string>
<string name="settings_category_title_privacy">Privātums</string>

View File

@@ -203,7 +203,6 @@
<string name="failedToOpenUrl">Installer en nettleser først</string>
<string name="welcome">Velkommen til Catima</string>
<string name="failedToRetrieveImageFile">Kunne ikke hente bildefil</string>
<string name="barcodeLongPressMessage">Kun bilder kan åpnes i galleriprogrammet</string>
<string name="cameraPermissionDeniedTitle">Fikk ikke tilgang til kameraet</string>
<string name="noCameraPermissionDirectToSystemSetting">Catima trenger kameratilgang for å skanne strekkoder. Trykk her for å endre tilgangsinnstillingene.</string>
<string name="importCards">Importer kort</string>
@@ -227,8 +226,6 @@
<string name="show_balance">Vis saldo</string>
<string name="show_note">Vis notat</string>
<string name="show_validity">Vis gyldighet</string>
<string name="openFrontImageInGalleryApp">Åpne frontbilde i galleriprogrammet</string>
<string name="openBackImageInGalleryApp">Åpne baksidebilde i galleriprogram</string>
<string name="setBarcodeHeight">Sett strekkodehøyde</string>
<string name="donate">Doner</string>
<string name="permissionReadCardsLabel">Les Catima-kort</string>

View File

@@ -199,7 +199,6 @@
<string name="welcome">Welkom bij Catima</string>
<string name="failedToOpenUrl">Installeer een webbrowser</string>
<string name="failedToRetrieveImageFile">De afbeelding kan niet worden opgehaald</string>
<string name="barcodeLongPressMessage">Alleen afbeeldingen kunnen worden geopend in de galerij-app</string>
<string name="cameraPermissionDeniedTitle">Geen cameratoegang</string>
<string name="updateBalanceTitle">Hoeveel heb je uitgegeven of ontvangen?</string>
<string name="noCameraPermissionDirectToSystemSetting">Catima heeft toegang tot je camera nodig om barcodes te kunnen scannen. Druk hier om toegang te verlenen.</string>
@@ -219,8 +218,6 @@
<string name="switchToFrontImage">Voorzijde tonen</string>
<string name="switchToBackImage">Achterzijde tonen</string>
<string name="switchToBarcode">Barcode tonen</string>
<string name="openFrontImageInGalleryApp">Voorzijde openen in afbeeldingsweergave-app</string>
<string name="openBackImageInGalleryApp">Achterzijde openen in afbeeldingsweergave-app</string>
<string name="donate">Doneren</string>
<string name="icon_header_click_text">Houd lang ingedrukt om miniatuur te bewerken</string>
<string name="show_balance">Saldo tonen</string>

View File

@@ -179,7 +179,6 @@
<string name="showMoreInfo">دیدن اطلاعات</string>
<string name="updateBalance">به‌روزرسانی موجودی</string>
<string name="failedToRetrieveImageFile">فایل تصویر بازیابی نشد</string>
<string name="barcodeLongPressMessage">فقط عکس میتونه تو گالری برنامه باز بشه</string>
<string name="sort_by_name">اسم</string>
<string name="sort_by_most_recently_used">جدیدا استفاده شده</string>
<string name="sort_by_valid_from">معتبر از</string>
@@ -228,8 +227,6 @@
<string name="switchToFrontImage">تغییر به عکس جلو</string>
<string name="switchToBackImage">تغییر به عکس عقب</string>
<string name="switchToBarcode">به بارکد تغییر بده</string>
<string name="openFrontImageInGalleryApp">عکس جلویی رو تو image viewer app باز کن</string>
<string name="openBackImageInGalleryApp">باز کردن عکس تو image viewer app</string>
<string name="setBarcodeHeight">تنظیم ارتفاع بارکد</string>
<string name="donate">کمک مالی کن</string>
<string name="icon_header_click_text">برای ویرایش عکس کوچیک، فشار طولانی بده</string>

View File

@@ -209,7 +209,6 @@
<item quantity="other"><xliff:g>%1$d</xliff:g> kart (<xliff:g id="archivedCount">%2$d</xliff:g> zarchwizowanych)</item>
</plurals>
<string name="failedToRetrieveImageFile">Nie udało się pobrać pliku obrazu</string>
<string name="barcodeLongPressMessage">W galerii możesz otworzyć tylko obrazy</string>
<string name="failedToOpenUrl">Najpierw zainstaluj przeglądarkę</string>
<string name="welcome">Witaj w Catima</string>
<string name="currentBalanceSentence">Bieżące saldo: <xliff:g>%s</xliff:g></string>
@@ -230,10 +229,8 @@
<string name="switchToFrontImage">Przełącz na obraz z przodu</string>
<string name="switchToBackImage">Przełącz na obraz z tyłu</string>
<string name="switchToBarcode">Przełącz na kod kreskowy</string>
<string name="openFrontImageInGalleryApp">Otwórz obraz z przodu w galerii</string>
<string name="setBarcodeHeight">Ustaw wysokość kodu kreskowego</string>
<string name="donate">Darowizna</string>
<string name="openBackImageInGalleryApp">Otwórz obraz z powrotem w galerii</string>
<string name="icon_header_click_text">Przytrzymaj, aby edytować miniaturę</string>
<string name="show_name_below_image_thumbnail">Pokaż nazwę pod miniaturką zdjęcia</string>
<string name="show_balance">Pokaż balans</string>

View File

@@ -129,7 +129,6 @@
<string name="showMoreInfo">Mostrar informações</string>
<string name="updateBalance">Atualizar saldo</string>
<string name="failedToRetrieveImageFile">Falha ao recuperar o arquivo de imagem</string>
<string name="barcodeLongPressMessage">Apenas imagens podem ser abertas na galeria</string>
<string name="sort_by_most_recently_used">Usado mais recentemente</string>
<string name="reverse">...em ordem inversa</string>
<string name="sort_by">Ordenar por</string>
@@ -152,8 +151,6 @@
<string name="switchToBarcode">Mudar para código de barras</string>
<string name="switchToFrontImage">Mudar para imagem frontal</string>
<string name="switchToBackImage">Mudar para imagem traseira</string>
<string name="openFrontImageInGalleryApp">Abrir imagem frontal no visualizador de imagens</string>
<string name="openBackImageInGalleryApp">Abrir imagem traseira no visualizador de imagens</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 a miniatura</string>

View File

@@ -205,7 +205,6 @@
<string name="failedToOpenUrl">Instale primeiro um navegador de Internet</string>
<string name="welcome">Bem-vindo ao Catima</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="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="cameraPermissionDeniedTitle">Não foi possível aceder à câmara</string>
<string name="importCards">Importar cartões</string>
@@ -224,8 +223,6 @@
<string name="height">Altura</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 imagem frontal na app visualizadora de imagens</string>
<string name="openBackImageInGalleryApp">Abrir imagem traseira na app visualizadora de imagens</string>
<string name="setBarcodeHeight">Definir altura do código de barras</string>
<string name="donate">Doar</string>
<string name="show_validity">Mostrar validade</string>

View File

@@ -194,7 +194,6 @@
<string name="showMoreInfo">Mostrar informações</string>
<string name="updateBalance">Atualizar saldo</string>
<string name="failedToRetrieveImageFile">Falha ao recuperar o arquivo de imagem</string>
<string name="barcodeLongPressMessage">Apenas imagens podem ser abertas na galeria</string>
<string name="sort_by_name">Nome</string>
<string name="sort_by_most_recently_used">Usado mais recentemente</string>
<string name="sort_by_valid_from">Válido a partir de</string>
@@ -244,8 +243,6 @@
<string name="switchToFrontImage">Mudar para imagem frontal</string>
<string name="switchToBackImage">Mudar para imagem traseira</string>
<string name="switchToBarcode">Mudar para código de barras</string>
<string name="openFrontImageInGalleryApp">Abrir imagem frontal no visualizador de imagens</string>
<string name="openBackImageInGalleryApp">Abrir imagem traseira no visualizador de imagens</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 a miniatura</string>

View File

@@ -99,7 +99,6 @@
<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 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>
@@ -122,7 +121,6 @@
<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 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 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>
@@ -187,13 +185,12 @@
<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">Acelașil cu identificatorul</string>
<string name="sameAsCardId">Același cu identificatorul</string>
<string name="options">Opțiuni</string>
<string name="failedGeneratingShareURL">Nu s-a putut genera o adresă URL care poate fi partajată.</string>
<string name="selectColor">Selectați o culoare</string>
<string name="setBarcodeHeight">Setați înălțimea codului de bare</string>
<string name="privacy_policy">Politica de confidențialitate</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>

View File

@@ -211,7 +211,6 @@
<string name="welcome">Добро пожаловать в Catima</string>
<string name="failedToOpenUrl">Сначала необходимо установить браузер</string>
<string name="failedToRetrieveImageFile">Невозможно получить файл изображения</string>
<string name="barcodeLongPressMessage">В приложении галереи можно открывать только изображения</string>
<string name="noCameraPermissionDirectToSystemSetting">Для сканирования штрих-кодов Catima требуется доступ к камере устройства. Нажмите здесь, чтобы изменить настройки разрешений.</string>
<string name="updateBalance">Обновить баланс</string>
<string name="newBalanceSentence">Новый баланс: <xliff:g>%s</xliff:g></string>
@@ -231,8 +230,6 @@
<string name="switchToBarcode">Переключить на штрих-код</string>
<string name="switchToFrontImage">Переключить на лицевую сторону</string>
<string name="switchToBackImage">Переключить на заднюю сторону</string>
<string name="openFrontImageInGalleryApp">Открыть лицевое изображение в приложении просмотра изображений</string>
<string name="openBackImageInGalleryApp">Открыть заднее изображение в приложении просмотра изображений</string>
<string name="donate">Пожертвовать</string>
<string name="icon_header_click_text">Долгое нажатие для редактирования</string>
<string name="show_note">Показывать примечание</string>

View File

@@ -210,7 +210,6 @@
<item quantity="few"><xliff:g>%1$d</xliff:g> karty (<xliff:g id="archivedCount">%2$d</xliff:g> archivované)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> kariet (<xliff:g id="archivedCount">%2$d</xliff:g> archivovaných)</item>
</plurals>
<string name="barcodeLongPressMessage">V aplikácii galéria je možné otvoriť iba obrázky</string>
<string name="cameraPermissionDeniedTitle">Nepodarilo sa získať prístup k fotoaparátu</string>
<string name="storageReadPermissionRequired">Pre túto akciu je potrebné oprávnenie na čítanie úložiska…</string>
<string name="importFidmeMessage">Vyberte svoj export zo služby FidMe pre import a potom vyberte typy čiarových kódov ručne.\nVytvorte ho z profilu FidMe tak, že vyberiete položku Ochrana údajov a potom stlačíte tlačidlo Extrahovať moje údaje.</string>
@@ -226,8 +225,6 @@
<string name="settings_keep_screen_on_summary">Ponechať obrazovku aktívnu počas prezerania karty</string>
<string name="settings_display_barcode_max_brightness_summary">Pre zaistenie čitateľnosti pre niektoré skenery</string>
<string name="settings_allow_content_provider_read_summary">Aplikácie budú musieť stále žiadať o povolenie, aby im bol udelený prístup</string>
<string name="openBackImageInGalleryApp">Otvorenie zadného obrázka v prehliadači obrázkov</string>
<string name="openFrontImageInGalleryApp">Otvorenie predného obrázka v prehliadači obrázkov</string>
<string name="setBarcodeHeight">Nastavenie výšky čiarového kódu</string>
<string name="show_balance">Ukážte zostatok</string>
<string name="show_name_below_image_thumbnail">Zobraziť názov pod miniatúrou obrázka</string>

View File

@@ -211,7 +211,6 @@
<string name="settings_oled_dark">Čisto črno ozadje za temno temo</string>
<string name="selectColor">Izberi barvo</string>
<string name="app_contributors">Omogočeno od: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="barcodeLongPressMessage">V aplikaciji za gledanje slik lahko odpremo samo slike</string>
<plurals name="groupCardCountWithArchived">
<item quantity="one"><xliff:g>%1$d</xliff:g> kartica (<xliff:g id="archivedCount">%2$d</xliff:g> arhivirana)</item>
<item quantity="two"><xliff:g>%1$d</xliff:g> kartici (<xliff:g id="archivedCount">%2$d</xliff:g> arhivirani)</item>
@@ -287,8 +286,6 @@
<string name="switchToFrontImage">Preklopi na prednjo sliko</string>
<string name="switchToBackImage">Preklopi na zadnjo sliko</string>
<string name="switchToBarcode">Preklopi na črtno kodo</string>
<string name="openFrontImageInGalleryApp">Odpri sprednjo sliko v aplikaciji za slike</string>
<string name="openBackImageInGalleryApp">Odpri zadnjo sliko v aplikaciji za slike</string>
<string name="setBarcodeHeight">Nastavi višino črtne kode</string>
<string name="useFrontImage">Uporabi prednjo sliko</string>
<string name="useBackImage">Uporabi zadnjo sliko</string>

View File

@@ -169,7 +169,6 @@
<string name="height">Visina</string>
<string name="switchToFrontImage">Prebaci na prednju fotografiju</string>
<string name="switchToBarcode">Prebaci na bar-kod</string>
<string name="openFrontImageInGalleryApp">Otvori prednju fotografiju u prikazivaču fotografija</string>
<string name="setBarcodeHeight">Postavi visinu bar-koda</string>
<string name="donate">Doniraj</string>
<string name="icon_header_click_text">Dugi pritisak za izmenu naslovne fotografije</string>
@@ -239,7 +238,6 @@
<string name="updateBarcodeQuestionText">Promenio si broj kartice. Da li želiš da ažuriraš i bar-kod da bude iste vrednosti?</string>
<string name="no">Ne</string>
<string name="app_contributors">Saradnici: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="barcodeLongPressMessage">Samo fotografije mogu da se otvore u galerija aplikaciji</string>
<string name="translate_platform">na Weblate-u</string>
<plurals name="groupCardCountWithArchived">
<item quantity="one"><xliff:g>%1$d</xliff:g> kartica (<xliff:g id="archivedCount">%2$d</xliff:g> arhivirana)</item>
@@ -249,7 +247,6 @@
<string name="include_if_asking_support">Ako želiš da zatražiš podršku, ubaci sledeće informacije:</string>
<string name="newBalanceSentence">Novo stanje: <xliff:g>%s</xliff:g></string>
<string name="switchToBackImage">Prebaci na zadnju fotografiju</string>
<string name="openBackImageInGalleryApp">Otvori zadnju fotografiju u prikazivaču fotografija</string>
<string name="settings_category_title_cards">Pregled kartica</string>
<string name="addWithoutBarcode">Dodaj karticu bez bar-koda</string>
<string name="enter_card_id">Unesite broj ili tekst sa kartice</string>

View File

@@ -209,11 +209,9 @@
<string name="cameraPermissionRequired">Behörighet att komma åt kameran krävs för denna åtgärd…</string>
<string name="updateBalance">Uppdatera balans</string>
<string name="failedToRetrieveImageFile">Misslyckades att hämta bildfil</string>
<string name="barcodeLongPressMessage">Endast bilder kan öppnas i galleriappen</string>
<string name="updateBalanceTitle">Hur mycket spenderade du eller fick du?</string>
<string name="updateBalanceHint">Ange summa</string>
<string name="newBalanceSentence">Ny balans: <xliff:g>%s</xliff:g></string>
<string name="openFrontImageInGalleryApp">Öppna bilden på framsidan i bildvisningsappen</string>
<string name="show_name_below_image_thumbnail">Visa namnet nedanför bildens miniatyr</string>
<string name="show_validity">Visa giltighet</string>
<string name="view_online">Visa på internet</string>
@@ -233,7 +231,6 @@
<string name="switchToFrontImage">Byt till bilden på framsidan</string>
<string name="settings_allow_content_provider_read_summary">Appar måste fortfarande begära åtkomst för att få tillgång</string>
<string name="setBarcodeHeight">Ställ in streckkodens höjd</string>
<string name="openBackImageInGalleryApp">Öppna bilden på baksidan i bildvisningsappen</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Kopieringsskydd © 2019<xliff:g>%d</xliff:g> Sylvia van Os och medverkande</string>
<string name="settings_allow_content_provider_read_title">Tillåt andra appar att komma åt min data</string>
<string name="permissionReadCardsLabel">Läsa Catima-kort</string>
@@ -301,4 +298,9 @@
<string name="nothing_to_copy">Inget värde hittades</string>
<string name="barcodeEncoding">Streckkods-kodning</string>
<string name="back">Tillbaka</string>
<string name="settings_disable_nfc_while_viewing_card">Pausa NFC</string>
<string name="nfc_blocked_while_viewing_card">NFC är pausad</string>
<string name="change_settings">Ändra inställningar</string>
<string name="nfc_block_system_error">Lyckades inte pausa NFC</string>
<string name="settings_disable_nfc_while_viewing_card_summary">Pausar NFC för att förhindra att NFC-betalningar genomförs av misstag medan du tittar på ett kort</string>
</resources>

View File

@@ -8,7 +8,7 @@
<item quantity="other"><xliff:g>%d</xliff:g> தேர்ந்தெடுக்கப்பட்டன</item>
</plurals>
<string name="noGiftCards">ஒரு அட்டையைச் சேர்க்க + சேர் பொத்தானைக் சொடுக்கு செய்க அல்லது ⋮ பட்டியலிருந்து இறக்குமதி செய்</string>
<string name="noGiftCardsGroup">சில அட்டைகளை உருவாக்கி, பின்னர் அவற்றை இங்கே குழுவிற்கு ஒதுக்குங்கள்.</string>
<string name="noGiftCardsGroup">சில அட்டைகளை உருவாக்கி, பின்னர் அவற்றை இங்கே குழுவிற்கு ஒதுக்குங்கள்</string>
<string name="storeName">பெயர்</string>
<string name="note">குறிப்பு</string>
<string name="cardId">அட்டை ஐடி</string>
@@ -58,7 +58,7 @@
<string name="errorReadingImage">படத்தைப் படிக்க முடியவில்லை</string>
<string name="balance">இருப்பு</string>
<string name="currency">நாணயம்</string>
<string name="importFidme">FIDME இலிருந்து இறக்குமதி</string>
<string name="importFidme">FidMe இலிருந்து இறக்குமதி</string>
<string name="barcodeId">பார்கோடு மதிப்பு</string>
<string name="backImageDescription">பின் படம்</string>
<string name="photos">புகைப்படங்கள்</string>
@@ -138,7 +138,7 @@
<string name="importCatima">கேட்டிமாவில் இருந்து இறக்குமதி செய்</string>
<string name="importCatimaMessage">நீங்கள் பூனையம்மாவிலிருந்து ஏற்றுமதியை தேர்ந்துஎடுத்து இறக்குமதி செய்.\nமற்றொரு பூனையம்மா செயலியில் இறக்குமதி/ஏற்றுமதி பட்டியலிலிருந்து ஏற்றுமதியை தேர்ந்துஎடுத்து இக்கோப்பை உருவாக்கு.</string>
<string name="importLoyaltyCardKeychain">விசுவாச அட்டை கீச்சினிலிருந்து இறக்குமதி செய்யுங்கள்</string>
<string name="importFidmeMessage">"உங்கள் இறக்குமதியை FIDME இலிருந்து ஏற்றுமதி செய்து, பின்னர் பட்டைகோடு வகைகளைக் கைமுறையாகத் தேர்ந்தெடு.\n தரவு பாதுகாப்பைத் தேர்ந்தெடுப்பதன் மூலம் உங்கள் FIDME தன்விவரத்திலிருந்து அதை உருவாக்கவும், பின்னர் எனது தரவைப் பிரித்தெடு அழுத்தவும்."</string>
<string name="importFidmeMessage">உங்கள் இறக்குமதியை FidMe இலிருந்து ஏற்றுமதி செய்து, பின்னர் பட்டைகோடு வகைகளைக் கைமுறையாகத் தேர்ந்தெடு.\n தரவு பாதுகாப்பைத் தேர்ந்தெடுப்பதன் மூலம் உங்கள் FidMe தன்விவரத்திலிருந்து அதை உருவாக்கவும், பின்னர் எனது தரவைப் பிரித்தெடு அழுத்தவும்.</string>
<string name="importVoucherVault">வவுச்சர் பெட்டகத்திலிருந்து இறக்குமதி</string>
<string name="sameAsCardId">ஐடி அதே</string>
<string name="setBarcodeId">பார்கோடு மதிப்பை அமைக்கவும்</string>
@@ -166,7 +166,6 @@
<string name="updateBalance">இருப்பு புதுப்பிக்கவும்</string>
<string name="failedToRetrieveImageFile">படக் கோப்பை மீட்டெடுப்பதில் தோல்வி</string>
<string name="sort_by">வரிசைப்படுத்தவும்</string>
<string name="barcodeLongPressMessage">கேலரி பயன்பாட்டில் படங்களை மட்டுமே திறக்க முடியும்</string>
<string name="version_history">பதிப்பு வரலாறு</string>
<string name="credits">வரவு</string>
<string name="on_google_play">கூகிள் பிளேயில்</string>
@@ -201,8 +200,6 @@
<string name="switchToFrontImage">முன் படத்திற்கு மாறவும்</string>
<string name="switchToBackImage">பின் படத்திற்கு மாறவும்</string>
<string name="switchToBarcode">பார்கோடு மாறவும்</string>
<string name="openFrontImageInGalleryApp">இமேச் வியூவர் ஆப்சில் முன் படத்தைத் திறக்கவும்</string>
<string name="openBackImageInGalleryApp">இமேச் வியூவர் ஆப்சில் மீண்டும் படத்தைத் திறக்கவும்</string>
<string name="setBarcodeHeight">பார்கோடு உயரத்தை அமைக்கவும்</string>
<string name="donate">நன்கொடை</string>
<string name="icon_header_click_text">சிறுபடத்தைத் திருத்த நீண்ட அழுத்தவும்</string>
@@ -246,18 +243,18 @@
<string name="addFromPkpass">பாச்புக் கோப்பைத் தேர்ந்தெடுக்கவும் (.pkpass / .pkpasses)</string>
<string name="useFrontImage">முன் படத்தைப் பயன்படுத்தவும்</string>
<plurals name="deleteCardsTitle">
<item quantity="one"><xliff:g>%d</xliff:g> அட்டை நீக்க</item>
<item quantity="other"><xliff:g>%d</xliff:g> அட்டகளை நீக்க</item>
<item quantity="one"><xliff:g>%d</xliff:g> கார்டை நீக்கவும்</item>
<item quantity="other"><xliff:g>%d</xliff:g> கார்டகளை நீக்கவும்</item>
</plurals>
<plurals name="deleteCardsConfirmation">
<item quantity="one">இந்த <xliff:g>%d</xliff:g> அட்டையை நிரந்தரமாக நீக்கவா?</item>
<item quantity="other">இந்த <xliff:g>%d</xliff:g> அட்டகளை நிரந்தரமாக நீக்கவா?</item>
<item quantity="one">இந்த <xliff:g>%d</xliff:g> கார்டை நிரந்தரமாக நீக்கவா?</item>
<item quantity="other">இந்த <xliff:g>%d</xliff:g> கார்டகளை நிரந்தரமாக நீக்கவா?</item>
</plurals>
<string name="editGroup">திருத்துதல் குழு: <xliff:g>%s</xliff:g></string>
<string name="debug_version_fmt">பதிப்பு: <xliff:g id="version">%s</xliff:g></string>
<plurals name="groupCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> அட்டை</item>
<item quantity="other"><xliff:g>%d</xliff:g> அட்டகள்</item>
<item quantity="other"><xliff:g>%d</xliff:g> கார்டகள்</item>
</plurals>
<string name="expiryStateSentenceExpired">காலாவதியானது: <xliff:g>%s</xliff:g></string>
<plurals name="balancePoints">
@@ -277,7 +274,7 @@
<string name="balanceSentence">இருப்பு: <xliff:g>%s</xliff:g></string>
<plurals name="groupCardCountWithArchived">
<item quantity="one"><xliff:g>%1$d</xliff:g> அட்டை (<xliff:g id="archivedCount">%2$d</xliff:g> காப்பகப்படுத்தப்பட்டது)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> அட்டகள் (<xliff:g id="archivedCount">%2$d</xliff:g> காப்பகப்படுத்தப்பட்டது)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> கார்டகள் (<xliff:g id="archivedCount">%2$d</xliff:g> காப்பகப்படுத்தப்பட்டது)</item>
</plurals>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">பதிப்புரிமை © 2019<xliff:g>%d</xliff:g> சில்வியா வான் ஓஎச் மற்றும் பங்களிப்பாளர்கள்</string>
<string name="app_resources">மூன்றாம் தரப்பு வளங்கள்: <xliff:g id="app_resources_list">%s</xliff:g></string>
@@ -289,7 +286,7 @@
<string name="card_list_widget_empty">கேட்டிமாவில் நீங்கள் விசுவாச அட்டைகளை சேர்த்த பிறகு, அவை இங்கு தோன்றும். அட்டைகள் காப்பகப்படுத்த படவில்லை என உறுதி செய்க.</string>
<string name="cardWithNumber">அட்டை <xliff:g>%d</xliff:g></string>
<string name="cardWithNumberAndLocale">அட்டை<xliff:g>%d</xliff:g> (<xliff:g>%s</xliff:g>)</string>
<string name="pleaseDoNotRotateTheDevice">தயவுசெய்து சாதனத்தை சுழற்றாதீர்கள், இது செயலை ரத்து செய்யும்.</string>
<string name="pleaseDoNotRotateTheDevice">தயவுசெய்து சாதனத்தை சுழற்றாதீர்கள், இது செயலை கைவிடும்</string>
<string name="acra_catima_has_crashed">மன்னிக்கவும், <xliff:g id="app_name">%s</xliff:g> செயலி செயலிழந்துள்ளது. தயவுசெய்து பிழை அறிக்கையை அனுப்பி, இந்த பிரச்சினையை சரிசெய்ய எங்களுக்கு உதவுங்கள்.</string>
<string name="acra_explain_crash">சாத்தியமானால், நீங்கள் இங்கே என்ன செய்தீர்கள் என்பதைப் பற்றிய மேலும் விவரங்களைச் சேர்க்கவும்:</string>
<string name="acra_crash_email_subject"><xliff:g id="app_name">%s</xliff:g> செயலிழப்பு அறிக்கை</string>
@@ -300,4 +297,9 @@
<string name="nothing_to_copy">மதிப்பு இல்லை</string>
<string name="barcodeEncoding">பார்கோடு குறியாக்கம்</string>
<string name="back">பின்</string>
<string name="settings_disable_nfc_while_viewing_card">NFC ஐ இடைநிறுத்து</string>
<string name="settings_disable_nfc_while_viewing_card_summary">கார்டைப் பார்க்கும்போது NFC பேமெண்ட்கள் தூண்டப்படுவதைத் தடுக்க NFCஐ இடைநிறுத்துகிறது</string>
<string name="nfc_blocked_while_viewing_card">NFC இடைநிறுத்தப்பட்டது</string>
<string name="change_settings">அமைப்புகளை மாற்றவும்</string>
<string name="nfc_block_system_error">NFC ஐ இடைநிறுத்த முடியவில்லை</string>
</resources>

View File

@@ -199,7 +199,6 @@
<string name="failedToOpenUrl">Önce bir web tarayıcısı kurun</string>
<string name="welcome">Catima\'ya Hoş Geldiniz</string>
<string name="failedToRetrieveImageFile">Resim dosyası alınamadı</string>
<string name="barcodeLongPressMessage">Galeri uygulamasında yalnızca resimler açılabilir</string>
<string name="noCameraPermissionDirectToSystemSetting">Barkodları taramak için Catima\'nın kameranıza erişmesi gerekecektir. İzin ayarlarınızı değiştirmek için buraya dokunun.</string>
<string name="currentBalanceSentence">Geçerli bakiye: <xliff:g>%s</xliff:g></string>
<string name="updateBalanceHint">Miktarı girin</string>
@@ -220,8 +219,6 @@
<string name="donate">Bağış yap</string>
<string name="switchToFrontImage">Ön resme geç</string>
<string name="setBarcodeHeight">Barkod yüksekliğini ayarla</string>
<string name="openFrontImageInGalleryApp">Ön resmi resim görüntüleyici uygulamasında aç</string>
<string name="openBackImageInGalleryApp">Arka resmi resim görüntüleyici uygulamasında aç</string>
<string name="icon_header_click_text">Küçük resmi düzenlemek için uzun basın</string>
<string name="show_name_below_image_thumbnail">Küçük resmin altında adı göster</string>
<string name="show_note">Notu göster</string>

View File

@@ -211,7 +211,6 @@
<string name="failedToOpenUrl">Спочатку встановіть браузер</string>
<string name="welcome">Ласкаво просимо до Catima</string>
<string name="failedToRetrieveImageFile">Збій доступу до файлу зображення</string>
<string name="barcodeLongPressMessage">Галерея може відкривати лише зображення</string>
<string name="importCards">Імпорт карток</string>
<string name="updateBalanceTitle">Скільки ви витратили або отримали?</string>
<string name="updateBalanceHint">Введіть суму</string>
@@ -229,8 +228,6 @@
<string name="switchToFrontImage">Перемкнутися на лицьову сторону</string>
<string name="switchToBackImage">Перемкнутися на зворотню сторону</string>
<string name="switchToBarcode">Перемкнутися на штрих-код</string>
<string name="openFrontImageInGalleryApp">Відкрити зображення спереду в програмі для перегляду зображень</string>
<string name="openBackImageInGalleryApp">Відкрити зображення ззаду у програмі для перегляду зображень</string>
<string name="setBarcodeHeight">Встановити висоту штрих-коду</string>
<string name="height">Висота</string>
<string name="donate">Пожертвувати</string>

View File

@@ -234,14 +234,11 @@
<string name="rate_this_app">Đánh giá ứng dụng</string>
<string name="credits">Ghi nhận</string>
<string name="app_name">Catima</string>
<string name="openFrontImageInGalleryApp">Mở hình ảnh mặt trước trong ứng dụng thư viện ảnh</string>
<string name="and_data_usage">và sử dụng dữ liệu</string>
<string name="show_validity">Hiển thị tính hợp lệ</string>
<string name="barcodeLongPressMessage">Chỉ có thể mở hình ảnh trong ứng dụng thư viện</string>
<string name="source_repository">Kho lưu trữ nguồn</string>
<string name="switchToBackImage">Chuyển sang hình ảnh phía sau</string>
<string name="switchToFrontImage">Chuyển sang hình ảnh phía trước</string>
<string name="openBackImageInGalleryApp">Mở hình ảnh mặt sau trong ứng dụng thư viện ảnh</string>
<string name="failedToRetrieveImageFile">Không thể truy xuất tệp hình ảnh</string>
<string name="app_contributors">Được thực hiện bởi: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="app_license">Phần mềm miễn phí có bản quyền theo giấy phép GPLv3+</string>

View File

@@ -200,7 +200,6 @@
<string name="currentBalanceSentence">当前余额:<xliff:g>%s</xliff:g></string>
<string name="failedToRetrieveImageFile">无法检索图像文件</string>
<string name="newBalanceSentence">新余额:<xliff:g>%s</xliff:g></string>
<string name="barcodeLongPressMessage">只能在图库应用程序中打开图像</string>
<string name="storageReadPermissionRequired">此操作所需的读取存储空间的权限……</string>
<string name="validFromDate">有效期自</string>
<string name="anyDate">任何日期</string>
@@ -211,8 +210,6 @@
<string name="switchToFrontImage">选择正面图像</string>
<string name="switchToBackImage">选择背面图像</string>
<string name="switchToBarcode">选择条形码</string>
<string name="openFrontImageInGalleryApp">使用图片查看软件打开正面图像</string>
<string name="openBackImageInGalleryApp">使用图片查看软件打开背面图像</string>
<string name="setBarcodeHeight">设置条形码高度</string>
<string name="donate">捐赠</string>
<string name="icon_header_click_text">长按可编辑缩略图</string>

View File

@@ -179,7 +179,6 @@
<string name="options">選項</string>
<string name="include_if_asking_support">如果您想請求協助,請附上以下訊息:</string>
<string name="failedToRetrieveImageFile">無法擷取圖片檔案</string>
<string name="barcodeLongPressMessage">圖庫應用程式僅可開啟圖片</string>
<string name="duplicateCard">重複</string>
<string name="archive">封存</string>
<string name="unarchive">解除封存</string>
@@ -208,7 +207,6 @@
<string name="currentBalanceSentence">餘額:<xliff:g>%s</xliff:g></string>
<string name="newBalanceSentence">新的餘額:<xliff:g>%s</xliff:g></string>
<string name="switchToBarcode">選擇條碼</string>
<string name="openFrontImageInGalleryApp">在圖片檢視應用程式中開啟正面圖片</string>
<string name="show_note">顯示備註</string>
<string name="show_balance">顯示餘額</string>
<string name="show_validity">顯示有效性</string>
@@ -217,7 +215,6 @@
<string name="height"></string>
<string name="donate">捐款</string>
<string name="icon_header_click_text">長按以編輯縮圖</string>
<string name="openBackImageInGalleryApp">在圖片檢視應用程式中開啟背面圖片</string>
<string name="show_name_below_image_thumbnail">在縮圖下方顯示名稱</string>
<string name="setBarcodeHeight">設定條碼高度</string>
<string name="app_copyright_short">著作權所有© Sylvia van Os與其他貢獻者</string>

View File

@@ -9,6 +9,7 @@
<string-array name="sort_types_array">
<item>@string/sort_by_name</item>
<item>@string/sort_by_most_recently_added</item>
<item>@string/sort_by_most_recently_used</item>
<item>@string/sort_by_valid_from</item>
<item>@string/sort_by_expiry</item>

View File

@@ -219,8 +219,8 @@
<string name="showMoreInfo">Show info</string>
<string name="updateBalance">Update balance</string>
<string name="failedToRetrieveImageFile">Failed to retrieve image file</string>
<string name="barcodeLongPressMessage">Only images can be opened in the gallery app</string>
<string name="sort_by_name">Name</string>
<string name="sort_by_most_recently_added">Most recently added</string>
<string name="sort_by_most_recently_used">Most recently used</string>
<string name="sort_by_valid_from">Valid from</string>
<string name="sort_by_expiry">Expiry</string>
@@ -271,8 +271,8 @@
<string name="switchToFrontImage">Switch to front image</string>
<string name="switchToBackImage">Switch to back image</string>
<string name="switchToBarcode">Switch to barcode</string>
<string name="openFrontImageInGalleryApp">Open front image in image viewer app</string>
<string name="openBackImageInGalleryApp">Open back image in image viewer app</string>
<string name="zoomFrontImage">Zoom front image</string>
<string name="zoomBackImage">Zoom back image</string>
<string name="setBarcodeHeight">Set barcode height</string>
<string name="donate">Donate</string>
<string name="icon_header_click_text">Long press to edit thumbnail</string>
@@ -280,10 +280,12 @@
<string name="show_note">Show note</string>
<string name="show_balance">Show balance</string>
<string name="show_validity">Show validity</string>
<string name="show_card_id">Show card ID</string>
<string name="sharedpreference_card_details_show_name_below_thumbnail" translatable="false">sharedpreference_card_details_show_name_below_thumbnail</string>
<string name="sharedpreference_card_details_show_note" translatable="false">sharedpreference_card_details_show_note</string>
<string name="sharedpreference_card_details_show_balance" translatable="false">sharedpreference_card_details_show_balance</string>
<string name="sharedpreference_card_details_show_validity" translatable="false">sharedpreference_card_details_show_validity</string>
<string name="sharedpreference_card_details_show_card_id" translatable="false">sharedpreference_card_details_show_card_id</string>
<string name="sharedpreference_card_details_show_archived_cards" translatable="false">sharedpreference_card_details_show_archived_cards</string>
<string name="settings_category_title_cards">Card view</string>
<string name="settings_category_title_cards_overview">Cards overview</string>

View File

@@ -77,6 +77,7 @@ import java.util.Currency;
import java.util.Date;
import java.util.List;
import protect.card_locker.cardimageview.LoyaltyCardImageViewActivity;
import protect.card_locker.cardview.LoyaltyCardViewActivity;
@RunWith(RobolectricTestRunner.class)
@@ -1374,6 +1375,92 @@ public class LoyaltyCardViewActivityTest {
database.close();
}
@Test
public void checkImageViewerWorkflow() throws IOException {
final Context context = ApplicationProvider.getApplicationContext();
SQLiteDatabase database = getWritableEmptyDatabase(context);
int cardId = (int) DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, null, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0);
Bitmap frontBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.circle);
Bitmap backBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_done);
Utils.saveCardImage(context, frontBitmap, cardId, ImageLocationType.front);
Utils.saveCardImage(context, backBitmap, cardId, ImageLocationType.back);
try {
ActivityController activityController = createActivityWithLoyaltyCard(false, cardId);
AppCompatActivity activity = (AppCompatActivity) activityController.get();
activityController.start();
activityController.visible();
activityController.resume();
ImageView mainImage = activity.findViewById(R.id.main_image);
ImageButton nextButton = activity.findViewById(R.id.main_right_button);
assertEquals(context.getString(R.string.frontImageDescription), mainImage.getContentDescription());
mainImage.performClick();
shadowOf(getMainLooper()).idle();
assertStartedImageActivity(activity, cardId, ImageLocationType.front);
nextButton.performClick();
shadowOf(getMainLooper()).idle();
assertEquals(context.getString(R.string.backImageDescription), mainImage.getContentDescription());
mainImage.performClick();
shadowOf(getMainLooper()).idle();
assertStartedImageActivity(activity, cardId, ImageLocationType.back);
} finally {
Utils.saveCardImage(context, null, cardId, ImageLocationType.front);
Utils.saveCardImage(context, null, cardId, ImageLocationType.back);
database.close();
}
}
@Test
public void checkThumbnailImageViewerWorkflow() throws IOException {
final Context context = ApplicationProvider.getApplicationContext();
SQLiteDatabase database = getWritableEmptyDatabase(context);
int cardId = (int) DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, null, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0);
Bitmap thumbnailBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.circle);
Utils.saveCardImage(context, thumbnailBitmap, cardId, ImageLocationType.icon);
try {
ActivityController activityController = createActivityWithLoyaltyCard(false, cardId);
AppCompatActivity activity = (AppCompatActivity) activityController.get();
activityController.start();
activityController.visible();
activityController.resume();
LinearLayout iconContainer = activity.findViewById(R.id.icon_container);
iconContainer.performClick();
shadowOf(getMainLooper()).idle();
assertStartedImageActivity(activity, cardId, ImageLocationType.icon);
} finally {
Utils.saveCardImage(context, null, cardId, ImageLocationType.icon);
database.close();
}
}
private void assertStartedImageActivity(
AppCompatActivity activity,
int cardId,
ImageLocationType imageLocationType
) {
Intent intent = shadowOf(activity).getNextStartedActivity();
assertNotNull(intent);
assertEquals(LoyaltyCardImageViewActivity.class.getName(), intent.getComponent().getClassName());
assertEquals(cardId, intent.getIntExtra(LoyaltyCardImageViewActivity.BUNDLE_ID, 0));
assertEquals(
imageLocationType.name(),
intent.getStringExtra(LoyaltyCardImageViewActivity.BUNDLE_IMAGE_LOCATION_TYPE)
);
}
@Test
public void checkNoBarcodeFullscreenWorkflow() {
final Context context = ApplicationProvider.getApplicationContext();

View File

@@ -20,6 +20,7 @@ import android.widget.TextView;
import androidx.appcompat.widget.SearchView;
import androidx.recyclerview.widget.RecyclerView;
import androidx.test.core.app.ApplicationProvider;
import com.google.android.material.tabs.TabLayout;
import com.google.zxing.BarcodeFormat;
@@ -116,6 +117,76 @@ public class MainActivityTest {
database.close();
}
@Test
public void cardIdHiddenByDefault() {
ActivityController activityController = Robolectric.buildActivity(MainActivity.class).create();
Activity mainActivity = (Activity) activityController.get();
activityController.start();
activityController.resume();
activityController.visible();
RecyclerView list = mainActivity.findViewById(R.id.list);
SQLiteDatabase database = TestHelpers.getEmptyDb(mainActivity).getWritableDatabase();
DBHelper.insertLoyaltyCard(database, "store", "", null, null, new BigDecimal("0"), null, "1234567890", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0);
activityController.pause();
activityController.resume();
activityController.visible();
assertEquals(1, list.getAdapter().getItemCount());
// Make sure there is enough space to render all
list.measure(0, 0);
list.layout(0, 0, 100, 1000);
// Card ID is hidden by default
TextView cardIdField = list.findViewHolderForAdapterPosition(0).itemView.findViewById(R.id.cardId);
assertEquals(View.GONE, cardIdField.getVisibility());
database.close();
}
@Test
public void showCardIdDisplayOption() {
// The display option is read in the adapter's constructor (during onCreate), so the
// preference must be set before the activity is built.
SharedPreferences cardDetailsPref = ApplicationProvider.getApplicationContext().getSharedPreferences(
ApplicationProvider.getApplicationContext().getString(R.string.sharedpreference_card_details),
Activity.MODE_PRIVATE);
cardDetailsPref.edit().putBoolean(
ApplicationProvider.getApplicationContext().getString(R.string.sharedpreference_card_details_show_card_id), true).apply();
ActivityController activityController = Robolectric.buildActivity(MainActivity.class).create();
Activity mainActivity = (Activity) activityController.get();
activityController.start();
activityController.resume();
activityController.visible();
RecyclerView list = mainActivity.findViewById(R.id.list);
SQLiteDatabase database = TestHelpers.getEmptyDb(mainActivity).getWritableDatabase();
DBHelper.insertLoyaltyCard(database, "store", "", null, null, new BigDecimal("0"), null, "1234567890", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0);
activityController.pause();
activityController.resume();
activityController.visible();
assertEquals(1, list.getAdapter().getItemCount());
// Make sure there is enough space to render all
list.measure(0, 0);
list.layout(0, 0, 100, 1000);
TextView cardIdField = list.findViewHolderForAdapterPosition(0).itemView.findViewById(R.id.cardId);
assertEquals(View.VISIBLE, cardIdField.getVisibility());
assertEquals("1234567890", cardIdField.getText().toString());
database.close();
}
@Test
public void addFourLoyaltyCardsTwoStarred() // Main screen showing starred cards on top correctly
{
@@ -510,4 +581,4 @@ public class MainActivityTest {
database.close();
}
}
}

View File

@@ -0,0 +1,3 @@
- Add support for showing the card ID in the card list
- Add support to sort by most recently added
- Add internal image viewer for zooming card front/back/icon images

View File

@@ -1,3 +1,3 @@
Opción de bloquear orientación de la pantalla añadida cuando se muestra una tarjeta. Si esta bloqueada, la pantalla volteará a su orientación "natural" y rotación de esta será bloqueada.
Si una tarjeta es seleccionada de la pantalla principal pero no carga, la aplicación falla y enseña un mensaje.
Caso arreglado donde los ID de disposición para el asistente de introducción no podían encontrarse.
Caso arreglado donde los ID de disposición para el asistente de introducción no podían encontrarse. (pull #128 (https://github.com/brarcher/loyalty-card-locker/pull/128))

View File

@@ -1,3 +1,3 @@
Compatible con Android 15
Se corrigió un error que provocaba que el teclado cubriera el botón de guardar en la pantalla de edición
Se corrigió un error que impedía la detección de algunos archivos pkpass como tales (compatibilidad con el tipo MIME application/vnd-com.apple.pkpass)
Se corrigió un error que impedía la detección de algunos archivos pkpass como tales (compatibilidad con el tipo mime application/vnd-com.apple.pkpass)

View File

@@ -0,0 +1,6 @@
- Añade soporte para códigos UTF-8
- Añade opción duplicada a las opciones de pantalla principal y reordena ligeramente
- Soluciona el conteo de columna no se aplica a la lista de tarjetas de grupo
- Retira el soporte de color temático
- Reduce el tamaño máximo de la foto para reducir el uso de almacenamiento (sólo para fotos nuevas)
- Migra actividad Acerca de Android XML a Jetpack Compose

View File

@@ -1,4 +1,4 @@
A partir de esta versión, Android 5.0 y 5.1 ya no son compatibles. Si desea usar Catima en estas versiones, utilice la versión 2.41.6.
- Se corrigió un error que provocaba un cierre inesperado al cambiar de tarjeta con los botones de volumen si solo había una tarjeta disponible.
- Se corrigió un error que provocaba que el acceso directo volviera a la tarjeta anterior después de rotarla.
- Se corrigió un error que provocaba un cierre inesperado al cambiar de tarjeta con los botones de volumen si solo había una tarjeta disponible
- Se corrigió un error que provocaba que el acceso directo volviera a la tarjeta anterior después de rotación

View File

@@ -0,0 +1 @@
- Evitar el choque en dispositivos con mala conducta de NFC

View File

@@ -1,2 +1 @@
Cambios al mostrar una nota en la vista de tarjeta, permitir que el ID de tarjeta ocupe varias líneas, y mostrar el nombre de la tienda.
(pull #197 (https://github.com/brarcher/loyalty-card-locker/pull/197))
Cambios al mostrar una nota en la vista de tarjeta, permitir que el ID de tarjeta ocupe varias líneas, y mostrar el nombre de la tienda. (seguimiento #197 (https://github.com/brarcher/loyalty-card-locker/pull/197))

View File

@@ -1,2 +1,2 @@
Reducir el espacio en el encabezado al visualizar una tarjeta.
Desactivar el pitido al escanear un código de barras.
Reducir el espacio en el encabezado al visualizar una tarjeta. (pull #213 (https://github.com/brarcher/loyalty-card-locker/pull/213))
Desactivar el pitido al escanear un código de barras (pull #216 (https://github.com/brarcher/loyalty-card-locker/pull/216))

View File

@@ -1,4 +1,2 @@
Ordenar la lista de tarjetas sin distinguir entre mayúsculas y minúsculas
(solicitud n.º 266 (https://github.com/brarcher/loyalty-card-locker/pull/266))
Añadir opción para bloquear la orientación de todas las tarjetas
(solicitud n.º 269 (https://github.com/brarcher/loyalty-card-locker/pull/269))
Ordenar la lista de tarjetas sin distinguir entre mayúsculas y minúsculas (seguimiento n.º 266 (https://github.com/brarcher/loyalty-card-locker/pull/266))
Añadir opción para bloquear la orientación de todas las tarjetas (seguimiento n.º 269 (https://github.com/brarcher/loyalty-card-locker/pull/269))

View File

@@ -0,0 +1,2 @@
- Concede al usuario introducir el código de barras manualmente. Si un usuario elige introducir manualmente un código de barras, se muestra una lista de todas las imágenes válidas y compatibles del código de barras. El usuario puede seleccionar la imagen de código de barras que coincida con lo que el usuario quiere. incidencia #33
- Problema resuelto donde algunos códigos de barras mostrados eran borrosos. (issue #37 (https://github.com/brarcher/loyalty-card-locker/issues/37))

View File

@@ -0,0 +1,3 @@
El "Locker" parte del nombre no fue intuitivo. Para ayudar remedio esto un icono de aplicación nuevo estuvo creado por betsythefc qué mejor representa el propósito de la aplicación: para almacenar cartas de lealtad qué uso barcodes. Junto con este icono nuevo el nombre de la aplicación ha sido cambiado a "Carta de Lealtad Keychain".
Mejoras de/características adicionales:

View File

@@ -0,0 +1 @@
- Исправлен цвет панели статуса и навигации в обновлённом меню О приложении

View File

@@ -0,0 +1 @@
- Исправлено изменение, внесенное в версию 2.41.0, из-за которого некоторые сканеры перестали поддерживать штрих-коды, отличные от UTF-8

View File

@@ -0,0 +1,2 @@
- Доработка исправления в версии 2.41.2 для карт, настроенных на ISO-8859-1
- Перенос старых карт на ISO-8859-1 для устранения внезапных различий в поведении существующих карт

View File

@@ -0,0 +1 @@
- Пока что отключено автоматическое определение кодировки штрих-кода (повреждает слишком много карточек)

View File

@@ -0,0 +1,5 @@
- Исправлена ошибка, из-за которой виджет иногда открывал неправильную карточку
- Исправлено несколько ошибок с обработкой ярлыков
- Исправлена ошибка, из-за которой в OLED-режиме не использовалась чисто черная строка заголовка
- Полностью удалено автоматическое определение кодировки штрих-кода
- Доступно отображение кодировки штрих-кода через ContentProvider (используется Gadgetbridge)

View File

@@ -0,0 +1,2 @@
- Автоматическое определение URL-адресов в идентификаторе карты и всплывающее окно с информацией об идентификаторе карты доступно по нажатию
- Исправлена ошибка выбора штрих-кода, при которой вместо штрих-кодов отображались белые квадраты

View File

@@ -0,0 +1,4 @@
Начиная с этой версии, Android 5.0 и 5.1 больше не поддерживаются. Если вы хотите использовать Catima в этих версиях, пожалуйста, используйте версию 2.41.6.
- Исправлен сбой при переключении карт с помощью кнопок регулировки громкости, если доступна только одна карта.
- Исправлен ярлык возврата к предыдущей карте после поворота

View File

@@ -0,0 +1,3 @@
- Отключён NFC при предъявлении карты по умолчанию
- Добавлен запрос клавиатуре вводить каждое слово в названии магазина с заглавной буквы на экране редактирования
- Добавлена дата в имени файла экспорта

View File

@@ -0,0 +1 @@
- Предотвращение вылетов на устройствах с неправильно работающим NFC

View File

@@ -1 +1,4 @@
இந்த வெளியீட்டில் இருந்து ஆண்ட்ராய்டு 5.0 மற்றும் 5.1 ஆதரிக்கப்படாது. இந்த பதிப்புகளில் நீங்கள் Catima ஐப் பயன்படுத்த விரும்பினால், பதிப்பு 2.41.6 ஐப் பயன்படுத்தவும்.
இந்த வெளியீட்டில் இருந்து Android 5.0 மற்றும் 5.1 ஆதரிக்கப்படாது. இந்த பதிப்புகளில் நீங்கள் Catima ஐப் பயன்படுத்த விரும்பினால், பதிப்பு 2.41.6 ஐப் பயன்படுத்தவும்.
- ஒரே ஒரு அட்டை இருந்தால், வால்யூம் பட்டன்களைப் பயன்படுத்தி கார்டுகளை மாற்றும்போது ஏற்படும் செயலிழப்பை சரிசெய்யவும்
- சுழற்சிக்குப் பிறகு முந்தைய அட்டைக்குத் திரும்பும் குறுக்குவழியை சரிசெய்யவும்

View File

@@ -0,0 +1,3 @@
- இயல்பாக கார்டைக் காண்பிக்கும் போது NFC ஐ முடக்கு
- திருத்துத் திரையில் கடை பெயரில் உள்ள ஒவ்வொரு வார்த்தையையும் பெரியதாக்க விசைப்பலகைக் கேட்கவும்
- ஏற்றுமதி கோப்பு பெயரில் தேதியை வைக்கவும்

View File

@@ -0,0 +1 @@
- தவறாக செயல்படும் NFC உள்ள சாதனங்களில் விபத்தைத் தடுக்கவும்

View File

@@ -1,7 +1,7 @@
[versions]
# AndroidX
compose = "2026.05.01"
kotlin = "2.3.21"
compose = "2026.06.01"
kotlin = "2.4.0"
# Third-party
acra = "5.13.1"
@@ -47,13 +47,13 @@ androidx-test-core = { group = "androidx.test", name = "core", version.ref = "an
androidx-test-rules = { group = "androidx.test", name = "rules", version.ref = "androidXTest" }
androidx-test-runner = { group = "androidx.test", name = "runner", version.ref = "androidXTest" }
androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version = "1.3.0" }
androidx-test-uiautomator-uiautomator = { group = "androidx.test.uiautomator", name = "uiautomator", version = "2.3.0" }
androidx-test-uiautomator-uiautomator = { group = "androidx.test.uiautomator", name = "uiautomator", version = "2.4.0" }
androidx-test-espresso-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version = "3.7.0" }
junit-junit = { group = "junit", name = "junit", version = "4.13.2" }
org-robolectric-robolectric = { group = "org.robolectric", name = "robolectric", version = "4.16.1" }
[plugins]
com-android-application = { id = "com.android.application", version = "9.2.1" }
com-android-application = { id = "com.android.application", version = "9.3.0" }
org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
org-jetbrains-kotlin-plugin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }

View File

@@ -1,7 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=bafc141b619ad6350fd975fc903156dd5c151998cc8b058e8c1044ab5f7b031f
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
distributionSha256Sum=9c0f7faeeb306cb14e4279a3e084ca6b596894089a0638e68a07c945a32c9e14
distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500

4
gradlew vendored
View File

@@ -20,7 +20,7 @@
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
# gradlew start up script for POSIX generated by Gradle.
#
# Important for running:
#
@@ -29,7 +29,7 @@
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
# ksh gradlew
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:

4
gradlew.bat vendored
View File

@@ -19,7 +19,7 @@
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem gradlew startup script for Windows
@rem
@rem ##########################################################################
@@ -72,7 +72,7 @@ echo location of your Java installation. 1>&2
@rem Execute Gradle
@rem Execute gradlew
@rem endlocal doesn't take effect until after the line is parsed and variables are expanded
@rem which allows us to clear the local environment before executing the java command
endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel