Compare commits

..

2 Commits

Author SHA1 Message Date
Sylvia van Os
4fe43bccff Catch new UncheckedIOException 2023-04-18 19:58:40 +02:00
dependabot[bot]
3732f8483b Bump org.apache.commons:commons-csv from 1.9.0 to 1.10.0
Bumps [org.apache.commons:commons-csv](https://github.com/apache/commons-csv) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/apache/commons-csv/releases)
- [Changelog](https://github.com/apache/commons-csv/blob/master/RELEASE-NOTES.txt)
- [Commits](https://github.com/apache/commons-csv/compare/rel/commons-csv-1.9.0...rel/commons-csv-1.10.0)

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-csv
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-18 16:58:12 +00:00
348 changed files with 1533 additions and 2009 deletions

View File

@@ -1,15 +1,5 @@
# Changelog
## v2.23.1 - 121
- Update used libraries
## v2.23.0 - 120
- Complete redesign of main and loyalty card view screens
- Material You design for the settings screen
- Fix crash when using "Take a photo" with disabled camera app
## v2.22.1 - 119
- Use Material You colours on more devices (Google library update)

View File

@@ -3,21 +3,21 @@ GEM
specs:
CFPropertyList (3.0.6)
rexml
addressable (2.8.4)
addressable (2.8.1)
public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.2.0)
aws-partitions (1.749.0)
aws-sdk-core (3.171.0)
aws-partitions (1.701.0)
aws-sdk-core (3.170.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.63.0)
aws-sdk-kms (1.62.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.120.1)
aws-sdk-s3 (1.119.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
@@ -36,7 +36,7 @@ GEM
unf (>= 0.0.5, < 1.0.0)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.99.0)
excon (0.98.0)
faraday (1.10.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
@@ -66,7 +66,7 @@ GEM
faraday_middleware (1.2.0)
faraday (~> 1.0)
fastimage (2.2.6)
fastlane (2.212.2)
fastlane (2.211.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
@@ -106,9 +106,9 @@ GEM
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.39.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.0)
google-apis-androidpublisher_v3 (0.32.0)
google-apis-core (>= 0.9.1, < 2.a)
google-apis-core (0.10.0)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
@@ -117,10 +117,10 @@ GEM
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-iamcredentials_v1 (0.16.0)
google-apis-core (>= 0.9.1, < 2.a)
google-apis-playcustomapp_v1 (0.12.0)
google-apis-core (>= 0.9.1, < 2.a)
google-apis-storage_v1 (0.19.0)
google-apis-core (>= 0.9.0, < 2.a)
google-cloud-core (1.6.0)
@@ -128,7 +128,7 @@ GEM
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.1)
google-cloud-errors (1.3.0)
google-cloud-storage (1.44.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
@@ -137,7 +137,7 @@ GEM
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.5.2)
googleauth (1.3.0)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
@@ -150,7 +150,7 @@ GEM
httpclient (2.8.3)
jmespath (1.6.2)
json (2.6.3)
jwt (2.7.0)
jwt (2.6.0)
memoist (0.16.2)
mini_magick (4.12.0)
mini_mime (1.1.2)
@@ -160,7 +160,7 @@ GEM
naturally (2.2.1)
optparse (0.1.1)
os (1.1.4)
plist (3.7.0)
plist (3.6.0)
public_suffix (5.0.1)
rake (13.0.6)
representable (3.2.0)

View File

@@ -19,8 +19,8 @@ android {
applicationId "me.hackerchick.catima"
minSdk 21
targetSdk 33
versionCode 121
versionName "2.23.1"
versionCode 119
versionName "2.22.1"
vectorDrawables.useSupportLibrary true
multiDexEnabled true
@@ -90,18 +90,19 @@ dependencies {
implementation 'androidx.exifinterface:exifinterface:1.3.6'
implementation 'androidx.palette:palette:1.0.0'
implementation 'androidx.preference:preference:1.2.0'
implementation 'com.google.android.material:material:1.9.0'
implementation 'com.google.android.material:material:1.8.0'
implementation 'com.github.yalantis:ucrop:2.2.8'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
// Splash Screen
implementation 'androidx.core:core-splashscreen:1.0.1'
implementation 'androidx.core:core-splashscreen:1.0.0'
// Third-party
implementation 'com.journeyapps:zxing-android-embedded:4.3.0@aar'
implementation 'com.google.zxing:core:3.5.1'
implementation 'org.apache.commons:commons-csv:1.9.0'
implementation 'org.apache.commons:commons-csv:1.10.0'
implementation 'com.jaredrummler:colorpicker:1.1.0'
implementation 'com.github.invissvenska:NumberPickerPreference:1.0.4'
implementation 'net.lingala.zip4j:zip4j:2.11.5'
// SpotBugs
@@ -110,7 +111,7 @@ dependencies {
// Testing
testImplementation 'androidx.test:core:1.5.0'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.robolectric:robolectric:4.10.3'
testImplementation 'org.robolectric:robolectric:4.10'
}
tasks.withType(SpotBugsTask) {

View File

@@ -39,13 +39,6 @@ public class AboutActivity extends CatimaAppCompatActivity {
binding.privacy.setTag("https://catima.app/privacy-policy/");
binding.reportError.setTag("https://github.com/CatimaLoyalty/Android/issues");
binding.rate.setTag("https://play.google.com/store/apps/details?id=me.hackerchick.catima");
binding.donate.setTag("https://catima.app/contribute/#donating");
boolean installedFromGooglePlay = Utils.installedFromGooglePlay(this);
// Hide Google Play rate button if not on Google Play
binding.rate.setVisibility(installedFromGooglePlay ? View.VISIBLE : View.GONE);
// Hide donate button on Google Play (Google Play doesn't allow donation links)
binding.donate.setVisibility(installedFromGooglePlay ? View.GONE : View.VISIBLE);
bindClickListeners();
}
@@ -81,7 +74,6 @@ public class AboutActivity extends CatimaAppCompatActivity {
binding.privacy.setOnClickListener(openExternalBrowser);
binding.reportError.setOnClickListener(openExternalBrowser);
binding.rate.setOnClickListener(openExternalBrowser);
binding.donate.setOnClickListener(openExternalBrowser);
binding.credits.setOnClickListener(view -> showCredits());
}
@@ -94,8 +86,6 @@ public class AboutActivity extends CatimaAppCompatActivity {
binding.privacy.setOnClickListener(null);
binding.reportError.setOnClickListener(null);
binding.rate.setOnClickListener(null);
binding.donate.setOnClickListener(null);
binding.credits.setOnClickListener(null);
}

View File

@@ -1,5 +0,0 @@
package protect.card_locker;
public interface BarcodeImageWriterResultCallback {
void onBarcodeImageWriterResult(boolean success);
}

View File

@@ -42,12 +42,12 @@ public class BarcodeImageWriterTask implements CompatCallable<Bitmap> {
private final int imageHeight;
private final int imageWidth;
private final boolean showFallback;
private final BarcodeImageWriterResultCallback callback;
private final Runnable callback;
BarcodeImageWriterTask(
Context context, ImageView imageView, String cardIdString,
CatimaBarcode barcodeFormat, TextView textView,
boolean showFallback, BarcodeImageWriterResultCallback callback, boolean roundCornerPadding
boolean showFallback, Runnable callback, boolean roundCornerPadding
) {
mContext = context;
@@ -282,7 +282,7 @@ public class BarcodeImageWriterTask implements CompatCallable<Bitmap> {
}
if (callback != null) {
callback.onBarcodeImageWriterResult(isSuccesful);
callback.run();
}
}

View File

@@ -17,6 +17,7 @@ import protect.card_locker.databinding.GroupLayoutBinding;
import protect.card_locker.preferences.Settings;
public class GroupCursorAdapter extends BaseCursorAdapter<GroupCursorAdapter.GroupListItemViewHolder> {
Settings mSettings;
public final Context mContext;
private final GroupAdapterListener mListener;
SQLiteDatabase mDatabase;
@@ -24,6 +25,7 @@ public class GroupCursorAdapter extends BaseCursorAdapter<GroupCursorAdapter.Gro
public GroupCursorAdapter(Context inputContext, Cursor inputCursor, GroupAdapterListener inputListener) {
super(inputCursor, DBHelper.LoyaltyCardDbGroups.ORDER);
setHasStableIds(true);
mSettings = new Settings(inputContext);
mContext = inputContext;
mListener = inputListener;
mDatabase = new DBHelper(inputContext).getReadableDatabase();
@@ -61,6 +63,8 @@ public class GroupCursorAdapter extends BaseCursorAdapter<GroupCursorAdapter.Gro
}
inputHolder.mCardCount.setText(cardCountText);
inputHolder.mName.setTextSize(mSettings.getFontSizeMax(mSettings.getMediumFont()));
inputHolder.mCardCount.setTextSize(mSettings.getFontSizeMax(mSettings.getSmallFont()));
applyClickEvents(inputHolder);
}

View File

@@ -35,6 +35,7 @@ import protect.card_locker.preferences.Settings;
public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCursorAdapter.LoyaltyCardListItemViewHolder> {
private int mCurrentSelectedIndex = -1;
Settings mSettings;
boolean mDarkModeEnabled;
public final Context mContext;
private final CardAdapterListener mListener;
@@ -46,6 +47,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
public LoyaltyCardCursorAdapter(Context inputContext, Cursor inputCursor, CardAdapterListener inputListener) {
super(inputCursor, DBHelper.LoyaltyCardDbIds.ID);
setHasStableIds(true);
mSettings = new Settings(inputContext);
mContext = inputContext;
mListener = inputListener;
mSelectedItems = new SparseBooleanArray();
@@ -105,6 +107,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(inputCursor);
inputHolder.setStoreField(loyaltyCard.store);
if (mShowDetails && !loyaltyCard.note.isEmpty()) {
inputHolder.setNoteField(loyaltyCard.note);
} else {
@@ -129,8 +132,15 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
inputHolder.setExtraField(inputHolder.mExpiryField, null, null);
}
inputHolder.mCardIcon.setContentDescription(loyaltyCard.store);
Utils.setIconOrTextWithBackground(mContext, loyaltyCard, inputHolder.mCardIcon, inputHolder.mCardText);
setHeaderHeight(inputHolder, mShowDetails);
Bitmap cardIcon = Utils.retrieveCardImage(mContext, loyaltyCard.id, ImageLocationType.icon);
if (cardIcon != null) {
inputHolder.mCardIcon.setImageBitmap(cardIcon);
inputHolder.mCardIcon.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
inputHolder.mCardIcon.setImageBitmap(Utils.generateIcon(mContext, loyaltyCard.store, loyaltyCard.headerColor).getLetterTile());
inputHolder.mCardIcon.setScaleType(ImageView.ScaleType.FIT_CENTER);
}
inputHolder.setIconBackgroundColor(loyaltyCard.headerColor != null ? loyaltyCard.headerColor : androidx.appcompat.R.attr.colorPrimary);
inputHolder.toggleCardStateIcon(loyaltyCard.starStatus != 0, loyaltyCard.archiveStatus != 0, itemSelected(inputCursor.getPosition()));
@@ -143,6 +153,19 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
inputHolder.mRow.requestLayout();
}
private void setHeaderHeight(LoyaltyCardListItemViewHolder inputHolder, boolean expanded) {
int iconHeight;
if (expanded) {
iconHeight = ViewGroup.LayoutParams.MATCH_PARENT;
} else {
iconHeight = (int) mContext.getResources().getDimension(R.dimen.cardThumbnailSize);
}
inputHolder.mIconLayout.getLayoutParams().height = expanded ? 0 : iconHeight;
inputHolder.mCardIcon.getLayoutParams().height = iconHeight;
inputHolder.mTickIcon.getLayoutParams().height = iconHeight;
}
private void applyClickEvents(LoyaltyCardListItemViewHolder inputHolder, final int inputPosition) {
inputHolder.mRow.setOnClickListener(inputView -> mListener.onRowClicked(inputPosition));
@@ -218,25 +241,28 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
public class LoyaltyCardListItemViewHolder extends RecyclerView.ViewHolder {
public TextView mCardText, mNoteField, mBalanceField, mValidFromField, mExpiryField;
public TextView mStoreField, mNoteField, mBalanceField, mValidFromField, mExpiryField;
public ImageView mCardIcon, mStarBackground, mStarBorder, mTickIcon, mArchivedBackground;
public MaterialCardView mRow;
public MaterialCardView mRow, mIconLayout;
public ConstraintLayout mStar, mArchived;
public View mDivider;
private int mIconBackgroundColor;
protected LoyaltyCardListItemViewHolder(LoyaltyCardLayoutBinding loyaltyCardLayoutBinding, CardAdapterListener inputListener) {
super(loyaltyCardLayoutBinding.getRoot());
View inputView = loyaltyCardLayoutBinding.getRoot();
mRow = loyaltyCardLayoutBinding.row;
mDivider = loyaltyCardLayoutBinding.infoDivider;
mStoreField = loyaltyCardLayoutBinding.store;
mNoteField = loyaltyCardLayoutBinding.note;
mBalanceField = loyaltyCardLayoutBinding.balance;
mValidFromField = loyaltyCardLayoutBinding.validFrom;
mExpiryField = loyaltyCardLayoutBinding.expiry;
mIconLayout = loyaltyCardLayoutBinding.iconLayout;
mCardIcon = loyaltyCardLayoutBinding.thumbnail;
mCardText = loyaltyCardLayoutBinding.thumbnailText;
mStar = loyaltyCardLayoutBinding.star;
mStarBackground = loyaltyCardLayoutBinding.starBackground;
mStarBorder = loyaltyCardLayoutBinding.starBorder;
@@ -259,15 +285,20 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
return;
}
int size = mSettings.getFontSizeMax(mSettings.getSmallFont());
field.setVisibility(View.VISIBLE);
field.setText(text);
field.setTextSize(size);
field.setTextColor(color != null ? color : MaterialColors.getColor(mContext, com.google.android.material.R.attr.colorSecondary, ContextCompat.getColor(mContext, mDarkModeEnabled ? R.color.md_theme_dark_secondary : R.color.md_theme_light_secondary)));
int drawableSize = dpToPx((size * 24) / 14, mContext);
mDivider.setVisibility(View.VISIBLE);
field.setVisibility(View.VISIBLE);
Drawable icon = field.getCompoundDrawables()[0];
if (icon != null) {
icon.mutate();
icon.setBounds(0, 0, drawableSize, drawableSize);
field.setCompoundDrawablesRelative(icon, null, null, null);
if (color != null) {
@@ -280,12 +311,19 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
field.requestLayout();
}
public void setStoreField(String text) {
mStoreField.setText(text);
mStoreField.setTextSize(mSettings.getFontSizeMax(mSettings.getMediumFont()));
mStoreField.requestLayout();
}
public void setNoteField(String text) {
if (text == null) {
mNoteField.setVisibility(View.GONE);
} else {
mNoteField.setVisibility(View.VISIBLE);
mNoteField.setText(text);
mNoteField.setTextSize(mSettings.getFontSizeMax(mSettings.getSmallFont()));
}
mNoteField.requestLayout();
}

View File

@@ -83,7 +83,7 @@ import protect.card_locker.async.TaskHandler;
import protect.card_locker.databinding.LayoutChipChoiceBinding;
import protect.card_locker.databinding.LoyaltyCardEditActivityBinding;
public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements BarcodeImageWriterResultCallback {
public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
private LoyaltyCardEditActivityBinding binding;
private static final String TAG = "Catima";
@@ -169,6 +169,8 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
AlertDialog confirmExitDialog = null;
boolean validBalance = true;
Runnable barcodeImageGenerationFinishedCallback;
HashMap<String, Currency> currencies = new HashMap<>();
LoyaltyCard tempLoyaltyCard;
@@ -346,6 +348,13 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
enterButton = binding.enterButton;
barcodeImageGenerationFinishedCallback = () -> {
if (!(boolean) barcodeImage.getTag()) {
barcodeImageLayout.setVisibility(View.GONE);
Toast.makeText(LoyaltyCardEditActivity.this, getString(R.string.wrongValueForBarcodeType), Toast.LENGTH_LONG).show();
}
};
storeFieldEdit.addTextChangedListener(new SimpleTextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
@@ -1120,12 +1129,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
Uri photoURI = FileProvider.getUriForFile(LoyaltyCardEditActivity.this, BuildConfig.APPLICATION_ID, Utils.createTempFile(this, TEMP_CAMERA_IMAGE_NAME));
mRequestedImage = type;
try {
mPhotoTakerLauncher.launch(photoURI);
} catch (ActivityNotFoundException e) {
Toast.makeText(getApplicationContext(), R.string.cameraPermissionDeniedTitle, Toast.LENGTH_LONG).show();
Log.e(TAG, "No activity found to handle intent", e);
}
mPhotoTakerLauncher.launch(photoURI);
}
private void selectImageFromGallery(int type) {
@@ -1146,14 +1150,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
}
}
@Override
public void onBarcodeImageWriterResult(boolean success) {
if (!success) {
barcodeImageLayout.setVisibility(View.GONE);
Toast.makeText(LoyaltyCardEditActivity.this, getString(R.string.wrongValueForBarcodeType), Toast.LENGTH_LONG).show();
}
}
class EditCardIdAndBarcode implements View.OnClickListener {
@Override
public void onClick(View v) {
@@ -1551,13 +1547,13 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
barcodeImage.getViewTreeObserver().removeOnGlobalLayoutListener(this);
Log.d(TAG, "ImageView size now known");
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, LoyaltyCardEditActivity.this, true);
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, barcodeImageGenerationFinishedCallback, true);
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
}
});
} else {
Log.d(TAG, "ImageView size known known, creating barcode");
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, this, true);
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, barcodeImageGenerationFinishedCallback, true);
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
}
}

View File

@@ -9,6 +9,8 @@ import android.content.res.Configuration;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Outline;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
@@ -21,10 +23,13 @@ import android.text.style.ForegroundColorSpan;
import android.text.util.Linkify;
import android.util.Log;
import android.util.TypedValue;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewOutlineProvider;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowInsets;
@@ -42,17 +47,23 @@ import androidx.annotation.StringRes;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.appcompat.widget.Toolbar;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.Guideline;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.content.FileProvider;
import androidx.core.graphics.BlendModeColorFilterCompat;
import androidx.core.graphics.BlendModeCompat;
import androidx.core.graphics.ColorUtils;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.core.view.WindowInsetsControllerCompat;
import androidx.core.widget.TextViewCompat;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.bottomappbar.BottomAppBar;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.textfield.TextInputEditText;
import java.io.File;
@@ -71,10 +82,31 @@ import protect.card_locker.async.TaskHandler;
import protect.card_locker.databinding.LoyaltyCardViewLayoutBinding;
import protect.card_locker.preferences.Settings;
public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements BarcodeImageWriterResultCallback {
public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements GestureDetector.OnGestureListener {
private LoyaltyCardViewLayoutBinding binding;
private static final String TAG = "Catima";
private GestureDetector mGestureDetector;
CoordinatorLayout coordinatorLayout;
ConstraintLayout mainLayout;
TextView cardIdFieldView;
BottomAppBar bottomAppBar;
ImageButton bottomAppBarInfoButton;
ImageButton bottomAppBarPreviousButton;
ImageButton bottomAppBarNextButton;
ImageButton bottomAppBarUpdateBalanceButton;
AppCompatTextView storeName;
ImageButton maximizeButton;
ImageView mainImage;
LinearLayout dotIndicator;
ImageButton minimizeButton;
View collapsingToolbarLayout;
AppBarLayout appBarLayout;
ImageView iconImage;
Toolbar portraitToolbar;
Toolbar landscapeToolbar;
int loyaltyCardId;
ArrayList<Integer> cardList;
@@ -89,36 +121,56 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
String barcodeIdString;
CatimaBarcode format;
FloatingActionButton editButton;
Guideline centerGuideline;
SeekBar barcodeScaler;
Bitmap frontImageBitmap;
Bitmap backImageBitmap;
boolean starred;
boolean backgroundNeedsDarkIcons;
boolean isFullscreen = false;
ImageView barcodeRenderTarget;
int mainImageIndex = 0;
List<ImageType> imageTypes;
private ImageView[] dots;
boolean isBarcodeSupported = true;
static final String STATE_IMAGEINDEX = "imageIndex";
static final String STATE_FULLSCREEN = "isFullscreen";
private final int HEADER_FILTER_ALPHA = 127;
final private TaskHandler mTasks = new TaskHandler();
Runnable barcodeImageGenerationFinishedCallback;
public void onMainImageTap() {
// If we're in fullscreen, leave fullscreen
if (isFullscreen) {
setFullscreen(false);
return;
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
if (imageTypes.size() > 1) {
Toast.makeText(this, getString(R.string.swipeToSwitchImages), Toast.LENGTH_SHORT).show();
}
// If the barcode is shown, switch to fullscreen layout
if (imageTypes.get(mainImageIndex) == ImageType.BARCODE) {
setFullscreen(true);
return;
}
return false;
}
// If this is an image, open it in the gallery.
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
openCurrentMainImageInGallery();
}
@@ -160,17 +212,46 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
}
@Override
public void onBarcodeImageWriterResult(boolean success) {
if (!success) {
imageTypes.remove(ImageType.BARCODE);
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
Log.d(TAG, "On fling");
setStateBasedOnImageTypes();
if (Math.abs(velocityY) > (0.75 * Math.abs(velocityX))) {
// Vertical swipe
// Swipe up
if (velocityY < -150) {
if (!isFullscreen) {
setFullscreen(true);
}
return false;
}
// Call correct drawMainImage
setFullscreen(isFullscreen);
// Swipe down
if (velocityY > 150) {
if (isFullscreen) {
setFullscreen(false);
}
return false;
}
} else if (Math.abs(velocityX) > (0.75 * Math.abs(velocityY))) {
// Horizontal swipe
// Swipe right
if (velocityX < -150) {
setMainImage(true, false);
return false;
}
Toast.makeText(LoyaltyCardViewActivity.this, getString(R.string.wrongValueForBarcodeType), Toast.LENGTH_LONG).show();
// Swipe left
if (velocityX > 150) {
setMainImage(false, false);
return false;
}
}
if (imageTypes.size() > 1) {
Toast.makeText(this, getString(R.string.swipeToSwitchImages), Toast.LENGTH_SHORT).show();
}
return true;
}
enum ImageType {
@@ -187,13 +268,40 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
Log.d(TAG, "View activity: id=" + loyaltyCardId);
}
private void setScalerGuideline(int zoomLevel) {
private Drawable getDotIcon(boolean active, boolean darkMode) {
Drawable unwrappedIcon = AppCompatResources.getDrawable(this, active ? R.drawable.active_dot : R.drawable.inactive_dot);
assert unwrappedIcon != null;
Drawable wrappedIcon = DrawableCompat.wrap(unwrappedIcon);
if (darkMode) {
DrawableCompat.setTint(wrappedIcon, Color.WHITE);
} else {
DrawableCompat.setTint(wrappedIcon, Color.BLACK);
}
return wrappedIcon;
}
private Drawable getIcon(int icon, boolean dark) {
Drawable unwrappedIcon = AppCompatResources.getDrawable(this, icon);
assert unwrappedIcon != null;
Drawable wrappedIcon = DrawableCompat.wrap(unwrappedIcon);
wrappedIcon.mutate();
if (dark) {
DrawableCompat.setTint(wrappedIcon, Color.BLACK);
} else {
DrawableCompat.setTintList(wrappedIcon, null);
}
return wrappedIcon;
}
private void setCenterGuideline(int zoomLevel) {
float scale = zoomLevel / 100f;
if (format != null && format.isSquare()) {
binding.scalerGuideline.setGuidelinePercent(0.75f * scale);
centerGuideline.setGuidelinePercent(0.75f * scale);
} else {
binding.scalerGuideline.setGuidelinePercent(0.5f * scale);
centerGuideline.setGuidelinePercent(0.5f * scale);
}
}
@@ -221,9 +329,6 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
super.onCreate(savedInstanceState);
binding = LoyaltyCardViewLayoutBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
settings = new Settings(this);
@@ -250,7 +355,43 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
database = new DBHelper(this).getWritableDatabase();
importURIHelper = new ImportURIHelper(this);
binding.barcodeScaler.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
coordinatorLayout = binding.coordinatorLayout;
mainLayout = binding.mainLayout;
cardIdFieldView = binding.cardIdView;
storeName = binding.storeName;
maximizeButton = binding.maximizeButton;
mainImage = binding.mainImage;
mainImage.setClipToOutline(true);
dotIndicator = binding.dotIndicator;
minimizeButton = binding.minimizeButton;
collapsingToolbarLayout = binding.collapsingToolbarLayout;
appBarLayout = binding.appBarLayout;
bottomAppBar = binding.bottomAppBar;
iconImage = binding.iconImage;
portraitToolbar = binding.toolbar;
landscapeToolbar = binding.toolbarLandscape;
bottomAppBarInfoButton = binding.buttonShowInfo;
bottomAppBarPreviousButton = binding.buttonPrevious;
bottomAppBarNextButton = binding.buttonNext;
bottomAppBarUpdateBalanceButton = binding.buttonUpdateBalance;
barcodeImageGenerationFinishedCallback = () -> {
if (!(boolean) mainImage.getTag()) {
mainImage.setVisibility(View.GONE);
imageTypes.remove(ImageType.BARCODE);
// Redraw UI
setDotIndicator(Utils.isDarkModeEnabled(LoyaltyCardViewActivity.this));
setFullscreen(isFullscreen);
Toast.makeText(LoyaltyCardViewActivity.this, getString(R.string.wrongValueForBarcodeType), Toast.LENGTH_LONG).show();
}
};
centerGuideline = binding.centerGuideline;
barcodeScaler = binding.barcodeScaler;
barcodeScaler.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (!fromUser) {
@@ -258,14 +399,14 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
return;
}
Log.d(TAG, "Progress is " + progress);
Log.d(TAG, "Max is " + binding.barcodeScaler.getMax());
float scale = (float) progress / (float) binding.barcodeScaler.getMax();
Log.d(TAG, "Max is " + barcodeScaler.getMax());
float scale = (float) progress / (float) barcodeScaler.getMax();
Log.d(TAG, "Scaling to " + scale);
loyaltyCard.zoomLevel = progress;
DBHelper.updateLoyaltyCardZoomLevel(database, loyaltyCardId, loyaltyCard.zoomLevel);
setScalerGuideline(loyaltyCard.zoomLevel);
setCenterGuideline(loyaltyCard.zoomLevel);
drawMainImage(mainImageIndex, true, isFullscreen);
}
@@ -283,9 +424,12 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
rotationEnabled = true;
binding.fullscreenButtonMinimize.setOnClickListener(v -> setFullscreen(false));
// Allow making barcode fullscreen on tap
maximizeButton.setOnClickListener(v -> setFullscreen(true));
minimizeButton.setOnClickListener(v -> setFullscreen(false));
binding.fabEdit.setOnClickListener(v -> {
editButton = binding.fabEdit;
editButton.setOnClickListener(v -> {
Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
Bundle bundle = new Bundle();
bundle.putInt("id", loyaltyCardId);
@@ -294,21 +438,35 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
startActivity(intent);
finish();
});
binding.fabEdit.bringToFront();
editButton.bringToFront();
binding.bottomAppBarInfoButton.setOnClickListener(view -> showInfoDialog());
binding.bottomAppBarPreviousButton.setOnClickListener(view -> prevNextCard(false));
binding.bottomAppBarNextButton.setOnClickListener(view -> prevNextCard(true));
binding.bottomAppBarUpdateBalanceButton.setOnClickListener(view -> showBalanceUpdateDialog());
binding.mainImage.setOnClickListener(view -> onMainImageTap());
// This long-press was originally only intended for when Talkback was used but sadly limiting
// this doesn't seem to work well
binding.mainImage.setOnLongClickListener(view -> {
setMainImage(true, true);
return true;
appBarLayout.setOutlineProvider(new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
ViewOutlineProvider.BACKGROUND.getOutline(view, outline);
outline.setAlpha(0f);
}
});
binding.fullscreenImage.setOnClickListener(view -> onMainImageTap());
bottomAppBarInfoButton.setOnClickListener(view -> showInfoDialog());
bottomAppBarPreviousButton.setOnClickListener(view -> prevNextCard(false));
bottomAppBarNextButton.setOnClickListener(view -> prevNextCard(true));
bottomAppBarUpdateBalanceButton.setOnClickListener(view -> showBalanceUpdateDialog());
mGestureDetector = new GestureDetector(this, this);
View.OnTouchListener gestureTouchListener = (v, event) -> mGestureDetector.onTouchEvent(event);
mainImage.setOnTouchListener(gestureTouchListener);
appBarLayout.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
iconImage.setLayoutParams(new CoordinatorLayout.LayoutParams(
CoordinatorLayout.LayoutParams.MATCH_PARENT, appBarLayout.getHeight())
);
iconImage.setClipBounds(new Rect(left, top, right, bottom));
}
});
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
private SpannableStringBuilder padSpannableString(SpannableStringBuilder spannableStringBuilder) {
@@ -335,6 +493,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
dialogContentPadding,
dialogTitlePadding
);
infoTitleView.setTextSize(settings.getFontSizeMax(settings.getMediumFont()));
infoTitleView.setText(loyaltyCard.store);
infoDialog.setCustomTitle(infoTitleView);
infoDialog.setTitle(loyaltyCard.store);
@@ -471,20 +630,20 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
private void setBottomAppBarButtonState() {
if (!loyaltyCard.note.isEmpty() || !loyaltyCardGroups.isEmpty() || hasBalance(loyaltyCard) || loyaltyCard.validFrom != null || loyaltyCard.expiry != null) {
binding.bottomAppBarInfoButton.setVisibility(View.VISIBLE);
bottomAppBarInfoButton.setVisibility(View.VISIBLE);
} else {
binding.bottomAppBarInfoButton.setVisibility(View.GONE);
bottomAppBarInfoButton.setVisibility(View.GONE);
}
if (cardList == null || cardList.size() == 1) {
binding.bottomAppBarPreviousButton.setVisibility(View.GONE);
binding.bottomAppBarNextButton.setVisibility(View.GONE);
bottomAppBarPreviousButton.setVisibility(View.GONE);
bottomAppBarNextButton.setVisibility(View.GONE);
} else {
binding.bottomAppBarPreviousButton.setVisibility(View.VISIBLE);
binding.bottomAppBarNextButton.setVisibility(View.VISIBLE);
bottomAppBarPreviousButton.setVisibility(View.VISIBLE);
bottomAppBarNextButton.setVisibility(View.VISIBLE);
}
binding.bottomAppBarUpdateBalanceButton.setVisibility(hasBalance(loyaltyCard) ? View.VISIBLE : View.GONE);
bottomAppBarUpdateBalanceButton.setVisibility(hasBalance(loyaltyCard) ? View.VISIBLE : View.GONE);
}
private void prevNextCard(boolean next) {
@@ -579,8 +738,6 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
return;
}
setTitle(loyaltyCard.store);
loyaltyCardGroups = DBHelper.getLoyaltyCardGroups(database, loyaltyCardId);
setupOrientation();
@@ -589,7 +746,19 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
cardIdString = loyaltyCard.cardId;
barcodeIdString = loyaltyCard.barcodeId;
binding.cardIdView.setText(loyaltyCard.cardId);
cardIdFieldView.setText(loyaltyCard.cardId);
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(cardIdFieldView,
settings.getFontSizeMin(settings.getLargeFont()), settings.getFontSizeMax(settings.getLargeFont()),
1, TypedValue.COMPLEX_UNIT_SP);
storeName.setText(loyaltyCard.store);
storeName.setTextSize(settings.getFontSizeMax(settings.getLargeFont()));
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(
storeName,
settings.getFontSizeMin(settings.getLargeFont()),
settings.getFontSizeMax(settings.getLargeFont()),
1,
TypedValue.COMPLEX_UNIT_DIP);
int backgroundHeaderColor;
if (loyaltyCard.headerColor != null) {
@@ -598,29 +767,72 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
backgroundHeaderColor = LetterBitmap.getDefaultColor(this, loyaltyCard.store);
}
int textColor;
if (Utils.needsDarkForeground(backgroundHeaderColor)) {
textColor = Color.BLACK;
} else {
textColor = Color.WHITE;
}
storeName.setTextColor(textColor);
landscapeToolbar.setTitleTextColor(textColor);
// Also apply colours to UI elements
int darkenedColor = ColorUtils.blendARGB(backgroundHeaderColor, Color.BLACK, 0.1f);
binding.barcodeScaler.setProgressTintList(ColorStateList.valueOf(darkenedColor));
binding.barcodeScaler.setThumbTintList(ColorStateList.valueOf(darkenedColor));
binding.bottomAppBar.setBackgroundColor(darkenedColor);
barcodeScaler.setProgressTintList(ColorStateList.valueOf(darkenedColor));
barcodeScaler.setThumbTintList(ColorStateList.valueOf(darkenedColor));
maximizeButton.setBackgroundColor(darkenedColor);
minimizeButton.setBackgroundColor(darkenedColor);
bottomAppBar.setBackgroundColor(darkenedColor);
maximizeButton.setColorFilter(textColor);
minimizeButton.setColorFilter(textColor);
int complementaryColor = Utils.getComplementaryColor(darkenedColor);
binding.fabEdit.setBackgroundTintList(ColorStateList.valueOf(complementaryColor));
Drawable editButtonIcon = binding.fabEdit.getDrawable();
editButton.setBackgroundTintList(ColorStateList.valueOf(complementaryColor));
Drawable editButtonIcon = editButton.getDrawable();
editButtonIcon.mutate();
editButtonIcon.setTint(Utils.needsDarkForeground(complementaryColor) ? Color.BLACK : Color.WHITE);
binding.fabEdit.setImageDrawable(editButtonIcon);
editButton.setImageDrawable(editButtonIcon);
Utils.setIconOrTextWithBackground(this, loyaltyCard, binding.iconImage, binding.iconText);
Bitmap icon = Utils.retrieveCardImage(this, loyaltyCard.id, ImageLocationType.icon);
if (icon != null) {
int backgroundAlphaColor = Utils.needsDarkForeground(backgroundHeaderColor) ? Color.WHITE : Color.BLACK;
Log.d("onResume", "setting icon image");
iconImage.setImageBitmap(icon);
int backgroundWithAlpha = Color.argb(HEADER_FILTER_ALPHA, Color.red(backgroundAlphaColor), Color.green(backgroundAlphaColor), Color.blue(backgroundAlphaColor));
// for images that has alpha
appBarLayout.setBackgroundColor(backgroundWithAlpha);
} else {
Bitmap plain = Bitmap.createBitmap(new int[]{backgroundHeaderColor}, 1, 1, Bitmap.Config.ARGB_8888);
iconImage.setImageBitmap(plain);
appBarLayout.setBackgroundColor(Color.TRANSPARENT);
}
// If the background is very bright, we should use dark icons
backgroundNeedsDarkIcons = Utils.needsDarkForeground(backgroundHeaderColor);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setHomeAsUpIndicator(getIcon(R.drawable.home_arrow_back_white, backgroundNeedsDarkIcons));
}
fixBottomAppBarImageButtonColor(binding.bottomAppBarInfoButton);
fixBottomAppBarImageButtonColor(binding.bottomAppBarPreviousButton);
fixBottomAppBarImageButtonColor(binding.bottomAppBarNextButton);
fixBottomAppBarImageButtonColor(binding.bottomAppBarUpdateBalanceButton);
fixImageButtonColor(bottomAppBarInfoButton);
fixImageButtonColor(bottomAppBarPreviousButton);
fixImageButtonColor(bottomAppBarNextButton);
fixImageButtonColor(bottomAppBarUpdateBalanceButton);
setBottomAppBarButtonState();
// Make notification area light if dark icons are needed
if (Build.VERSION.SDK_INT >= 23) {
View decorView = getWindow().getDecorView();
WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(getWindow(), decorView);
wic.setAppearanceLightStatusBars(backgroundNeedsDarkIcons);
window.setStatusBarColor(Color.TRANSPARENT);
} else {
// Darken statusbar if icons won't be visible otherwise
window.setStatusBarColor(backgroundNeedsDarkIcons ? ColorUtils.blendARGB(backgroundHeaderColor, Color.BLACK, 0.15f) : Color.TRANSPARENT);
}
// Set shadow colour of store text so even same color on same color would be readable
storeName.setShadowLayer(1, 1, 1, backgroundNeedsDarkIcons ? Color.BLACK : Color.WHITE);
if (format != null && !format.isSupported()) {
isBarcodeSupported = false;
@@ -645,29 +857,11 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
imageTypes.add(ImageType.IMAGE_BACK);
}
setStateBasedOnImageTypes();
setDotIndicator(Utils.isDarkModeEnabled(this));
setFullscreen(isFullscreen);
DBHelper.updateLoyaltyCardLastUsed(database, loyaltyCard.id);
invalidateOptionsMenu();
}
private void setStateBasedOnImageTypes() {
// Decrease the card holder size to only fit the value if there is no barcode
// This looks much cleaner
ViewGroup.LayoutParams cardHolderLayoutParams = binding.cardHolder.getLayoutParams();
if (imageTypes.isEmpty()) {
cardHolderLayoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
} else {
cardHolderLayoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
}
binding.cardHolder.setLayoutParams(cardHolderLayoutParams);
// Ensure buttons and accessibility are correct
setMainImagePreviousNextButtons();
setMainImageAccessibility();
}
@SuppressWarnings("deprecation")
@@ -676,7 +870,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
}
private void fixBottomAppBarImageButtonColor(ImageButton imageButton) {
private void fixImageButtonColor(ImageButton imageButton) {
imageButton.setColorFilter(BlendModeColorFilterCompat.createBlendModeColorFilterCompat(backgroundNeedsDarkIcons ? Color.BLACK : Color.WHITE, BlendModeCompat.SRC_ATOP));
}
@@ -693,6 +887,18 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.card_view_menu, menu);
starred = loyaltyCard.starStatus != 0;
if (loyaltyCard.archiveStatus != 0) {
menu.findItem(R.id.action_unarchive).setVisible(true);
menu.findItem(R.id.action_archive).setVisible(false);
} else {
menu.findItem(R.id.action_unarchive).setVisible(false);
menu.findItem(R.id.action_archive).setVisible(true);
}
menu.findItem(R.id.action_overflow).setIcon(getIcon(R.drawable.ic_overflow_menu, backgroundNeedsDarkIcons));
menu.findItem(R.id.action_share).setIcon(getIcon(R.drawable.ic_share_white, backgroundNeedsDarkIcons));
return super.onCreateOptionsMenu(menu);
}
@@ -701,27 +907,13 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
if (loyaltyCard != null) {
// Update star status
if (loyaltyCard.starStatus == 1) {
menu.findItem(R.id.action_star_unstar).setIcon(R.drawable.ic_starred);
menu.findItem(R.id.action_star_unstar).setTitle(R.string.unstar);
} else {
menu.findItem(R.id.action_star_unstar).setIcon(R.drawable.ic_unstarred);
menu.findItem(R.id.action_star_unstar).setTitle(R.string.star);
}
// Update archive/unarchive button
if (loyaltyCard.archiveStatus != 0) {
menu.findItem(R.id.action_unarchive).setVisible(true);
menu.findItem(R.id.action_archive).setVisible(false);
} else {
menu.findItem(R.id.action_unarchive).setVisible(false);
menu.findItem(R.id.action_archive).setVisible(true);
}
if (starred) {
menu.findItem(R.id.action_star_unstar).setIcon(getIcon(R.drawable.ic_starred_white, backgroundNeedsDarkIcons));
menu.findItem(R.id.action_star_unstar).setTitle(R.string.unstar);
} else {
menu.findItem(R.id.action_star_unstar).setIcon(getIcon(R.drawable.ic_unstarred_white, backgroundNeedsDarkIcons));
menu.findItem(R.id.action_star_unstar).setTitle(R.string.star);
}
return true;
}
@@ -750,11 +942,11 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
return true;
} else if (id == R.id.action_star_unstar) {
DBHelper.updateLoyaltyCardStarStatus(database, loyaltyCardId, loyaltyCard.starStatus == 0 ? 1 : 0);
starred = !starred;
DBHelper.updateLoyaltyCardStarStatus(database, loyaltyCardId, starred ? 1 : 0);
// Re-init loyaltyCard with new data from DB
onResume();
invalidateOptionsMenu();
return true;
} else if (id == R.id.action_archive) {
@@ -763,7 +955,6 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
// Re-init loyaltyCard with new data from DB
onResume();
invalidateOptionsMenu();
return true;
} else if (id == R.id.action_unarchive) {
@@ -772,7 +963,6 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
// Re-init loyaltyCard with new data from DB
onResume();
invalidateOptionsMenu();
return true;
} else if (id == R.id.action_delete) {
@@ -803,10 +993,23 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.d(TAG, "Detected landscape mode");
binding.iconContainer.setVisibility(View.GONE);
setTitle(loyaltyCard.store);
collapsingToolbarLayout.setVisibility(View.GONE);
portraitToolbar.setVisibility(View.GONE);
landscapeToolbar.setVisibility(View.VISIBLE);
setSupportActionBar(landscapeToolbar);
} else {
Log.d(TAG, "Detected portrait mode");
binding.iconContainer.setVisibility(View.VISIBLE);
setTitle("");
collapsingToolbarLayout.setVisibility(View.VISIBLE);
portraitToolbar.setVisibility(View.VISIBLE);
landscapeToolbar.setVisibility(View.GONE);
setSupportActionBar(portraitToolbar);
}
enableToolbarBackButton();
@@ -814,16 +1017,15 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
private void drawBarcode(boolean addPadding) {
mTasks.flushTaskList(TaskHandler.TYPE.BARCODE, true, false, false);
if (format != null) {
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(
getApplicationContext(),
barcodeRenderTarget,
mainImage,
barcodeIdString != null ? barcodeIdString : cardIdString,
format,
null,
false,
this,
barcodeImageGenerationFinishedCallback,
addPadding);
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
}
@@ -831,11 +1033,11 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
private void redrawBarcodeAfterResize(boolean addPadding) {
if (format != null) {
barcodeRenderTarget.getViewTreeObserver().addOnGlobalLayoutListener(
mainImage.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
barcodeRenderTarget.getViewTreeObserver().removeOnGlobalLayoutListener(this);
mainImage.getViewTreeObserver().removeOnGlobalLayoutListener(this);
Log.d(TAG, "ImageView size now known");
drawBarcode(addPadding);
@@ -846,18 +1048,25 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
private void drawMainImage(int index, boolean waitForResize, boolean isFullscreen) {
if (imageTypes.isEmpty()) {
barcodeRenderTarget.setVisibility(View.GONE);
mainImage.setVisibility(View.GONE);
return;
}
if (dots != null) {
boolean darkMode = Utils.isDarkModeEnabled(getApplicationContext());
for (int i = 0; i < dots.length; i++) {
dots[i].setImageDrawable(getDotIcon(i == index, darkMode));
}
}
ImageType wantedImageType = imageTypes.get(index);
if (wantedImageType == ImageType.BARCODE) {
// Use border in non-fullscreen mode
if (!isFullscreen) {
barcodeRenderTarget.setBackground(AppCompatResources.getDrawable(this, R.drawable.round_outline));
mainImage.setBackground(AppCompatResources.getDrawable(this, R.drawable.round_outline));
} else {
barcodeRenderTarget.setBackgroundColor(Color.WHITE);
mainImage.setBackgroundColor(Color.WHITE);
}
if (waitForResize) {
@@ -866,27 +1075,27 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
drawBarcode(!isFullscreen);
}
barcodeRenderTarget.setContentDescription(getString(R.string.barcodeImageDescriptionWithType, format.prettyName()));
mainImage.setContentDescription(getString(R.string.barcodeImageDescriptionWithType, format.prettyName()));
} else if (wantedImageType == ImageType.IMAGE_FRONT) {
barcodeRenderTarget.setImageBitmap(frontImageBitmap);
barcodeRenderTarget.setBackgroundColor(Color.TRANSPARENT);
barcodeRenderTarget.setContentDescription(getString(R.string.frontImageDescription));
mainImage.setImageBitmap(frontImageBitmap);
mainImage.setBackgroundColor(Color.TRANSPARENT);
mainImage.setContentDescription(getString(R.string.frontImageDescription));
} else if (wantedImageType == ImageType.IMAGE_BACK) {
barcodeRenderTarget.setImageBitmap(backImageBitmap);
barcodeRenderTarget.setBackgroundColor(Color.TRANSPARENT);
barcodeRenderTarget.setContentDescription(getString(R.string.backImageDescription));
mainImage.setImageBitmap(backImageBitmap);
mainImage.setBackgroundColor(Color.TRANSPARENT);
mainImage.setContentDescription(getString(R.string.backImageDescription));
} else {
throw new IllegalArgumentException("Unknown image type: " + wantedImageType);
}
barcodeRenderTarget.setVisibility(View.VISIBLE);
mainImage.setVisibility(View.VISIBLE);
}
private void setMainImage(boolean next, boolean overflow) {
int newIndex = mainImageIndex + (next ? 1 : -1);
if (newIndex >= imageTypes.size() && overflow) {
newIndex = 0;
newIndex = 0;
}
if (newIndex == -1 || newIndex >= imageTypes.size()) {
@@ -896,85 +1105,24 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
mainImageIndex = newIndex;
drawMainImage(newIndex, false, isFullscreen);
setMainImagePreviousNextButtons();
setMainImageAccessibility();
}
private void setMainImageAccessibility() {
// Single-click actions
if (mainImageIndex == 0) {
ViewCompat.replaceAccessibilityAction(
binding.mainImage,
AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CLICK,
getString(R.string.moveBarcodeToTopOfScreen),
null
);
} else {
int accessibilityClickAction;
if (mainImageIndex == 1) {
accessibilityClickAction = R.string.openFrontImageInGalleryApp;
} else if (mainImageIndex == 2) {
accessibilityClickAction = R.string.openBackImageInGalleryApp;
} else {
throw new IndexOutOfBoundsException("setMainImageAccessibility was out of range (action_click)");
private void setDotIndicator(boolean darkMode) {
dotIndicator.removeAllViews();
if (imageTypes.size() >= 2) {
dots = new ImageView[imageTypes.size()];
for (int i = 0; i < imageTypes.size(); i++) {
dots[i] = new ImageView(this);
dots[i].setImageDrawable(getDotIcon(false, darkMode));
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(8, 0, 8, 0);
dotIndicator.addView(dots[i], params);
}
ViewCompat.replaceAccessibilityAction(
binding.mainImage,
AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CLICK,
getString(accessibilityClickAction),
null
);
}
// Long-press actions
int accessibilityLongPressAction;
if (mainImageIndex == 0) {
accessibilityLongPressAction = R.string.switchToFrontImage;
} else if (mainImageIndex == 1) {
accessibilityLongPressAction = R.string.switchToBackImage;
} else if (mainImageIndex == 2) {
accessibilityLongPressAction = R.string.switchToBarcode;
} else {
throw new IndexOutOfBoundsException("setMainImageAccessibility was out of range (action_long_click)");
}
ViewCompat.replaceAccessibilityAction(
binding.mainImage,
AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_LONG_CLICK,
getString(accessibilityLongPressAction),
null
);
}
private void setMainImagePreviousNextButtons() {
if (imageTypes.size() < 2) {
binding.mainLeftButton.setVisibility(View.INVISIBLE);
binding.mainRightButton.setVisibility(View.INVISIBLE);
binding.mainLeftButton.setOnClickListener(null);
binding.mainRightButton.setOnClickListener(null);
return;
}
// Enable left button if we can go further left
if (mainImageIndex > 0) {
binding.mainLeftButton.setVisibility(View.VISIBLE);
binding.mainLeftButton.setOnClickListener(view -> setMainImage(false, false));
} else {
binding.mainLeftButton.setVisibility(View.INVISIBLE);
binding.mainLeftButton.setOnClickListener(null);
}
// Enable right button if we can go further right
if (mainImageIndex < (imageTypes.size() - 1)) {
binding.mainRightButton.setVisibility(View.VISIBLE);
binding.mainRightButton.setOnClickListener(view -> setMainImage(true, false));
} else {
binding.mainRightButton.setVisibility(View.INVISIBLE);
binding.mainRightButton.setOnClickListener(null);
dotIndicator.setVisibility(View.VISIBLE);
}
}
@@ -985,31 +1133,37 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
* by machines which offer no space to insert the complete device.
*/
private void setFullscreen(boolean enabled) {
ActionBar actionBar = getSupportActionBar();
isFullscreen = enabled;
ActionBar actionBar = getSupportActionBar();
if (enabled && !imageTypes.isEmpty()) {
Log.d(TAG, "Move into fullscreen");
barcodeRenderTarget = binding.fullscreenImage;
// Show only fullscreen view
binding.container.setVisibility(View.GONE);
binding.fullscreenLayout.setVisibility(View.VISIBLE);
drawMainImage(mainImageIndex, true, isFullscreen);
binding.barcodeScaler.setProgress(loyaltyCard.zoomLevel);
setScalerGuideline(loyaltyCard.zoomLevel);
barcodeScaler.setProgress(loyaltyCard.zoomLevel);
setCenterGuideline(loyaltyCard.zoomLevel);
// Hide maximize and show minimize button and scaler
maximizeButton.setVisibility(View.GONE);
minimizeButton.setVisibility(View.VISIBLE);
barcodeScaler.setVisibility(View.VISIBLE);
// Hide actionbar
if (actionBar != null) {
actionBar.hide();
}
// Hide toolbars
appBarLayout.setVisibility(View.INVISIBLE);
iconImage.setVisibility(View.INVISIBLE);
collapsingToolbarLayout.setVisibility(View.GONE);
landscapeToolbar.setVisibility(View.GONE);
// Hide other UI elements
binding.bottomAppBar.setVisibility(View.GONE);
binding.fabEdit.setVisibility(View.GONE);
cardIdFieldView.setVisibility(View.GONE);
bottomAppBar.setVisibility(View.GONE);
editButton.setVisibility(View.GONE);
// Set Android to fullscreen mode
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
@@ -1024,22 +1178,31 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
} else {
Log.d(TAG, "Move out of fullscreen");
barcodeRenderTarget = binding.mainImage;
// Show only regular view
binding.container.setVisibility(View.VISIBLE);
binding.fullscreenLayout.setVisibility(View.GONE);
// Reset center guideline
setCenterGuideline(100);
drawMainImage(mainImageIndex, true, isFullscreen);
// Show maximize and hide minimize button and scaler
maximizeButton.setVisibility(imageTypes.isEmpty() ? View.GONE : View.VISIBLE);
minimizeButton.setVisibility(View.GONE);
barcodeScaler.setVisibility(View.GONE);
// Show actionbar
if (actionBar != null) {
actionBar.show();
}
// Show appropriate toolbar
appBarLayout.setVisibility(View.VISIBLE);
setupOrientation();
iconImage.setVisibility(View.VISIBLE);
// Show other UI elements
binding.bottomAppBar.setVisibility(View.VISIBLE);
binding.fabEdit.setVisibility(View.VISIBLE);
cardIdFieldView.setVisibility(View.VISIBLE);
editButton.setVisibility(View.VISIBLE);
bottomAppBar.setVisibility(View.VISIBLE);
// Unset fullscreen mode
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
@@ -1053,7 +1216,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
}
}
Log.d("setFullScreen", "Is full screen enabled? " + enabled + " Zoom Level = " + binding.barcodeScaler.getProgress());
Log.d("setFullScreen", "Is full screen enabled? " + enabled + " Zoom Level = " + barcodeScaler.getProgress());
}
@SuppressWarnings("deprecation")

View File

@@ -50,7 +50,7 @@ import protect.card_locker.databinding.MainActivityBinding;
import protect.card_locker.databinding.SortingOptionBinding;
import protect.card_locker.preferences.SettingsActivity;
public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener {
public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener, GestureDetector.OnGestureListener {
private MainActivityBinding binding;
private ArchiveActivityBinding archiveActivityBinding;
private ContentMainBinding contentMainBinding;
@@ -63,6 +63,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
private LoyaltyCardCursorAdapter mAdapter;
private ActionMode mCurrentActionMode;
private SearchView mSearchView;
private GestureDetector mGestureDetector;
private int mLoyaltyCardCount = 0;
protected String mFilter = "";
protected Object mGroup = null;
@@ -281,11 +282,19 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
}
});
mGestureDetector = new GestureDetector(this, this);
View.OnTouchListener gestureTouchListener = (v, event) -> mGestureDetector.onTouchEvent(event);
mHelpSection = contentMainBinding.helpSection;
mNoMatchingCardsText = contentMainBinding.noMatchingCardsText;
mNoGroupCardsText = contentMainBinding.noGroupCardsText;
mCardList = contentMainBinding.list;
mNoMatchingCardsText.setOnTouchListener(gestureTouchListener);
mCardList.setOnTouchListener(gestureTouchListener);
mNoGroupCardsText.setOnTouchListener(gestureTouchListener);
mAdapter = new LoyaltyCardCursorAdapter(this, null, this);
mCardList.setAdapter(mAdapter);
registerForContextMenu(mCardList);
@@ -759,6 +768,83 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
updateLoyaltyCardList(false);
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
mGestureDetector.onTouchEvent(ev);
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
Log.d(TAG, "On fling");
// Don't swipe if we have too much vertical movement
if (Math.abs(velocityY) > (0.75 * Math.abs(velocityX))) {
return false;
}
if (groupsTabLayout.getTabCount() < 2) {
return false;
}
Integer currentTab = groupsTabLayout.getSelectedTabPosition();
Log.d("onFling", "Current Tab " + currentTab);
// Swipe right
if (velocityX < -150) {
Log.d("onFling", "Right Swipe detected " + velocityX);
Integer nextTab = currentTab + 1;
if (nextTab == groupsTabLayout.getTabCount()) {
groupsTabLayout.selectTab(groupsTabLayout.getTabAt(0));
} else {
groupsTabLayout.selectTab(groupsTabLayout.getTabAt(nextTab));
}
return true;
}
// Swipe left
if (velocityX > 150) {
Log.d("onFling", "Left Swipe detected " + velocityX);
Integer nextTab = currentTab - 1;
if (nextTab < 0) {
groupsTabLayout.selectTab(groupsTabLayout.getTabAt(groupsTabLayout.getTabCount() - 1));
} else {
groupsTabLayout.selectTab(groupsTabLayout.getTabAt(nextTab));
}
return true;
}
return false;
}
@Override
public void onRowLongClicked(int inputPosition) {
enableActionMode(inputPosition);

View File

@@ -18,9 +18,6 @@ import android.provider.MediaStore;
import android.util.Log;
import android.util.TypedValue;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.RawRes;
@@ -602,39 +599,4 @@ public class Utils {
return result.toString();
}
public static void setIconOrTextWithBackground(Context context, LoyaltyCard loyaltyCard, ImageView backgroundOrIcon, TextView textWhenNoImage) {
Bitmap icon = Utils.retrieveCardImage(context, loyaltyCard.id, ImageLocationType.icon);
if (icon != null) {
Log.d("onResume", "setting icon image");
textWhenNoImage.setVisibility(View.GONE);
backgroundOrIcon.setImageBitmap(icon);
backgroundOrIcon.setBackgroundColor(Color.TRANSPARENT);
} else {
textWhenNoImage.setVisibility(View.VISIBLE);
int headerColor = loyaltyCard.headerColor != null ? loyaltyCard.headerColor : LetterBitmap.getDefaultColor(context, loyaltyCard.store);
backgroundOrIcon.setImageBitmap(null);
backgroundOrIcon.setBackgroundColor(headerColor);
textWhenNoImage.setText(loyaltyCard.store);
textWhenNoImage.setTextColor(Utils.needsDarkForeground(headerColor) ? Color.BLACK : Color.WHITE);
}
}
public static boolean installedFromGooglePlay(Context context) {
try {
String packageName = context.getPackageName();
String installer;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
installer = context.getPackageManager().getInstallSourceInfo(packageName).getInstallingPackageName();
} else {
installer = context.getPackageManager().getInstallerPackageName(packageName);
}
return installer.equals("com.android.vending");
} catch (Throwable ignored) {
return false;
}
}
}

View File

@@ -17,6 +17,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.UncheckedIOException;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@@ -100,7 +101,7 @@ public class CatimaImporter implements Importer {
}
parser.close();
} catch (IllegalArgumentException | IllegalStateException e) {
} catch (UncheckedIOException e) {
throw new FormatException("Issue parsing CSV data", e);
}
}
@@ -182,7 +183,7 @@ public class CatimaImporter implements Importer {
throw new InterruptedException();
}
}
} catch (IllegalArgumentException | IllegalStateException e) {
} catch (UncheckedIOException e) {
throw new FormatException("Issue parsing CSV data", e);
} finally {
groupParser.close();
@@ -207,7 +208,7 @@ public class CatimaImporter implements Importer {
throw new InterruptedException();
}
}
} catch (IllegalArgumentException | IllegalStateException e) {
} catch (UncheckedIOException e) {
throw new FormatException("Issue parsing CSV data", e);
} finally {
cardParser.close();
@@ -232,7 +233,7 @@ public class CatimaImporter implements Importer {
throw new InterruptedException();
}
}
} catch (IllegalArgumentException | IllegalStateException e) {
} catch (UncheckedIOException e) {
throw new FormatException("Issue parsing CSV data", e);
} finally {
cardGroupParser.close();

View File

@@ -63,6 +63,30 @@ public class Settings {
return AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
}
public double getFontSizeScale() {
return getInt(R.string.settings_key_max_font_size_scale, R.integer.settings_max_font_size_scale_pct) / 100.0;
}
public int getSmallFont() {
return 14;
}
public int getMediumFont() {
return 28;
}
public int getLargeFont() {
return 40;
}
public int getFontSizeMin(int fontSize) {
return (int) (Math.round(fontSize / 2.0) - 1);
}
public int getFontSizeMax(int fontSize) {
return (int) Math.round(fontSize * getFontSizeScale());
}
public boolean useMaxBrightnessDisplayingBarcode() {
return getBoolean(R.string.settings_key_display_barcode_max_brightness, true);
}

View File

@@ -13,13 +13,18 @@ import java.util.List;
import java.util.Locale;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentResultListener;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import kotlin.Suppress;
import nl.invissvenska.numberpickerpreference.NumberDialogPreference;
import nl.invissvenska.numberpickerpreference.NumberPickerPreferenceDialogFragment;
import protect.card_locker.CatimaAppCompatActivity;
import protect.card_locker.MainActivity;
import protect.card_locker.R;
@@ -159,5 +164,30 @@ public class SettingsActivity extends CatimaAppCompatActivity {
activity.recreate();
}
}
@Override
@SuppressWarnings("deprecation") // setTargetFragment
// androidx.preference.PreferenceDialogFragmentCompat uses the deprecated method
// `getTargetFragment()`, which throws if `setTargetFragment()` isn't used before.
// While this isn't fixed on upstream, suppress the deprecation warning
// https://issuetracker.google.com/issues/181793702
public void onDisplayPreferenceDialog(Preference preference) {
if (preference instanceof NumberDialogPreference) {
NumberDialogPreference dialogPreference = (NumberDialogPreference) preference;
DialogFragment dialogFragment = NumberPickerPreferenceDialogFragment
.newInstance(
dialogPreference.getKey(),
dialogPreference.getMinValue(),
dialogPreference.getMaxValue(),
dialogPreference.getStepValue(),
dialogPreference.getUnitText()
);
dialogFragment.setTargetFragment(this, 0);
dialogFragment.show(getParentFragmentManager(), DIALOG_FRAGMENT_TAG);
} else {
super.onDisplayPreferenceDialog(preference);
}
}
}
}

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" android:useLevel="true"
android:dither="true">
<size android:height="12dip" android:width="12dip"/>
<solid android:color="@android:color/white"/>
</shape>

View File

@@ -1,24 +0,0 @@
<layer-list xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="?attr/colorSurface" />
<corners
android:bottomLeftRadius="28dp"
android:bottomRightRadius="28dp"
android:topLeftRadius="28dp"
android:topRightRadius="28dp" />
</shape>
</item>
<item>
<shape>
<solid android:color="@color/m3_popupmenu_overlay_color"
tools:ignore="PrivateResource" />
<corners
android:bottomLeftRadius="28dp"
android:bottomRightRadius="28dp"
android:topLeftRadius="28dp"
android:topRightRadius="28dp" />
</shape>
</item>
</layer-list>

View File

@@ -1,5 +1,5 @@
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
<vector android:autoMirrored="true" android:height="24dp" android:tint="?attr/colorControlNormal"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,17.27L18.18,21l-1.64,-7.03L22,9.24l-7.19,-0.61L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21z"/>
<path android:fillColor="@android:color/white" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>

View File

@@ -1,4 +1,4 @@
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M15.41,7.41L14,6l-6,6 6,6 1.41,-1.41L10.83,12z"/>

View File

@@ -1,4 +1,4 @@
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z"/>

View File

@@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M16.59,8.59L12,13.17 7.41,8.59 6,10l6,6 6,-6z"/>
</vector>

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,17c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6h1.9c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM18,20L6,20L6,10h12v10z"/>
</vector>

View File

@@ -1,5 +1,5 @@
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M22,9.24l-7.19,-0.62L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21 12,17.27 18.18,21l-1.63,-7.03L22,9.24zM12,15.4l-3.76,2.27 1,-4.28 -3.32,-2.88 4.38,-0.38L12,6.1l1.71,4.04 4.38,0.38 -3.32,2.88 1,4.28L12,15.4z"/>
<path android:fillColor="@android:color/white" android:pathData="M18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM12,17c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM15.1,8L8.9,8L8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" android:useLevel="true"
android:dither="true">
<size android:height="8dip" android:width="8dip"/>
<solid android:color="@android:color/white"/>
</shape>

View File

@@ -271,36 +271,6 @@
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/donate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp">
<TextView
android:id="@+id/donate_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:padding="2dp"
android:text="@string/donate"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:importantForAccessibility="no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:fontFamily="sans-serif-medium"
android:text="@string/arrow"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/rate"
android:layout_width="match_parent"

View File

@@ -9,7 +9,8 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:layout_marginBottom="4dp">
<com.google.android.material.card.MaterialCardView
android:id="@+id/icon_layout"
@@ -18,11 +19,12 @@
android:outlineProvider="none"
app:cardCornerRadius="8dp"
app:strokeWidth="0dp"
app:layout_constraintBottom_toTopOf="@+id/note"
app:layout_constraintBottom_toTopOf="@+id/store"
app:layout_constraintDimensionRatio="85.6f:53.98f"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:importantForAccessibility="no"
android:id="@+id/thumbnail"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -34,20 +36,6 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/thumbnail_text"
android:importantForAccessibility="no"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textStyle="bold"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="12sp"
app:autoSizeMaxTextSize="100sp"
app:autoSizeStepGranularity="2sp"
android:gravity="center"
android:maxLines="1"
android:layout_margin="20dp" />
<ImageView
android:importantForAccessibility="no"
android:id="@+id/selected_thumbnail"
@@ -129,6 +117,20 @@
</com.google.android.material.card.MaterialCardView>
<TextView
android:id="@+id/store"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="4dp"
android:textAppearance="?attr/textAppearanceHeadline1"
app:layout_constraintTop_toBottomOf="@+id/icon_layout"
app:layout_constraintBottom_toTopOf="@+id/note"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:text="Example store"/>
<TextView
android:id="@+id/note"
android:layout_width="match_parent"
@@ -140,7 +142,7 @@
android:textColor="?android:attr/textColorSecondary"
android:visibility="gone"
tools:visibility="visible"
app:layout_constraintTop_toBottomOf="@+id/icon_layout"
app:layout_constraintTop_toBottomOf="@+id/store"
app:layout_constraintBottom_toTopOf="@+id/info_divider"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -6,196 +6,215 @@
android:id="@+id/coordinator_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fitsSystemWindows="false">
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:id="@+id/app_bar_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:clipChildren="false"
android:clipToPadding="false"
android:fitsSystemWindows="true"
android:weightSum="1.0">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
style="?attr/toolbarStyle" />
</com.google.android.material.appbar.AppBarLayout>
android:id="@+id/toolbar_landscape"
android:layout_width="fill_parent"
android:layout_height="?actionBarSize"
android:background="@android:color/transparent"
android:fitsSystemWindows="false"
android:paddingTop="0dp"
android:visibility="gone"
app:contentInsetStart="72.0dip"
app:layout_collapseMode="pin" />
<LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/actionBarSize"
android:layout_marginBottom="100dp"
android:orientation="vertical"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp">
<LinearLayout
android:id="@+id/icon_container"
android:layout_width="match_parent"
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsingToolbarLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp">
android:clipChildren="false"
android:clipToPadding="false"
android:minHeight="56.0dip"
app:contentScrim="?colorPrimary"
app:expandedTitleGravity="top"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp">
<Space
android:layout_width="50dp"
android:layout_height="0dp"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<com.google.android.material.card.MaterialCardView
android:id="@+id/icon_holder"
android:layout_width="match_parent"
android:layout_height="0dp"
app:cardCornerRadius="8dp"
android:layout_margin="10dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="85.6f:53.98f">
<ImageView
android:id="@+id/icon_image"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<TextView
android:id="@+id/icon_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textStyle="bold"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="12sp"
app:autoSizeMaxTextSize="100sp"
app:autoSizeStepGranularity="2sp"
android:gravity="center"
android:maxLines="1"
android:layout_margin="20dp" />
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>
<Space
android:layout_width="50dp"
android:layout_height="0dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp">
<!-- We don't use these buttons for Talkback -->
<ImageButton
android:importantForAccessibility="no"
android:id="@+id/main_left_button"
android:layout_width="50dp"
android:layout_height="match_parent"
app:srcCompat="@drawable/ic_baseline_chevron_left_24"
android:background="@android:color/transparent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/card_holder"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardCornerRadius="8dp"
android:layout_margin="10dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="4dp"
android:orientation="vertical">
<ImageView
android:id="@+id/main_image"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<TextView
android:id="@+id/card_id_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_large"
android:gravity="center"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>
<!-- We don't use these buttons for Talkback -->
<ImageButton
android:importantForAccessibility="no"
android:id="@+id/main_right_button"
android:layout_width="50dp"
android:layout_height="match_parent"
app:srcCompat="@drawable/ic_baseline_chevron_right_24"
android:background="@android:color/transparent"/>
</LinearLayout>
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/fullscreen_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:importantForAccessibility="no"
android:id="@+id/fullscreen_image"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/scaler_guideline"/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/scaler_guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.5"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@+id/fullscreen_button_minimize"
android:layout_marginBottom="50dp"
android:layout_marginStart="15.0dip"
android:layout_marginEnd="15.0dip">
<TextView
android:importantForAccessibility="no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/height"/>
<SeekBar
android:id="@+id/barcode_scaler"
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/storeName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@string/setBarcodeHeight"
android:max="100" />
</LinearLayout>
android:layout_marginTop="?actionBarSize"
android:layout_marginBottom="?actionBarSize"
android:ellipsize="end"
android:maxLines="1"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="40sp"
app:layout_collapseMode="parallax" />
<ImageButton
android:id="@+id/fullscreen_button_minimize"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/ic_baseline_expand_more_24"
android:tooltipText="@string/moveDown"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="50dp"
android:background="@android:color/transparent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.Toolbar
android:id="@id/toolbar"
android:layout_width="fill_parent"
android:layout_height="?actionBarSize"
android:background="@android:color/transparent"
app:contentInsetStart="72.0dip"
app:layout_collapseMode="pin" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<ImageView
android:id="@+id/icon_image"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_alignParentTop="true"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:srcCompat="@drawable/ic_launcher_foreground"
tools:ignore="ContentDescription" />
<FrameLayout
android:clipChildren="false"
android:clipToPadding="false"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/mainLayout"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/centerGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.5"/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/scalerGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.75"/>
<ImageButton
android:id="@+id/maximizeButton"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginStart="15.0dip"
android:layout_marginTop="10dp"
android:layout_marginEnd="15.0dip"
android:background="?attr/colorPrimary"
android:contentDescription="@string/moveBarcodeToTopOfScreen"
android:padding="0dp"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@+id/mainImage"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_baseline_arrow_drop_up_24"
app:tint="?attr/colorOnPrimary"
tools:visibility="visible" />
<ImageView
android:id="@+id/mainImage"
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_marginStart="15.0dip"
android:layout_marginEnd="15.0dip"
app:layout_constraintBottom_toTopOf="@+id/centerGuideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/maximizeButton"/>
<ImageButton
android:id="@+id/minimizeButton"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginStart="15.0dip"
android:layout_marginTop="10dp"
android:layout_marginEnd="15.0dip"
android:background="?attr/colorPrimary"
android:contentDescription="@string/moveBarcodeToCenterOfScreen"
android:padding="0dp"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/mainImage"
app:srcCompat="@drawable/ic_baseline_arrow_drop_down_24"
app:tint="?attr/colorOnPrimary"
tools:visibility="visible" />
<LinearLayout
android:id="@+id/dotIndicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="15.0dip"
android:layout_marginTop="10dp"
android:layout_marginEnd="15.0dip"
android:gravity="center_vertical"
android:orientation="horizontal"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/minimizeButton"
tools:visibility="visible" />
<SeekBar
android:id="@+id/barcodeScaler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/inputPadding"
android:layout_marginStart="15.0dip"
android:layout_marginEnd="15.0dip"
android:contentDescription="@string/set_scale"
android:max="100"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/scalerGuideline" />
<TextView
android:id="@+id/cardIdView"
android:enabled="true"
android:textIsSelectable="true"
android:focusable="true"
android:longClickable="true"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginLeft="10.0dip"
android:layout_marginRight="10.0dip"
android:paddingBottom="80dp"
app:layout_constraintTop_toBottomOf="@+id/dotIndicator"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:textAlignment="center"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="@dimen/singleCardCardIdTextSizeMin"
app:autoSizeMaxTextSize="@dimen/singleCardCardIdTextSizeMax"
android:ellipsize="end"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<View
android:id="@+id/drop_shadow_actionbar"
android:layout_width="fill_parent"
android:layout_height="5.0dip"
android:layout_gravity="top"/>
</FrameLayout>
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottom_app_bar"
@@ -211,7 +230,7 @@
app:fabAlignmentMode="center">
<ImageButton
android:id="@+id/bottom_app_bar_previous_button"
android:id="@+id/button_previous"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="left"
@@ -223,7 +242,7 @@
android:visibility="gone" />
<ImageButton
android:id="@+id/bottom_app_bar_info_button"
android:id="@+id/button_show_info"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
@@ -235,7 +254,7 @@
android:visibility="gone" />
<ImageButton
android:id="@+id/bottom_app_bar_next_button"
android:id="@+id/button_next"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="right"
@@ -247,7 +266,7 @@
android:visibility="gone" />
<ImageButton
android:id="@+id/bottom_app_bar_update_balance_button"
android:id="@+id/button_update_balance"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end"

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.materialswitch.MaterialSwitch xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/switchWidget"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:clickable="false"
android:focusable="false" />

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_delete"
android:icon="@drawable/ic_delete_white_24dp"
android:title="@string/delete"
app:showAsAction="always"/>
</menu>

View File

@@ -4,13 +4,13 @@
<item
android:id="@+id/action_share"
android:icon="@drawable/ic_share"
android:icon="@drawable/ic_share_white"
android:title="@string/share"
app:showAsAction="always"/>
<item
android:id="@+id/action_star_unstar"
android:icon="@drawable/ic_unstarred"
android:icon="@drawable/ic_unstarred_white"
android:title="@string/star"
app:showAsAction="always" />

View File

@@ -32,7 +32,6 @@ Alexander Ivanov
arshbeerSingh
Denis Shilin
Freddo espresso
Projjal Moitra
Silvério Santos
Miha Frangež
Arnis Jaundžeikars
@@ -44,13 +43,13 @@ Katarzyna
echo r"0xX4H" | rev
Magnitudee
Olivia (Zoe)
Projjal Moitra
betsythefc
waffshappen
(Cliff Heraldo)
Robin
Eric
ati3
Balázs Meskó
(Cliff Heraldo)
Evgeniy Khramov
Jane Kong
Jiri Grönroos
@@ -81,7 +80,7 @@ francescbassas
Jean-Luc Tibaux
Jesse Davids
Lukas Grassauer
Luna Jernberg
bittin
Marnick L'Eau
Michalis
Michał
@@ -104,12 +103,10 @@ ce i moa
inesre
lgasp
phlostically
pokeghost
sal0max
Ágata Leuck
BmBKun
Aditya Das
asier123123131
Kevin Sicong Jiang
Tomer Ben-Rachel
Tom Sawyer
@@ -121,13 +118,13 @@ sNiXx
Angela Enogieru
AnimeshChatterjee1
Ashish Yadav
Asier
Aya Elsaadany
Biren
Booc Sylvan
Brage Nesteby Reitan
Cap Amr Karam
Carlo Maria Cuoghi Barbagli
CherryMonster222
Colgrave
Csaba
Mylou53
danieluhrinyi
@@ -135,7 +132,6 @@ Kasina Dheeraj
Donno
Flav
Franciszek Stefan
Gael Caraballo
Grzegorz
gneiss15
Hamustra Scans
@@ -143,6 +139,7 @@ HowITsDone
Izzy
Jacek
Jacopo Gennaro Esposito
Jasielprogramador
Jean Mareilles
Jean-Baptiste
Kung-chih
@@ -179,7 +176,6 @@ Samarth Asthan
Shailendra Maurya
Simone Dotto
Subhashish Anand
Subhradeep Bera
SziaTomi
Mehedi Hasan
Titas Pažereckas
@@ -195,7 +191,6 @@ diksha-2911
gbonaspetti
gittyboy-cell
huang ivan
liva
lucafont2
mtrmirez
opsik

View File

@@ -48,6 +48,7 @@
<string name="app_copyright_old">بناء على Loyalty Card Keychain
\nحقوق النشر © 2016-2020 Branden Archer</string>
<string name="app_license">البرمجيات الحرة متروكة الحقوق, ترخيص +GPLv3</string>
<string name="app_revision_fmt">معلومات المراجعة: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="app_libraries">مكتبات الطرف الثالث الحرة: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="selectBarcodeTitle">اختار الباركود</string>
<string name="enterBarcodeInstructions">أدخل بطاقة هوية ، واختر نوع الباركود أدناه ، أو \"لا يوجد باركود\".</string>
@@ -62,6 +63,7 @@
<string name="settings_portrait_orientation">الوضع الرأسي</string>
<string name="settings_landscape_orientation">الوضع الأفقي</string>
<string name="settings_theme">مظهر</string>
<string name="settings_max_font_size_scale">اقصي. حجم الخط</string>
<string name="settings_display_barcode_max_brightness">عرض مشرق علي الباركود</string>
<string name="importSuccessful">تم استيراد البيانات</string>
<string name="exportSuccessful">تم تصدير البيانات</string>
@@ -134,6 +136,9 @@
<string name="app_contributors">أصبح ممكنًا بواسطة: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="sort">فرز</string>
<string name="showMoreInfo">اظهر المعلومات</string>
<string name="hideMoreInfo">إخفاء المعلومات</string>
<string name="swipeToSwitchImages">امسح لتبديل الصور, اضغط لفترة طويلة لفتح الصورة في تطبيق المعرض</string>
<string name="sort_by_balance">الرصيد</string>
<string name="reverse">... بترتيب معكوس</string>
<string name="sort_by">صنف حسب</string>
<string name="settings_oled_dark">خلفية سوداء نقية لمظهر داكن</string>
@@ -145,6 +150,7 @@
<string name="shortcutSelectCard">اختر بطاقة</string>
<string name="options">خيارات</string>
<string name="starred">مميز بنجمة</string>
<string name="set_scale">ضبط النطاق</string>
<string name="include_if_asking_support">إذا كنت ترغب في طلب الدعم ، فقم بتضمين المعلومات التالية:</string>
<string name="duplicateCard">كرر</string>
<string name="archive">ضع الي الأرشيف</string>
@@ -206,6 +212,7 @@
<string name="app_resources">موارد الطرف الثالث الحرة: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="settings_follow_system_orientation">نظام المتابعة</string>
<string name="groups">مجموعات</string>
<string name="barcode">باركود</string>
<string name="settings_keep_screen_on">حافظ على الشاشة قيد التشغيل</string>
<string name="intent_import_card_from_url_share_text">اريد مشاركة بطاقة معك</string>
<string name="groupsList">مجموعات: <xliff:g>%s</xliff:g></string>
@@ -227,6 +234,7 @@
<string name="balanceSentence">الرصيد: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">تنتهي: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">منتهي الصلاحية: <xliff:g>%s</xliff:g></string>
<string name="moveBarcodeToCenterOfScreen">قم بتوسيط الرمز الشريطي على الشاشة</string>
<plurals name="balancePoints">
<item quantity="zero"><xliff:g>%s</xliff:g> نقطة</item>
<item quantity="one"><xliff:g>%s</xliff:g> نقطة</item>
@@ -284,9 +292,4 @@
<string name="updateBalanceHint">أدخل المبلغ</string>
<string name="storageReadPermissionRequired">الصلاحيه للوصل للتخزين مطلوبة لهذا الاجراء</string>
<string name="validFromDate">عربيه</string>
<string name="cameraPermissionRequired">إذن للوصول إلى الكاميرا اللازمة لهذا الإجراء…</string>
<string name="anyDate">أي تاريخ</string>
<string name="chooseValidFromDate">اختر صالح من التاريخ</string>
<string name="validFromSentence">صالح من:<xliff:g>%s</xliff:g></string>
<string name="height">الطول:</string>
</resources>

View File

@@ -68,11 +68,13 @@
<string name="balance">Наличност</string>
<string name="errorReadingImage">Изображението е нечетимо</string>
<string name="noBarcodeFound">Не е намерен щрихкод</string>
<string name="moveBarcodeToCenterOfScreen">Премества щрихкода в центъра на екрана</string>
<string name="moveBarcodeToTopOfScreen">Премества щрихкода най-горе на екрана</string>
<string name="never">Не изтича</string>
<string name="chooseExpiryDate">Определена дата</string>
<string name="expiryDate">Валидна до</string>
<string name="editBarcode">Редактиране на щрихкод</string>
<string name="barcode">Щрихкод</string>
<string name="card">Карта</string>
<string name="groupsList">Списъци: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Валидна до: <xliff:g>%s</xliff:g></string>
@@ -86,6 +88,7 @@
<string name="settings_display_barcode_max_brightness">Увеличаване на яркостта при видим щрихкод</string>
<string name="settings_keep_screen_on">Поддържане на екрана включен</string>
<string name="settings_disable_lockscreen_while_viewing_card">Предотвратяване на заключване на екрана</string>
<string name="settings_max_font_size_scale">Максимален размер на шрифта</string>
<string name="settings_dark_theme">Тъмна</string>
<string name="settings_light_theme">Светла</string>
<string name="settings_system_theme">Системна</string>
@@ -124,6 +127,7 @@
<string name="importOptionFilesystemExplanation">Изберете определен файл от файловата система.</string>
<string name="app_resources">Свободни ресурси: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_libraries">Свободни библиотеки: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_revision_fmt">Компилация: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="debug_version_fmt">Издание: <xliff:g id="version">%s</xliff:g></string>
<string name="about_title_fmt">Относно <xliff:g id="app_name">%s</xliff:g></string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Всички права запазени © 2019<xliff:g>%d</xliff:g> Sylvia van Os</string>
@@ -179,8 +183,10 @@
<string name="settings_locale">Език</string>
<string name="noGroupCards">Групата е празна</string>
<string name="barcodeImageDescriptionWithType">Изображение на щрихкод от вид <xliff:g>%s</xliff:g></string>
<string name="swipeToSwitchImages">За да размените изображенията - плъзнете, а за да ги отворите в галерията - задръжте</string>
<string name="sort_by">Сортиране по</string>
<string name="reverse">…в обратен ред</string>
<string name="sort_by_balance">Наличност</string>
<string name="sort_by_expiry">Валидност</string>
<string name="sort_by_most_recently_used">Последно използване</string>
<string name="sort_by_name">Наименование</string>
@@ -210,7 +216,9 @@
<string name="translate_platform">в Weblate</string>
<string name="shortcutSelectCard">Избор на карта</string>
<string name="starred">Със звезда</string>
<string name="set_scale">Мащаб</string>
<string name="showMoreInfo">Показване на информация</string>
<string name="hideMoreInfo">Скриване на информация</string>
<string name="options">Настройки</string>
<string name="card_ids_copied">Идентификаторите са копирани</string>
<plurals name="balancePoints">
@@ -260,12 +268,4 @@
<string name="anyDate">Без значение от датата</string>
<string name="validFromSentence">Валидна от: <xliff:g>%s</xliff:g></string>
<string name="chooseValidFromDate">Определена дата</string>
<string name="height">Височина:</string>
<string name="switchToFrontImage">Показване на предната страна</string>
<string name="switchToBackImage">Показване на задната страна</string>
<string name="switchToBarcode">Показване на щрихкода</string>
<string name="openFrontImageInGalleryApp">Отваряне на изображението на предната страна в приложението галерия</string>
<string name="openBackImageInGalleryApp">Отваряне на изображението на задната страна в приложението галерия</string>
<string name="setBarcodeHeight">Задаване на височина на щрихкода</string>
<string name="donate">Даряване</string>
</resources>

View File

@@ -21,6 +21,7 @@
<string name="intent_import_card_from_url_share_text">url শেয়ার টেক্সট থেকে ইন্টেন্ট ইম্পোর্ট কার্ড</string>
<string name="settings_disable_lockscreen_while_viewing_card">স্ক্রীন লক হতে দেবেন না</string>
<string name="settings_keep_screen_on">সেটিংস পর্দা খোলা রাখুন</string>
<string name="settings_max_font_size_scale">সর্বোচ্চ হরফ আকার</string>
<string name="settings_light_theme">সাদাটে থিম</string>
<string name="settings_system_theme">যন্ত্রর থিম</string>
<string name="settings_theme">থিম</string>
@@ -64,6 +65,7 @@
<string name="settings_green_theme">সবুজ থিম</string>
<string name="settings_brown_theme">বাদামী থিম</string>
<string name="sort">সাজান</string>
<string name="swipeToSwitchImages">ছবি পাল্টানোর জন্য সোয়াইপ করুন, ছবিটি গ্যালারি অ্যাপে খোলার জন্য টিপে ধড়ে থাকুন</string>
<string name="sort_by_name">নামের দ্বারা সাজান</string>
<string name="sort_by_most_recently_used">সর্বাধিক সম্প্রতি ব্যবহৃত দ্বারা সাজান</string>
<string name="sort_by_expiry">মেয়াদ শেষ করে সাজান</string>
@@ -94,6 +96,7 @@
<string name="importOptionApplicationButton">অন্য অ্যাপ ব্যাবহার করুন</string>
<string name="moveUp">উপরে উঠান</string>
<string name="moveDown">নিচে নামান</string>
<string name="barcode">বারকোড</string>
<string name="expiryDate">মেয়াদোত্তীর্ণ তারিখ</string>
<string name="noBarcodeFound">কোনো বারকোড পাওয়া যায়নি</string>
<string name="cameraPermissionRequired">এই কাজটির জন্য ক্যামেরা ব্যবহার করার অনুমতি লাগবে…</string>
@@ -118,6 +121,7 @@
<string name="importOptionFilesystemExplanation">ফোনের স্টোরেজ থেকে নির্দিষ্ট একটি ফাইল আনুন।</string>
<string name="app_libraries">মুক্ত লাইব্রেরি যেগুলি আমার নয়: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="about_title_fmt"><xliff:g id="app_name">%s</xliff:g>টির ব্যাপারে</string>
<string name="app_revision_fmt">সংশোধন তথ্য: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="app_resources">মুক্ত সম্পদ যেগুলি আমার নয়: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="thumbnailDescription">থাম্বনেইল</string>
<string name="settings_card_orientation">বারকোড অভিমুখ</string>
@@ -181,6 +185,7 @@
<string name="balanceSentence">ব্যালেন্স: <xliff:g>%s</xliff:g></string>
<string name="chooseExpiryDate">মেয়াদ শেষ হওয়ার তারিখ মনোনীত করুন</string>
<string name="moveBarcodeToTopOfScreen">বারকোডটি স্ক্রিনের উপরে উঠিয়ে দিন</string>
<string name="moveBarcodeToCenterOfScreen">বারকোডটি স্ক্রিনের কেন্দ্রে সরিয়ে দিন</string>
<string name="errorReadingImage">ছবিটি স্ক্যান করা যাচ্ছে না</string>
<string name="privacy_policy_popup_text">ব্যক্তিগত তথ্যের গোপনীয়তা নীতি নোটিশ (কিছু অ্যাপ স্টোরের এটি লাগে):
\n
@@ -192,72 +197,4 @@
<string name="app_loyalty_card_keychain">আনুগত্য কার্ড কীচেন</string>
<string name="privacy_policy">ব্যক্তিগত তথ্যের গোপনীয়তা নীতি</string>
<string name="accept">গ্রহণ</string>
<string name="failedToRetrieveImageFile">ছবি ফাইল পুনরুদ্ধার করতে ব্যর্থ হয়েছে</string>
<string name="on_github">GitHub -এ</string>
<string name="importLoyaltyCardKeychainMessage">আমদানি করতে লয়্যালটি কার্ড কীচেন থেকে আপনার <i>LoyaltyCardKeychain.csv</i> এক্সপোর্ট নির্বাচন করুন।
\nলয়্যালটি কার্ড কীচেনের আমদানি/রপ্তানি মেনু থেকে প্রথমে সেখানে রপ্তানি টিপে এটি তৈরি করুন।</string>
<string name="selectColor">রঙ নির্বাচন করুন</string>
<string name="unarchived">কার্ড সংরক্ষণাগারমুক্ত করা হয়েছে</string>
<string name="archiveList">সংরক্ষণাগার</string>
<string name="report_error">ভুল প্রতিবেদন</string>
<string name="failedLaunchingPhotoPicker">একটি সমর্থিত গ্যালারি অ্যাপ খুঁজে পাওয়া যায়নি</string>
<plurals name="groupCardCountWithArchived">
<item quantity="one"><xliff:g>%1$d</xliff:g> card (<xliff:g id="archivedCount">%2$d</xliff:g> archived)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> cards (<xliff:g id="archivedCount">%2$d</xliff:g> archived)</item>
</plurals>
<string name="nextCard">পরবর্তী</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="one">সংরক্ষণাগার দেখুন (<xliff:g>%1$d</xliff:g> কার্ড)</item>
<item quantity="other">সংরক্ষণাগার দেখুন (<xliff:g>%1$d</xliff:g> কার্ডগুলি)</item>
</plurals>
<string name="failedToOpenUrl">প্রথমে একটি ওয়েব ব্রাউজার ইন্সটল করুন</string>
<string name="newBalanceSentence">নতুন ব্যালেন্স: <xliff:g>%s</xliff:g></string>
<string name="chooseValidFromDate">তারিখ থেকে বৈধ নির্বাচন করুন</string>
<string name="validFromSentence">এর থেকে বৈধ: <xliff:g>%s</xliff:g></string>
<string name="version_history">সংস্করণ ইতিহাস</string>
<string name="credits">ক্রেডিট</string>
<string name="help_translate_this_app">এই অ্যাপটি অনুবাদ করতে সাহায্য করুন</string>
<string name="showMoreInfo">তথ্য দেখান</string>
<string name="app_contributors">এর দ্বারা সম্ভব হয়েছে: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="importCards">কার্ড আমদানি করুন</string>
<string name="importFidmeMessage">FidMe থেকে আমদানি করতে আপনার <i>fidme-export-request-xxxxxx.zip</i> রপ্তানি নির্বাচন করুন এবং পরে বারকোডের ধরন ম্যানুয়ালি নির্বাচন করুন।
\nআপনার FidMe প্রোফাইল থেকে ডেটা সুরক্ষা নির্বাচন করে এবং তারপর প্রথমে আমার ডেটা বের করুন টিপে এটি তৈরি করুন।</string>
<string name="importCatimaMessage">ক্যাটিমা থেকে আমদানি করতে আপনার <i>catima.zip</i> রপ্তানি নির্বাচন করুন।
\nঅন্য Catima অ্যাপের আমদানি/রপ্তানি মেনু থেকে প্রথমে সেখানে রপ্তানি টিপে এটি তৈরি করুন।</string>
<string name="importStocardMessage">আমদানি করতে Stocard থেকে আপনার <i>***.zip</i> এক্সপোর্ট নির্বাচন করুন।
\nআপনার ডেটা রপ্তানির জন্য জিজ্ঞাসা করে support@stocardapp.com ই-মেইল করে এটি পান।</string>
<string name="importVoucherVaultMessage">আমদানি করতে ভাউচার ভল্ট থেকে আপনার <i>vouchervault.json</i> এক্সপোর্ট নির্বাচন করুন।
\nপ্রথমে ভাউচার ভল্টে এক্সপোর্ট টিপে এটি তৈরি করুন।</string>
<string name="settings_oled_dark">অন্ধকার থিমের জন্য খাঁটি কালো পটভূমি</string>
<string name="setIcon">আইকন সেট করুন</string>
<string name="settings_grey_theme">ধূসর</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="action_show_details">বিস্তারিত দেখাও</string>
<string name="action_hide_details">আড়াল বিস্তারিত</string>
<string name="shortcutSelectCard">একটি কার্ড নির্বাচন করুন</string>
<string name="options">অপশন</string>
<string name="starred">তারকাচিহ্নিত</string>
<string name="duplicateCard">নকল</string>
<string name="include_if_asking_support">আপনি যদি সমর্থনের জন্য অনুরোধ করতে চান তবে নিম্নলিখিত তথ্যগুলি অন্তর্ভুক্ত করুন:</string>
<string name="importFidme">FidMe থেকে আমদানি করুন</string>
<string name="validFromDate">বৈধ হবে</string>
<string name="anyDate">যেকোনো তারিখ</string>
<string name="previousCard">আগে</string>
<string name="exportPassword">আপনার রপ্তানি রক্ষা করার জন্য একটি পাসওয়ার্ড সেট করুন (ঐচ্ছিক)</string>
<string name="exportPasswordHint">পাসওয়ার্ড লিখুন</string>
<string name="license">লাইসেন্স</string>
<string name="source_repository">Source Repository</string>
<string name="and_data_usage">এবং ডেটা ব্যবহার</string>
<string name="rate_this_app">এই অ্যাপ্লিকেশন রেট করুন</string>
<string name="archive">সংরক্ষণ করুন</string>
<string name="unarchive">সংরক্ষণাগারমুক্ত করুন</string>
<string name="archived">কার্ড সংরক্ষণাগারভুক্ত</string>
<string name="noUnarchivedCardsMessage">আর্কাইভ করা কোনো কার্ড নেই</string>
<string name="welcome">Catima-তে স্বাগতম</string>
<string name="updateBalanceTitle">আপনি কত খরচ করেছেন\?</string>
<string name="updateBalanceHint">পরিমান লিখুন</string>
<string name="currentBalanceSentence">বর্তমান ব্যালেন্স: <xliff:g>%s</xliff:g></string>
</resources>

View File

@@ -18,6 +18,7 @@
<string name="sort_by_name">নাম</string>
<string name="previousCard">পূর্ববর্তী</string>
<string name="all">সকল</string>
<string name="barcode">বারকোড</string>
<string name="never">কখনো না</string>
<string name="currency">মুদ্রা</string>
<string name="settings_violet_theme">বেগুনি</string>

View File

@@ -21,6 +21,7 @@
<string name="intent_import_card_from_url_share_text">Želim podijeliti čestitku s tobom</string>
<string name="settings_disable_lockscreen_while_viewing_card">Spriječi zaključavanje ekrana</string>
<string name="settings_keep_screen_on">Zadrži ekran</string>
<string name="settings_max_font_size_scale">Max. veliäťina fonta</string>
<string name="settings_light_theme">Svjetlo</string>
<string name="settings_system_theme">Sistem</string>
<string name="settings_theme">Tema</string>
@@ -64,6 +65,7 @@
<string name="settings_green_theme">Zeleno</string>
<string name="settings_brown_theme">Braun</string>
<string name="sort">Poništi sortiranje</string>
<string name="swipeToSwitchImages">Swipe ili long press za prebacivanje slika</string>
<string name="sort_by_name">Ime</string>
<string name="sort_by_most_recently_used">Nedavno Korišten</string>
<string name="sort_by_expiry">Sajam</string>

View File

@@ -13,5 +13,4 @@
<string name="deleteTitle">Elimina la targeta</string>
<string name="welcome">Benvingut a Catima</string>
<string name="noGiftCards">Cliqueu el botó + més per afegir una targeta, o importeu-ne des del ⋮ menú.</string>
<string name="photos">Fotos</string>
</resources>

View File

@@ -39,15 +39,18 @@
<string name="app_license">Copyleftovaný svobodný software s licencí GPLv3+</string>
<string name="about_title_fmt">O aplikaci <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Verze: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Informace o revizi: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="selectBarcodeTitle">Vyberte čárový kód</string>
<string name="copy_to_clipboard_toast">ID zkopírováno do schránky</string>
<string name="deleteTitle">Smazat kartu</string>
<string name="deleteConfirmation">Opravdu chcete smazat tuto kartu\?</string>
<string name="moveBarcodeToCenterOfScreen">Vycentrovat čárový kód na obrazovce</string>
<string name="moveBarcodeToTopOfScreen">Přesunout čárový kód do horní části obrazovky</string>
<string name="chooseExpiryDate">Zvolte datum vypršení platnosti</string>
<string name="never">Nikdy</string>
<string name="expiryDate">Vypršení platnosti</string>
<string name="editBarcode">Upravit čárový kód</string>
<string name="barcode">Kód</string>
<string name="app_resources">Svobodné zdroje třetích stran: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_libraries">Svobodné knihovny třetích stran: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_copyright_old">Založeno na Loyalty Card Keychain
@@ -81,6 +84,7 @@
<string name="intent_import_card_from_url_share_text">Chci s Vámi sdílet kartu</string>
<string name="settings_disable_lockscreen_while_viewing_card">Bránit uzamykání obrazovky</string>
<string name="settings_keep_screen_on">Udržovat obrazovku zapnutou</string>
<string name="settings_max_font_size_scale">Maximální velikost písma</string>
<string name="settings_dark_theme">Tmavý</string>
<string name="settings_light_theme">Světlý</string>
<string name="settings_system_theme">Podle systému</string>
@@ -185,9 +189,11 @@
<string name="noGroupCards">Tato skupina je prázdná</string>
<string name="sort_by">Seřadit podle</string>
<string name="reverse">…v obráceném pořadí</string>
<string name="sort_by_balance">Zůstatek</string>
<string name="sort_by_expiry">Vypršení</string>
<string name="sort_by_most_recently_used">Naposledy použité</string>
<string name="sort_by_name">Název</string>
<string name="swipeToSwitchImages">Přejetím přepínáte obrázky, dlouhým stisknutím otevřete obrázek v aplikaci pro galerii</string>
<string name="sort">Seřadit</string>
<string name="barcodeImageDescriptionWithType">Obrázek čárového kódu <xliff:g>%s</xliff:g></string>
<string name="version_history">Historie verzí</string>
@@ -215,7 +221,9 @@
<string name="action_hide_details">Skrýt detaily</string>
<string name="translate_platform">na Weblate</string>
<string name="showMoreInfo">Zobrazit podrobnosti</string>
<string name="hideMoreInfo">Skrýt podrobnosti</string>
<string name="starred">S hvězdičkou</string>
<string name="set_scale">Nastavení měřítka</string>
<string name="options">Volby</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> bod</item>
@@ -267,12 +275,4 @@
<string name="anyDate">Jakékoliv datum</string>
<string name="chooseValidFromDate">Vyberte datum počátku platnosti</string>
<string name="validFromSentence">Platnost od: <xliff:g>%s</xliff:g></string>
<string name="height">Výška:</string>
<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 galerii</string>
<string name="openBackImageInGalleryApp">Otevřít zadní obrázek v galerii</string>
<string name="setBarcodeHeight">Nastavit výšku čárového kódu</string>
<string name="donate">Přispět</string>
</resources>

View File

@@ -46,6 +46,7 @@
<string name="app_license">Freie Software, lizensiert unter der GPLv3+</string>
<string name="about_title_fmt">Über <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Version: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Revisionsinfo: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="selectBarcodeTitle">Barcode auswählen</string>
<string name="copy_to_clipboard_toast">ID in die Zwischenablage kopiert</string>
<string name="thumbnailDescription">Vorschaubild</string>
@@ -92,11 +93,13 @@
<string name="points">Punkte</string>
<string name="currency">Währung</string>
<string name="balance">Guthaben</string>
<string name="moveBarcodeToCenterOfScreen">Barcode auf dem Bildschirm zentrieren</string>
<string name="moveBarcodeToTopOfScreen">Barcode auf dem Bildschirm oben fixieren</string>
<string name="chooseExpiryDate">Ablaufdatum wählen</string>
<string name="never">Nie</string>
<string name="expiryDate">Ablaufdatum</string>
<string name="editBarcode">Barcode ändern</string>
<string name="barcode">Strichcode</string>
<string name="card">Karte</string>
<string name="balanceSentence">Guthaben: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Abgelaufen: <xliff:g>%s</xliff:g></string>
@@ -126,6 +129,7 @@
<string name="errorReadingImage">Bildverarbeitung fehlgeschlagen</string>
<string name="noBarcodeFound">Kein Barcode erkannt</string>
<string name="addFromImage">Bild aus der Galerie wählen</string>
<string name="settings_max_font_size_scale">Maximale Schriftgröße</string>
<string name="unsupportedBarcodeType">Dieser Barcodetyp kann noch nicht angezeigt werden. Wir hoffen das Format in einer zukünftigen Version zu unterstützen.</string>
<string name="wrongValueForBarcodeType">Der Wert ist für den gewählten Barcodetyp leider nicht gültig</string>
<string name="app_resources">Freie Ressourcen von Drittanbietern: <xliff:g id="app_resources_list">%s</xliff:g></string>
@@ -180,7 +184,9 @@
<string name="settings_theme_color">Designfarbe</string>
<string name="app_contributors">Ermöglicht durch: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="barcodeImageDescriptionWithType">Bild <xliff:g>%s</xliff:g> Barcode</string>
<string name="swipeToSwitchImages">Wischen zum Wechseln der Bilder, Halten zum Öffnen des Bildes in der Galerie</string>
<string name="sort_by">Sortieren nach</string>
<string name="sort_by_balance">Kontostand</string>
<string name="sort_by_expiry">Ablaufdatum</string>
<string name="sort_by_most_recently_used">Zuletzt verwendet</string>
<string name="sort_by_name">Name</string>
@@ -211,6 +217,8 @@
<string name="translate_platform">auf Weblate</string>
<string name="shortcutSelectCard">Wählen Sie eine Karte</string>
<string name="options">Optionen</string>
<string name="hideMoreInfo">Infos ausblenden</string>
<string name="set_scale">Größe festlegen</string>
<string name="showMoreInfo">Infos anzeigen</string>
<string name="starred">als Favorit</string>
<plurals name="balancePoints">

View File

@@ -42,6 +42,7 @@
<string name="app_license">Άδεια χρήσης υπό GPLv3+</string>
<string name="about_title_fmt">Σχετικά με <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Έκδοση: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Πληροφορίες Αναθεώρησης: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="selectBarcodeTitle">Επιλέξτε Barcode</string>
<string name="copy_to_clipboard_toast">Ο κωδικός αντιγράφτηκε στο πρόχειρο</string>
<string name="thumbnailDescription">Μικρογραφία</string>
@@ -50,6 +51,7 @@
<string name="settings_dark_theme">Σκοτεινό</string>
<string name="settings_light_theme">Φωτεινό</string>
<string name="settings_system_theme">Σύστημα</string>
<string name="barcode">Γραμμικός κώδικας</string>
<string name="deleteTitle">Διαγραφή Κάρτας</string>
<string name="deleteConfirmation">Μόνιμη διαγραφή της κάρτας;</string>
<string name="action_search">Αναζήτηση</string>
@@ -82,6 +84,8 @@
<string name="expiryDate">Ημερομηνία λήξης</string>
<string name="settings_keep_screen_on">Κράτα την οθόνη ανοιχτή</string>
<string name="leaveWithoutSaveTitle">Έξοδος</string>
<string name="swipeToSwitchImages">Σύρετε για να αλλάξετε εικόνες, κρατήστε για να ανοίξετε μια εικόνα στην συλλογή</string>
<string name="sort_by_balance">Υπόλοιπο</string>
<string name="reverse">... σε αντίθετη σειρά</string>
<string name="version_history">Ιστορικό έκδοσης</string>
<string name="sort_by">Ταξινόμηση κατά</string>
@@ -93,6 +97,7 @@
<string name="report_error">Αναφορά Σφάλματος</string>
<string name="starred">Αγαπημένα</string>
<string name="translate_platform">στο Weblate</string>
<string name="set_scale">Ορίστε κλίμακα</string>
<string name="importLoyaltyCardKeychain">Εισαγωγή από Loyalty Card Keychain</string>
<string name="importLoyaltyCardKeychainMessage">Επιλέξτε την <i>LoyaltyCardKeychain.csv</i> εξαγωγή από το Loyalty Card Keychain για εισαγωγή.
\nΔημιουργήστε το από το μενού Εισαγωγής/Εξαγωγής στο Loyalty Card Keychain επιλέγοντας Εξαγωγή.</string>
@@ -108,6 +113,7 @@
<string name="updateBarcodeQuestionText">Αλλάξατε τον κωδικό. Θέλετε να ενημερώσετε και τον γραμμοκώδικα στην ίδια τιμή;</string>
<string name="action_show_details">Εμφάνιση λεπτομερειών</string>
<string name="options">Επιλογές</string>
<string name="hideMoreInfo">Απόκρυψη πληροφοριών</string>
<string name="noGroupCards">Αυτή η ομάδα είναι άδεια</string>
<string name="settings_display_barcode_max_brightness">Επιπλέον φωτισμός γραμμοκώδικα</string>
<string name="group_name_is_empty">Το όνομα ομάδας δεν γίνεται να είναι κενό</string>
@@ -190,6 +196,7 @@
<string name="settings_landscape_orientation">Οριζόντια</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Πνευματικά δικαιώματα © 2019-<xliff:g>%d</xliff:g> Sylvia van Os</string>
<string name="settings_lock_on_opening_orientation">Κλείδωμα τωρινού προσανατολισμού όταν ανοίγει μία κάρτα</string>
<string name="settings_max_font_size_scale">Μέγιστο μέγεθος γραμματοσειράς</string>
<string name="intent_import_card_from_url_share_text">Θέλω να μοιραστώ μία κάρτα μαζί σου</string>
<string name="enter_group_name">Εισάγετε όνομα ομάδας</string>
<string name="groups">Ομάδες</string>
@@ -204,6 +211,7 @@
<string name="editBarcode">Επεξεργασία γραμμοκώδικα</string>
<string name="chooseExpiryDate">Επιλέξτε ημερομηνία λήξης</string>
<string name="moveBarcodeToTopOfScreen">Μετακίνηση του γραμμοκώδικα στο πάνω μέρος της οθόνης</string>
<string name="moveBarcodeToCenterOfScreen">Κεντράρισμα του γραμμοκώδικα στην οθόνη</string>
<string name="noBarcodeFound">Δεν βρέθηκε γραμμοκώδικας</string>
<string name="balance">Υπόλοιπο</string>
<string name="importCatima">Εισαγωγή από Catima</string>

View File

@@ -31,6 +31,7 @@
<string name="points">Poentoj</string>
<string name="currency">Valuto</string>
<string name="editBarcode">Redakti strekokodon</string>
<string name="barcode">Strekokodo</string>
<string name="card">Karto</string>
<string name="never">Neniam</string>
<string name="groupsList">Grupoj: <xliff:g>%s</xliff:g></string>
@@ -52,6 +53,7 @@
<string name="deleteConfirmation">Ĉu forigi ĉi tiun karton\?</string>
<string name="deleteTitle">Forigi karton</string>
<string name="settings_display_barcode_max_brightness">Heligi barcode vido</string>
<string name="settings_max_font_size_scale">Max. tiparo grandeco</string>
<string name="starImage">Preferata stelo</string>
<string name="thumbnailDescription">Bildeto por karto</string>
<string name="app_copyright_old">Bazita sur Lojaleco Karto Keychain

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="barcode">Código de barras</string>
<string name="ok">OK</string>
<string name="barcodeNoBarcode">No hay código de barra</string>
<string name="storeName">Nombre</string>

View File

@@ -62,6 +62,7 @@
<string name="barcodeType">Tipo de código de barras</string>
<string name="noMatchingGiftCards">Sin resultados. Intente cambiar su búsqueda.</string>
<string name="action_search">Buscar</string>
<string name="app_revision_fmt">Información de la revisión: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="noGroups">Pulse en el botón «+» para añadir grupos de categorización.</string>
<string name="starImage">Estrella favorita</string>
<string name="thumbnailDescription">Miniatura</string>
@@ -87,17 +88,20 @@
<item quantity="other"><xliff:g>%d</xliff:g> tarjetas</item>
</plurals>
<string name="points">Puntos</string>
<string name="moveBarcodeToCenterOfScreen">Centre el código de barras en la pantalla</string>
<string name="moveBarcodeToTopOfScreen">Mueva el código de barras a la zona superior de la pantalla</string>
<string name="chooseExpiryDate">Elegir fecha de caducidad</string>
<string name="never">Nunca</string>
<string name="expiryDate">Fecha de caducidad</string>
<string name="editBarcode">Editar el código de barras</string>
<string name="barcode">Código de barras</string>
<string name="card">Tarjeta</string>
<string name="expiryStateSentenceExpired">Expirado: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Expira: <xliff:g>%s</xliff:g></string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Derechos de autor © 2019-<xliff:g>%d</xliff:g> de Sylvia van Os</string>
<string name="app_resources">Recursos de terceros libres: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_libraries">Bibliotecas de terceros libres: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="settings_max_font_size_scale">Tam. de fuente máximo</string>
<string name="importCatimaMessage">Seleccione su <i>catima.zip</i> exportado desde Catima para importarlo.
\nCréalo primero desde el menú Importar/Exportar de otra app de Catima al presionar Exportar desde allí.</string>
<string name="importFidmeMessage">Seleccione su <i>fidme-export-request-xxxxxx.zip</i> exportado desde FidMe para importar, y luego escoja los tipos de códigos de barras manualmente.
@@ -199,16 +203,19 @@
<string name="settings_lock_on_opening_orientation">Bloqueo a la orientación utilizada al abrir la tarjeta</string>
<string name="sort_by_most_recently_used">Lo más reciente que se ha utilizado</string>
<string name="sort_by_expiry">Caducidad</string>
<string name="sort_by_balance">Saldo</string>
<string name="version_history">Historial de versiones</string>
<string name="help_translate_this_app">Ayuda a traducir esta aplicación</string>
<string name="and_data_usage">y el uso de datos</string>
<string name="shortcutSelectCard">Seleccione una tarjeta</string>
<string name="showMoreInfo">Mostrar información</string>
<string name="hideMoreInfo">Ocultar información</string>
<string name="reverse">… en orden inverso</string>
<string name="credits">Créditos</string>
<string name="sort_by_name">Nombre</string>
<string name="license">Licencia</string>
<string name="source_repository">Repositorio de fuente</string>
<string name="set_scale">Ajustar la escala</string>
<string name="on_github">En GitHub</string>
<string name="on_google_play">en Google Play</string>
<string name="report_error">Informar de un error</string>
@@ -218,6 +225,7 @@
<string name="selectColor">Seleccione el color</string>
<string name="setIcon">Establecer icono</string>
<string name="sort">Ordenar</string>
<string name="swipeToSwitchImages">Desliza para cambiar de imagen, mantén presionado para abrir la imagen en la aplicación de la galería</string>
<string name="sort_by">Ordenar por</string>
<string name="rate_this_app">Califica esta aplicación</string>
<string name="options">Opciones</string>
@@ -267,12 +275,4 @@
<string name="validFromDate">Válido desde</string>
<string name="chooseValidFromDate">Elija una fecha válida desde</string>
<string name="validFromSentence">Válido desde: <xliff:g>%s</xliff:g></string>
<string name="height">Altura:</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 la galería</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>
<string name="switchToBackImage">Cambiar a imagen trasera</string>
</resources>

View File

@@ -36,11 +36,13 @@
<string name="balance">Saldo</string>
<string name="errorReadingImage">Kuvaa ei voitu lukea</string>
<string name="noBarcodeFound">Viivakoodia ei löytynyt</string>
<string name="moveBarcodeToCenterOfScreen">Keskitä viivakoodi näytölle</string>
<string name="moveBarcodeToTopOfScreen">Siirrä viivakoodi näytön yläosaan</string>
<string name="chooseExpiryDate">Valitse viimeinen voimassaolopäivä</string>
<string name="never">Ei koskaan</string>
<string name="expiryDate">Viimeinen voimassaolopäivä</string>
<string name="editBarcode">Muokkaa viivakoodia</string>
<string name="barcode">Viivakoodi</string>
<string name="card">Kortti</string>
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Vanhentunut: <xliff:g>%s</xliff:g></string>
@@ -68,6 +70,7 @@
<string name="settings_disable_lockscreen_while_viewing_card">Estä näytön lukitus</string>
<string name="settings_keep_screen_on">Pidä näyttö päällä</string>
<string name="settings_display_barcode_max_brightness">Kirkasta viivakoodinäkymää</string>
<string name="settings_max_font_size_scale">Fontin enimmäiskoko</string>
<string name="settings_dark_theme">Tumma</string>
<string name="settings_light_theme">Vaalea</string>
<string name="settings_system_theme">Järjestelmän oletus</string>
@@ -81,6 +84,7 @@
<string name="selectBarcodeTitle">Valitse viivakoodi</string>
<string name="app_resources">Vapaat kolmannen osapuolen resurssit: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_libraries">Vapaat kolmannen osapuolen kirjastot: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_revision_fmt">Muutostiedot: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="debug_version_fmt">Versio: <xliff:g id="version">%s</xliff:g></string>
<string name="about_title_fmt">Tietoja <xliff:g id="app_name">%s</xliff:g></string>
<string name="app_license">Copyleft (käyttäjänoikeus) - vapaa ohjelmisto, lisenssi GPLv3+</string>
@@ -190,9 +194,11 @@
</plurals>
<string name="settings_oled_dark">Musta tausta tummalle teemalle</string>
<string name="setIcon">Aseta kuvake</string>
<string name="swipeToSwitchImages">Vaihda kuvia pyyhkäisemällä, paina kuvaa pitkään avataksesi galleriasovelluksessa</string>
<string name="sort_by_name">Nimi</string>
<string name="sort_by_most_recently_used">Viimeksi käytetyt</string>
<string name="sort_by_expiry">Viimeinen voimassaoloaika</string>
<string name="sort_by_balance">Saldo</string>
<string name="reverse">...käänteisessä järjestyksessä</string>
<string name="sort_by">Lajitteluperuste</string>
<string name="credits">Krediitit</string>
@@ -208,7 +214,9 @@
<string name="shortcutSelectCard">Valitse kortti</string>
<string name="starred">Tähdellä merkityt</string>
<string name="options">Vaihtoehdot</string>
<string name="set_scale">Säädä kokoa</string>
<string name="include_if_asking_support">Jos haluat pyytää tukea, ilmoita seuraavat tiedot:</string>
<string name="hideMoreInfo">Piilota tiedot</string>
<string name="exportPassword">Aseta salasana suojataksesi vientitiedostosi (valinnainen)</string>
<string name="exportPasswordHint">Syötä salasana</string>
<string name="showMoreInfo">Näytä tiedot</string>

View File

@@ -42,6 +42,7 @@
<string name="app_license">Logiciel libre à copyleft, sous licence GPLv3+</string>
<string name="about_title_fmt">À propos de <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Version : <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Notes de version : <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="selectBarcodeTitle">Choisissez le code-barres</string>
<string name="copy_to_clipboard_toast">Identifiant copié dans le presse-papiers</string>
<string name="thumbnailDescription">Miniature</string>
@@ -97,11 +98,13 @@
<string name="points">Points</string>
<string name="currency">Devise</string>
<string name="balance">Solde</string>
<string name="moveBarcodeToCenterOfScreen">Centrer le code-barres sur lécran</string>
<string name="moveBarcodeToTopOfScreen">Déplacez le code-barres vers le haut de lécran</string>
<string name="chooseExpiryDate">Choisissez la date dexpiration</string>
<string name="never">Jamais</string>
<string name="expiryDate">Date dexpiration</string>
<string name="editBarcode">Modifier le code-barres</string>
<string name="barcode">Code-barres</string>
<string name="card">Carte</string>
<string name="balanceSentence">Solde : <xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Expiré : <xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%s</xliff:g></string>
@@ -126,6 +129,7 @@
<string name="setBarcodeId">Définir la valeur du code-barres</string>
<string name="sameAsCardId">Identique à lidentifiant</string>
<string name="barcodeId">Valeur du code-barres</string>
<string name="settings_max_font_size_scale">Taille max. de la police</string>
<string name="unsupportedBarcodeType">Ce type de code-barres ne peut pas encore être affiché. Il sera peut-être pris en charge dans une version ultérieure de lapplication.</string>
<string name="wrongValueForBarcodeType">La valeur nest pas valide pour le type de code-barres sélectionné</string>
<string name="app_resources">Ressources tierces libres : <xliff:g id="app_resources_list">%s</xliff:g></string>
@@ -184,12 +188,14 @@
<string name="app_contributors">Rendu possible par : <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="noGroupCards">Ce groupe est vide</string>
<string name="barcodeImageDescriptionWithType">Image <xliff:g>%s</xliff:g> code-barres</string>
<string name="swipeToSwitchImages">Balayez pour changer dimage, maintenez appuyé pour ouvrir limage dans la galerie</string>
<string name="sort">Trier</string>
<string name="sort_by">Trier par</string>
<string name="reverse"> dans lordre inverse</string>
<string name="sort_by_expiry">Date dexpiration</string>
<string name="sort_by_most_recently_used">Les plus récemment utilisées</string>
<string name="sort_by_name">Nom</string>
<string name="sort_by_balance">Solde</string>
<string name="report_error">Signaler une erreur</string>
<string name="on_google_play">sur Google Play</string>
<string name="rate_this_app">Notez cette appli</string>
@@ -216,7 +222,9 @@
<string name="shortcutSelectCard">Sélectionnez une carte</string>
<string name="options">Options</string>
<string name="starred">En favori</string>
<string name="set_scale">Définir une échelle</string>
<string name="showMoreInfo">Afficher les infos</string>
<string name="hideMoreInfo">Masquer les infos</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> point</item>
<item quantity="many"><xliff:g>%s</xliff:g> points</item>
@@ -267,12 +275,4 @@
<string name="validFromSentence">Valide à partir de : <xliff:g>%s</xliff:g></string>
<string name="anyDate">Nimporte quelle date</string>
<string name="chooseValidFromDate">Choisissez la date de début de validité</string>
<string name="height">Hauteur :</string>
<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 avant dans l\'application galerie</string>
<string name="openBackImageInGalleryApp">Ouvrir l\'image arrière dans l\'application galerie</string>
<string name="setBarcodeHeight">Définir la hauteur du code-barres</string>
<string name="donate">Faire un don</string>
</resources>

View File

@@ -63,6 +63,7 @@
<string name="settings_landscape_orientation">आयत रूप(लैंडस्केप)</string>
<string name="settings_follow_system_orientation">सिस्टम का पालन करें</string>
<string name="settings_portrait_orientation">पोट्रैट</string>
<string name="settings_max_font_size_scale">अक्षर का अधिकतम नाप</string>
<string name="settings_display_barcode_max_brightness">बारकोड का दृश्य उजालित(ब्राइट) करें</string>
<string name="settings_keep_screen_on">स्क्रीन को चालू रखें</string>
<string name="cameraPermissionDeniedTitle">हम कैमरा तक पहुँच नहीं सकते</string>
@@ -101,11 +102,13 @@
<string name="leaveWithoutSaveTitle">निकास करें</string>
<string name="addFromImage">गैलरी से चित्र चुनें</string>
<string name="card">कार्ड</string>
<string name="barcode">बारकोड</string>
<string name="editBarcode">बारकोड में बदलाव करें</string>
<string name="expiryDate">समाप्ति दिन</string>
<string name="never">कभी नहीं</string>
<string name="chooseExpiryDate">समाप्ति दिन चुनें</string>
<string name="moveBarcodeToTopOfScreen">बार कोड को स्क्रीन के ऊपरी भाग पर लाएं</string>
<string name="moveBarcodeToCenterOfScreen">बार कोड को स्क्रीन के बीच में लाएं</string>
<string name="noBarcodeFound">कोई बारकोड नहीं पाया गया</string>
<string name="errorReadingImage">चित्र को पढ़ना संभव नहीं हुआ</string>
<string name="balance">संतुलन</string>
@@ -145,5 +148,6 @@
<string name="app_license">कॉपीलेफ्ट लिबर सॉफ्टवेयर, GPLv3+ लाइसेंस प्राप्त</string>
<string name="about_title_fmt"><xliff:g id="app_name">%s</xliff:g> के बारे में</string>
<string name="debug_version_fmt">संस्करण: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt"><xliff:g id="app_revision_url">%s</xliff:g> संशोधन के बारे में</string>
<string name="copy_to_clipboard_toast">आई डी क्लिपबोर्ड पर कॉपी किया गया</string>
</resources>

View File

@@ -1,278 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
<resources>
<string name="unstar">Ukloni iz favorita</string>
<string name="action_search">Pretraži</string>
<string name="action_search">Pretraživanje</string>
<string name="save">Spremi</string>
<string name="edit">Uredi</string>
<string name="delete">Ukloni</string>
<string name="confirm">Potvrdi</string>
<string name="deleteTitle">Izbriši karticu</string>
<string name="deleteTitle">Ukloni kartu</string>
<string name="deleteConfirmation">Izbrisati ovu karticu zauvijek\?</string>
<string name="copy_to_clipboard">Kopiraj ID u međuspremnik</string>
<string name="share">Dijeli</string>
<string name="sendLabel">Pošalji </string>
<string name="share">Podijeli</string>
<string name="sendLabel">Pošalji…</string>
<string name="editCardTitle">Uredi karticu</string>
<string name="addCardTitle">Dodaj karticu</string>
<string name="scanCardBarcode">Snimi crtični kod kartice</string>
<string name="cardShortcut">Prečac kartice</string>
<string name="noCardsMessage">Najprije dodaj karticu</string>
<string name="card_ids_copied">ID oznake su kopirane</string>
<string name="addCardTitle">Dodaj Kartu</string>
<string name="scanCardBarcode">Skeniranje crtičnog koda kartice</string>
<string name="cardShortcut">Oznaka karte</string>
<string name="noCardsMessage">Najprije dodajte karticu</string>
<string name="card_ids_copied">Kopirani ID kartice</string>
<string name="noBarcode">Nema crtičnog koda</string>
<string name="star">Dodaj u favorite</string>
<string name="action_add">Dodaj</string>
<string name="storeName">Ime</string>
<string name="note">Napomena</string>
<string name="noMatchingGiftCards">Nema rezultata. Pokušaj promijeniti pretragu.</string>
<string name="noMatchingGiftCards">Nema rezultata. Pokušajte promijeniti pretraživanje.</string>
<string name="cardId">ID kartice</string>
<string name="barcodeType">Vrsta crtičnog koda</string>
<string name="barcodeNoBarcode">Ne postoji crtični kod</string>
<string name="cancel">Odustani</string>
<string name="noGiftCards">Pritisni gumb + plus za dodavanje kartice ili uvezi putem izbornika ⋮.</string>
<string name="noStoreError">Ime nije zadano</string>
<string name="noCardExistsError">Nije bilo moguće pronaći tu karticu</string>
<string name="failedParsingImportUriError">Nije bilo moguće obraditi URI uvoza</string>
<string name="importExport">Uvoz/Izvoz</string>
<string name="barcodeNoBarcode">Na ovoj kartici nema crtičnog koda</string>
<string name="cancel">Poništi</string>
<string name="noGiftCards">Pritisnite gumb + plus da biste dodali karticu ili ga najprije uvezite iz izbornika ⋮.</string>
<string name="noStoreError">Ime nije uneseno</string>
<string name="noCardExistsError">Nije moguće pronaći karticu</string>
<string name="failedParsingImportUriError">Nije moguće analizirati uvoz URI</string>
<string name="importExport">Uvoz / Izvoz</string>
<string name="exportName">Izvoz</string>
<string name="importExportHelp">Spremanje sigurnosnih kopija tvojih podataka omogućuje premještanje podataka na jedan drugi uređaj.</string>
<string name="importExportHelp">Sigurnosno kopiranje kartica omogućuje vam da ih premjestite na drugi uređaj.</string>
<string name="importSuccessfulTitle">Uvezeno</string>
<string name="importFailedTitle">Neuspio uvoz</string>
<string name="importFailed">Nije bilo moguće izvršiti uvoz</string>
<string name="importFailedTitle">Nije moguće uvesti</string>
<string name="importFailed">Nije moguće uvesti karte</string>
<string name="exportSuccessfulTitle">Izvezeno</string>
<string name="about">Informacije</string>
<string name="importOptionApplicationButton">Koristi jednu drugu aplikaciju</string>
<string name="exportOptionExplanation">Podaci će se zapisati u željeno mjesto.</string>
<string name="exportFailedTitle">Neuspio izvoz</string>
<string name="exporting">Izvoz </string>
<string name="importOptionFilesystemExplanation">Odaberi određenu datoteku iz datotečnog sustava.</string>
<string name="importOptionApplicationTitle">Koristi jednu drugu aplikaciju</string>
<string name="about">Oh</string>
<string name="importOptionApplicationButton">Koristite drugu aplikaciju</string>
<string name="barcode">Barkod</string>
<string name="exportOptionExplanation">Podaci će biti zabilježeni na odabranom mjestu.</string>
<string name="exportFailedTitle">Izvoz nije uspio</string>
<string name="exporting">Opskrba…</string>
<string name="importOptionFilesystemExplanation">Odaberite određenu datoteku iz datotečnog sustava.</string>
<string name="importOptionApplicationTitle">Koristite drugu aplikaciju</string>
<string name="settings">Postavke</string>
<string name="settings_dark_theme">Tamna</string>
<string name="exportFailed">Nije bilo moguće izvršiti izvoz</string>
<string name="importing">Uvoz </string>
<string name="settings_dark_theme">Tamno</string>
<string name="exportFailed">Nije moguće izvesti karte</string>
<string name="importing">Uvoz…</string>
<string name="importOptionFilesystemTitle">Uvoz iz datotečnog sustava</string>
<string name="importOptionFilesystemButton">Iz datotečnog sustava</string>
<string name="importOptionApplicationExplanation">Za otvaranje datoteke koristi bilo koju aplikaciju ili tvoj omiljeni upravljač datoteka.</string>
<string name="importOptionApplicationExplanation">Koristite bilo koju aplikaciju ili omiljeni upravitelj datoteka za otvaranje datoteke.</string>
<string name="settings_theme">Tema</string>
<string name="settings_system_theme">Sustav</string>
<string name="settings_light_theme">Svijetla</string>
<string name="settings_display_barcode_max_brightness">Osvijetli prikaz crtičnog koda</string>
<string name="moveDown">Pomakni prema dolje</string>
<string name="addManually">Ručno upiši ID</string>
<string name="thumbnailDescription">Sličica</string>
<string name="settings_light_theme">Svjetlo</string>
<string name="settings_max_font_size_scale">Maksimalna veličina fonta</string>
<string name="settings_display_barcode_max_brightness">Osvijetlite izgled crtičnog koda</string>
<string name="moveDown">Pomicanje prema dolje</string>
<string name="addManually">Ručno unesite ID kartice</string>
<string name="thumbnailDescription">Sličica za karticu</string>
<string name="starImage">Omiljena zvijezda</string>
<string name="settings_category_title_ui">Korisničko sučelje</string>
<string name="exportSuccessful">Podaci su izvezeni</string>
<string name="settings_keep_screen_on">Ostavi ekran uključen</string>
<string name="settings_disable_lockscreen_while_viewing_card">Spriječi zaključavanje ekrana</string>
<string name="intent_import_card_from_url_share_text">Želim dijeliti karticu s tobom</string>
<string name="importSuccessful">Podaci su uvezeni</string>
<string name="enter_group_name">Upiši ime grupe</string>
<string name="exportSuccessful">Izvezeni podaci o karti</string>
<string name="settings_keep_screen_on">Držite zaslon uključen</string>
<string name="settings_disable_lockscreen_while_viewing_card">Spriječiti zaključavanje zaslona</string>
<string name="intent_import_card_from_url_share_text">Želim podijeliti razglednicu s vama</string>
<string name="importSuccessful">Uvezeni podaci o karti</string>
<string name="enter_group_name">Unesite naziv grupe</string>
<string name="groups">Grupe</string>
<string name="noGroups">Pritisni gumb + plus za dodavanje grupe za kategoriziranje.</string>
<string name="noGroupCards">Ova je grupa prazna</string>
<string name="addFromImage">Odaberi sliku iz galerije</string>
<string name="deleteConfirmationGroup">Izbrisati grupu\?</string>
<string name="failedOpeningFileManager">Najprije instaliraj upravlj datoteka.</string>
<string name="moveUp">Pomakni prema gore</string>
<string name="leaveWithoutSaveTitle">Zatvori aplikaciju</string>
<string name="card">Kartica</string>
<string name="leaveWithoutSaveConfirmation">Zatvoriti aplikaciju bez spremanja\?</string>
<string name="noGiftCardsGroup">Stvori neke kartice, a zatim ih ovdje dodijeli grupi.</string>
<plurals name="groupCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> kartica</item>
<item quantity="few"><xliff:g>%d</xliff:g> kartice</item>
<item quantity="other"><xliff:g>%d</xliff:g> kartica</item>
</plurals>
<string name="importStocardMessage">Odaberi tvoju iz Stocard izvezenu <i>***.zip</i> datoteku koju želiš uvesti.
\nPošalji e-mail na support@stocardapp.com s molbom za izvoz tvojih podataka.</string>
<string name="translate_platform">na platformi Weblate</string>
<string name="editGroup">Uređivanje grupe: <xliff:g>%s</xliff:g></string>
<string name="editBarcode">Uredi crtični kod</string>
<string name="expiryDate">Datum isteka</string>
<string name="never">Nikada</string>
<string name="accept">Prihvati</string>
<string name="importCatima">Uvezi iz Catima</string>
<string name="importFidme">Uvezi iz FidMe</string>
<string name="importStocard">Uvezi iz Stocard</string>
<string name="importLoyaltyCardKeychainMessage">Odaberi tvoju iz LoyaltyCardKeychain izvezenu <i>LoyaltyCardKeychain.csv</i> datoteku koju želiš uvesti.
\nStvori je putem izbornika „Uvoz/Izvoz” u aplikaciji LoyaltyCardKeychain i tamo najprije pritisni „Izvoz”.</string>
<string name="updateBarcodeQuestionText">Promijenio/la si ID. Želiš li također aktualizirati crtični kod da koristi istu vrijednost\?</string>
<string name="action_hide_details">Sakrij detalje</string>
<string name="importCards">Uvezi kartice</string>
<string name="selectColor">Odaberi boju</string>
<string name="setIcon">Postavi ikonu</string>
<string name="settings_catima_theme">Catima</string>
<string name="settings_green_theme">Zelena</string>
<string name="settings_grey_theme">Siva</string>
<string name="sort_by_expiry">Istek</string>
<string name="barcodeImageDescriptionWithType">Slika vrste crtičnog koda <xliff:g>%s</xliff:g></string>
<string name="noCardIdError">ID nije zadan</string>
<string name="importLoyaltyCardKeychain">Uvezi iz Loyalty Card Keychain</string>
<string name="frontImageDescription">Prednja slika</string>
<string name="exportPasswordHint">Upiši lozinku</string>
<string name="turn_flashlight_on">Uključi svjetiljku</string>
<string name="failedGeneratingShareURL">Nije bilo moguće generirati URL za dijeljenje. Prijavi ovaj problem.</string>
<string name="turn_flashlight_off">Isključi svjetiljku</string>
<string name="settings_locale">Jezik</string>
<string name="settings_magenta_theme">Magenta</string>
<string name="settings_violet_theme">Ljubičasta</string>
<string name="settings_sky_blue_theme">Nebesko plava</string>
<string name="sort">Razvrstaj</string>
<string name="updateBalance">Aktualiziraj saldo</string>
<string name="sort_by">Redoslijed</string>
<string name="version_history">Kronologija verzija</string>
<string name="credits">Zasluge</string>
<string name="and_data_usage">i korištenje podataka</string>
<string name="rate_this_app">Ocijeni ovu aplikaciju</string>
<string name="report_error">Prijavi greške</string>
<string name="include_if_asking_support">Ako želiš zatražiti podršku, uključi sljedeće informacije:</string>
<string name="options">Opcije</string>
<string name="starred">Označeno</string>
<string name="duplicateCard">Dupliciraj</string>
<string name="archive">Arhiviraj</string>
<string name="archived">Kartica je arhivirana</string>
<string name="unarchived">Kartica je dearhivirana</string>
<string name="failedLaunchingPhotoPicker">Nije bilo moguće pronaći aplikaciju za galeriju</string>
<string name="archiveList">Arhiva</string>
<string name="cameraPermissionDeniedTitle">Nije bilo moguće pristupiti kameri</string>
<string name="noCameraPermissionDirectToSystemSetting">Za snimanje crtičnih kodova Catima treba pristup tvojoj kameri. Dodirni ovdje za mijenjanje postavki dozvola.</string>
<string name="app_libraries">Libre biblioteke trećih strana: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="selectBarcodeTitle">Biranje crtičnog koda</string>
<string name="copy_to_clipboard_toast">ID je kopiran u međuspremnik</string>
<string name="enterBarcodeInstructions">Upiši ID i dolje odaberi vrstu crtičnog koda ili „Ne postoji crtični kod”.</string>
<string name="settings_portrait_orientation">Okomito</string>
<string name="settings_lock_on_opening_orientation">Zaključaj na položaj koji se koristi prilikom otvaranja kartice</string>
<string name="group_edit">Uredi grupu</string>
<string name="group_name_already_in_use">Ime grupe se već koristi</string>
<string name="noBarcodeFound">Nijedan crtični kod nije pronađen</string>
<string name="balance">Saldo</string>
<string name="chooseImportType">Uvezi podatke iz</string>
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
<string name="parsingBalanceFailed">Čini se da <xliff:g>%s</xliff:g> nije ispravni saldo.</string>
<string name="privacy_policy_popup_text">Obavijest o politici privatnosti (obavezna za neke trgovine aplikacija):
\n
\nPODACI SE UOPĆE NE PRIKUPLJAJU, što svatko može potvrditi budući da je naša aplikacija libre softver.</string>
<string name="importCatimaMessage">Odaberi tvoju iz Catima izvezenu <i>catima.zip</i> datoteku koju želiš uvesti.
\nStvori je putem izbornika „Uvoz/Izvoz” jedne druge Catima aplikacije i tamo najprije pritisni „Izvoz”.</string>
<string name="height">Visina:</string>
<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 galerije</string>
<string name="openBackImageInGalleryApp">Otvori stražnju sliku u aplikaciji galerije</string>
<string name="setBarcodeHeight">Postavi visinu crtičnog koda</string>
<plurals name="selectedCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> odabrana</item>
<item quantity="few"><xliff:g>%d</xliff:g> odabrane</item>
<item quantity="other"><xliff:g>%d</xliff:g> odabrano</item>
</plurals>
<string name="validFromDate">Vrijedi od</string>
<string name="chooseValidFromDate">Odaberi datum od kada kartica vrijedi</string>
<string name="anyDate">Bilo koji datum</string>
<string name="validFromSentence">Vrijedi od: <xliff:g>%s</xliff:g></string>
<string name="photos">Slike</string>
<string name="ok">U redu</string>
<string name="app_copyright_old">Zasnovano na Loyalty Card Keychain
\nautorsko pravo © 2016. 2020. Branden Archer</string>
<string name="settings_system_locale">Sustav</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> bod</item>
<item quantity="few"><xliff:g>%s</xliff:g> boda</item>
<item quantity="other"><xliff:g>%s</xliff:g> bodova</item>
</plurals>
<string name="donate">Doniraj</string>
<string name="storageReadPermissionRequired">Za ovu radnju je potrebna dozvola za čitanje spremljenih podataka …</string>
<string name="cameraPermissionRequired">Za ovu radnju je potrebna dozvola za pristup kameri …</string>
<string name="app_license">Copylefted libre softver, GPLv3+ licenca</string>
<string name="settings_card_orientation">Položaj crtičnog koda</string>
<string name="settings_follow_system_orientation">Slijedi sustav</string>
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
<string name="importFidmeMessage">Odaberi tvoju iz FidMe izvezenu <i>idme-export-request-xxxxxx.zip</i> datoteku koju želiš uvesti i ručno odaberi vste crtičnog koda nakon toga.
\nStvori je putem tvog FidMe profila i tamo najprije odaberi „Zaštita podataka” a zatim pritisni „Dekomprimiraj moje podatke”.</string>
<string name="importVoucherVaultMessage">Odaberi tvoju iz Voucher Vault izvezenu <i>vouchervault.json</i> datoteku koju želiš uvesti.
\nStvori je u aplikaciji Voucher Vault i tamo najprije pritisni „Izvoz”.</string>
<string name="settings_pink_theme">Ružičasta</string>
<string name="settings_blue_theme">Plava</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>
<string name="unarchive">Dearhiviraj</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="few"><xliff:g>%1$d</xliff:g> kartice (<xliff:g id="archivedCount">%2$d</xliff:g> arhivirane)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> kartica (<xliff:g id="archivedCount">%2$d</xliff:g> arhivirano)</item>
</plurals>
<string name="help_translate_this_app">Pomogni prevoditi ovu aplikaciju</string>
<string name="welcome">Pozdrav u Catima</string>
<string name="currentBalanceSentence">Aktualni saldo: <xliff:g>%s</xliff:g></string>
<string name="newBalanceSentence">Novi saldo: <xliff:g>%s</xliff:g></string>
<plurals name="deleteCardsTitle">
<item quantity="one">Izbriši <xliff:g>%d</xliff:g> karticu</item>
<item quantity="few">Izbriši <xliff:g>%d</xliff:g> kartice</item>
<item quantity="other">Izbriši <xliff:g>%d</xliff:g> kartica</item>
</plurals>
<plurals name="deleteCardsConfirmation">
<item quantity="one">Izbrisati ovu <xliff:g>%d</xliff:g> karticu zauvijek\?</item>
<item quantity="few">Izbrisati ove <xliff:g>%d</xliff:g> kartice zauvijek\?</item>
<item quantity="other">Izbrisati ovih <xliff:g>%d</xliff:g> kartica zauvijek\?</item>
</plurals>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019. <xliff:g>%d.</xliff:g> Sylvia van Os</string>
<string name="debug_version_fmt">Verzija: <xliff:g id="version">%s</xliff:g></string>
<string name="app_resources">Libre resursi trećih strana: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="settings_landscape_orientation">Vodoravno</string>
<string name="group_name_is_empty">Ime grupe ne smije biti prazno</string>
<string name="group_updated">Grupa je aktualizirana</string>
<string name="all">Sve</string>
<string name="groupsList">Grupe: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Isteče: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Isteklo: <xliff:g>%s</xliff:g></string>
<string name="chooseExpiryDate">Odaberi datum isteka</string>
<string name="moveBarcodeToTopOfScreen">Premjesti crtični kod na vrh ekrana</string>
<string name="errorReadingImage">Nije bilo moguće učitati sliku</string>
<string name="currency">Valuta</string>
<string name="points">Bodovi</string>
<string name="privacy_policy">Politika privatnosti</string>
<string name="importVoucherVault">Uvezi iz Voucher Vault</string>
<string name="barcodeId">Vrijednost crtičnog koda</string>
<string name="sameAsCardId">Ista kao ID</string>
<string name="setBarcodeId">Postavi vrijednost crtičnog koda</string>
<string name="unsupportedBarcodeType">Ova se vrsta crtičnog koda još ne može prikazati. Možda će se podržati u novijoj verziji aplikacije.</string>
<string name="wrongValueForBarcodeType">Vrijednost nije valjana za odabranu vrstu crtičnog koda</string>
<string name="copy_to_clipboard_multiple_toast">ID oznke su kopirane u međuspremnik</string>
<string name="intent_import_card_from_url_share_multiple_text">Želim dijeliti neke kartice s tobom</string>
<string name="backImageDescription">Stražnja slika</string>
<string name="setFrontImage">Postavi prednju sliku</string>
<string name="setBackImage">Postavi stražnju sliku</string>
<string name="removeImage">Ukloni sliku</string>
<string name="takePhoto">Uslikaj fotografiju</string>
<string name="updateBarcodeQuestionTitle">Aktualizirati vrijednost crtičnog koda\?</string>
<string name="yes">Da</string>
<string name="no">Ne</string>
<string name="passwordRequired">Upiši lozinku</string>
<string name="exportPassword">Postavi lozinku za zaštitu tvog izvoza (opcionalno)</string>
<string name="settings_oled_dark">Potpuno crna pozadina za tamnu temu</string>
<string name="settings_theme_color">Boja teme</string>
<string name="settings_brown_theme">Smeđa</string>
<string name="app_contributors">Omogućuje: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="showMoreInfo">Prikaži informacije</string>
<string name="sort_by_name">Ime</string>
<string name="sort_by_most_recently_used">Nedavno korišteno</string>
<string name="reverse">… u obrnutom redoslijedu</string>
<string name="action_show_details">Prikaži detalje</string>
<string name="shortcutSelectCard">Odaberi karticu</string>
<string name="noUnarchivedCardsMessage">Ne postoje nearhivirane kartice</string>
<string name="previousCard">Prethodna</string>
<string name="nextCard">Sljedeća</string>
<string name="updateBalanceTitle">Koliko si potrošio/la\?</string>
<string name="updateBalanceHint">Upiši iznos</string>
<string name="about_title_fmt">Informaije o <xliff:g id="app_name">%s</xliff:g></string>
<string name="failedToOpenUrl">Najprije instaliraj web preglednik</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="one">Pogledaj arhivu (<xliff:g>%1$d</xliff:g> kartica)</item>
<item quantity="few">Pogledaj arhivu (<xliff:g>%1$d</xliff:g> kartice)</item>
<item quantity="other">Pogledaj arhivu (<xliff:g>%1$d</xliff:g> kartica)</item>
</plurals>
<string name="noGroups">Pritisnite gumb + plus da biste najprije dodali grupe za klasifikaciju.</string>
<string name="noGroupCards">Ova grupa ne sadrži nikakve kartice</string>
<string name="addFromImage">Odaberite sliku iz galerije</string>
<string name="deleteConfirmationGroup">Izbriši grupu\?</string>
<string name="failedOpeningFileManager">Najprije instalirajte upravitelj datoteka.</string>
<string name="moveUp">Pomicanje gore</string>
<string name="leaveWithoutSaveTitle">Izlaz</string>
<string name="card">Karta</string>
<string name="leaveWithoutSaveConfirmation">Otići bez očuvanja\?</string>
<string name="noGiftCardsGroup">Izradite neke kartice, a zatim ih dodijelite grupi ovdje.</string>
</resources>

View File

@@ -4,95 +4,96 @@
<string name="action_add">Hozzáadás</string>
<string name="action_search">Keresés</string>
<plurals name="selectedCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> kiválasztva</item>
<item quantity="other"><xliff:g>%d</xliff:g> kiválasztva</item>
<item quantity="one"><xliff:g>%d</xliff:g> kiválasztott</item>
<item quantity="other"><xliff:g>%d</xliff:g> kiválasztottak</item>
</plurals>
<string name="noCardsMessage">Először adjon hozzá egy kártyát</string>
<string name="noGiftCardsGroup">Hozzon létre kártyákat, és rendelje hozzá a megfelelő csoporthoz.</string>
<string name="noMatchingGiftCards">Nincs találaat. Próbálja módosítani a keresést.</string>
<string name="noMatchingGiftCards">Nincs eredmény. Próbálja módosítani a keresést.</string>
<string name="storeName">Név</string>
<string name="note">Feljegyzés</string>
<string name="cardId">Kártyaazonosító</string>
<string name="barcodeType">Vonalkód típusa</string>
<string name="cardId">Kártya azonosító</string>
<string name="barcodeType">Vonalkód típus</string>
<string name="barcodeNoBarcode">Nincs vonalkód</string>
<string name="noBarcode">Nincs vonalkód</string>
<string name="star">Hozzáadás a kedvencekhez</string>
<string name="unstar">Eltávolítás a kedvencekl</string>
<string name="star">Kedvencekhez adás</string>
<string name="unstar">Kivétel a kedvencek közül</string>
<string name="cancel">Mégse</string>
<string name="save">Mentés</string>
<string name="edit">Szerkesztés</string>
<string name="delete">Törlés</string>
<string name="confirm">Jóváhagyás</string>
<string name="confirm">Jóváhagy</string>
<plurals name="deleteCardsTitle">
<item quantity="one"><xliff:g>%d</xliff:g> kártya törlése</item>
<item quantity="one">Törölje az <xliff:g>%d</xliff:g> kártyát</item>
<item quantity="other">Törölje az <xliff:g>%d</xliff:g> kártyákat</item>
</plurals>
<string name="deleteConfirmation">Véglegesen törli a kártyát\?</string>
<string name="ok">Rendben</string>
<string name="copy_to_clipboard">Azonosító vágólapra másolása</string>
<string name="copy_to_clipboard">Azonosító másolása a vágólapra</string>
<string name="share">Megosztás</string>
<string name="sendLabel">Küldés…</string>
<string name="editCardTitle">Kártya szerkesztése</string>
<string name="addCardTitle">Kártya hozzáadása</string>
<string name="scanCardBarcode">Vonalkód leolvasása</string>
<string name="scanCardBarcode">Vonalkód szkennelése</string>
<string name="cardShortcut">Kártya parancsikon</string>
<string name="noStoreError">Nincs név megadva</string>
<string name="failedParsingImportUriError">Az importálási URI nem értelmezhető</string>
<string name="importExport">Importálás/exportálás</string>
<string name="exportName">Exportálás</string>
<string name="importExportHelp">Az adatok mentése lehetővé teszi, hogy egy másik eszközre helyezze át.</string>
<string name="failedParsingImportUriError">Nem elemezhető az importált URI</string>
<string name="importExport">Import/Export</string>
<string name="exportName">Export</string>
<string name="importExportHelp">Az adataid mentése lehetővé teszi, hogy egy másik eszközre feltöltsd.</string>
<string name="importSuccessfulTitle">Importálva</string>
<string name="importFailedTitle">Az importálás sikertelen</string>
<string name="importFailed">Nem sikerült az importálás végrehajtása</string>
<string name="importFailedTitle">Importálás meghiúsult</string>
<string name="importFailed">Importálás nem hajtható végre</string>
<string name="exportSuccessfulTitle">Exportálva</string>
<string name="exportFailedTitle">Az exportálás sikertelen</string>
<string name="exportFailedTitle">Exportálás meghiúsult</string>
<plurals name="deleteCardsConfirmation">
<item quantity="one">Véglegesen töröl <xliff:g>%d</xliff:g> kártyát\?</item>
<item quantity="other">Véglegesen töröl <xliff:g>%d</xliff:g> kártyát\?</item>
<item quantity="one">Véglegesen törli a <xliff:g>%d</xliff:g> kártyát\?</item>
<item quantity="other">Véglegesen törli a <xliff:g>%d</xliff:g> kártyákat\?</item>
</plurals>
<string name="deleteTitle">Kártya törlése</string>
<string name="card_ids_copied">Azonosító(k) másolva</string>
<string name="barcodeImageDescriptionWithType">A(z) <xliff:g>%s</xliff:g> vonalkód képe</string>
<string name="card_ids_copied">Azonosító(k) másolása</string>
<string name="barcodeImageDescriptionWithType"><xliff:g>%s</xliff:g> vonalkód képe</string>
<string name="noCardIdError">Nincs azonosító megadva</string>
<string name="noCardExistsError">A kártya nem található</string>
<string name="importStocardMessage">Válassza ki az importálandó <i>***.zip</i> Stocard export fájlt.
\nAz adatainak exportálását a support@stocardapp.com címre írt levélben kérheti.</string>
<string name="importVoucherVault">Importálás a Voucher Vaultból</string>
<string name="wrongValueForBarcodeType">Ez az érték meg megfelelő a kiválasztott vonalkódtípushoz</string>
<string name="noCardExistsError">Kártya nem található</string>
<string name="importStocardMessage">Válassza ki a <i>***.zip</i> Stocard exportot.
\nAdatinak exportját kérheti e-mailben a support@stocardapp.com címre írva.</string>
<string name="importVoucherVault">Importálás Voucher Vault-ból</string>
<string name="wrongValueForBarcodeType">Ez az érték meg megfelelő a vonalkód típushoz</string>
<string name="settings_green_theme">Zöld</string>
<string name="setBackImage">Hátlapi kép beállítása</string>
<string name="no">Nem</string>
<string name="passwordRequired">Adja meg a jelszót</string>
<string name="passwordRequired">Kérem írja be a kódot</string>
<string name="settings_catima_theme">Catima</string>
<string name="exportPasswordHint">Kód beírása</string>
<string name="failedGeneratingShareURL">Nem lehetett megosztható webcímet előállítani. Kérjük, ezt jelentse.</string>
<string name="failedGeneratingShareURL">Nem lehetett megosztható címet generálni. Kérem jelentse ezt.</string>
<string name="settings_theme_color">Téma színe</string>
<string name="settings_grey_theme">Szürke</string>
<string name="sort">Rendezés</string>
<string name="on_google_play">a Google Playen</string>
<string name="action_show_details">Részletek megjelenítése</string>
<string name="sort">Rendez</string>
<string name="on_google_play">Google Play-en</string>
<string name="action_show_details">Részletek mutatása</string>
<string name="action_hide_details">Részletek elrejtése</string>
<string name="and_data_usage">és adathasználat</string>
<string name="translate_platform">a Weblate-en</string>
<string name="and_data_usage">és adat használat</string>
<string name="translate_platform">Weblate-en</string>
<string name="sort_by_name">Név</string>
<string name="sort_by_most_recently_used">Legutóbb használt</string>
<string name="sort_by_expiry">Lejárat</string>
<string name="rate_this_app">Értékelje az alkalmazást</string>
<string name="exportFailed">Nem sikerült az exportálás végrehajtása</string>
<string name="rate_this_app">Értékelje az appot</string>
<string name="exportFailed">Exportálás sikertelen</string>
<string name="importing">Importálás…</string>
<string name="exporting">Exportálás…</string>
<string name="exportOptionExplanation">Az adatok a kiválasztott helyre lesznek mentve.</string>
<string name="exportOptionExplanation">Az adatokat a kiválasztott helyre fogjuk menteni.</string>
<string name="importOptionFilesystemTitle">Importálás fájlrendszerből</string>
<string name="importOptionFilesystemButton">A fájlrendszerből</string>
<string name="importOptionApplicationTitle">Másik alkalmazás használata</string>
<string name="importOptionApplicationExplanation">A fájl megnyitásához használjon egy tetszőleges alkalmazást, vagy a kedvenc fájlkezelőjét.</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os</string>
<string name="app_license">Copyleft licencű szabad szoftver, GPLv3+ alatt közzétéve</string>
<string name="about_title_fmt">A <xliff:g id="app_name">%s</xliff:g> névjegye</string>
<string name="importOptionApplicationTitle">Másik app használata</string>
<string name="importOptionApplicationExplanation">Használjon egy tetszőleges appot, vagy kedvenc fájl menedzserét a fájl megnyitásához.</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Szerzői Jog © 2019<xliff:g>%d</xliff:g> Sylvia van Os</string>
<string name="app_license">Copyleft-elt gáttalan szoftver, GPLv3+ licenszelve</string>
<string name="about_title_fmt"><xliff:g id="app_name">%s</xliff:g> névjegye</string>
<string name="debug_version_fmt">Verzió: <xliff:g id="version">%s</xliff:g></string>
<string name="app_resources">Szabad külső erőforrások: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_revision_fmt">Revíziós információ: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="app_resources">Gáttalan külsős források: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="selectBarcodeTitle">Vonalkód kiválasztása</string>
<string name="enterBarcodeInstructions">Írja be az azonosítót, majd válasszon egy vonalkódot, vagy a Nincs vonalkód” lehetőséget.</string>
<string name="enterBarcodeInstructions">Írja be az azonosítót, majd válasszon egy vonalkódot, vagy a \"Nincs vonalkód\" opciót.</string>
<string name="copy_to_clipboard_toast">Azonosító vágólapra másolva</string>
<string name="starImage">Kedvencek csillag</string>
<string name="settings">Beállítások</string>
@@ -100,54 +101,57 @@
<string name="settings_theme">Téma</string>
<string name="settings_system_theme">Rendszer</string>
<string name="settings_light_theme">Világos</string>
<string name="settings_display_barcode_max_brightness">Vonalkód nézet világosítása</string>
<string name="settings_keep_screen_on">A képernyő bekapcsolva tartása</string>
<string name="settings_disable_lockscreen_while_viewing_card">Képernyőzárólás megakadályozása</string>
<string name="settings_max_font_size_scale">Max. betű méret</string>
<string name="settings_display_barcode_max_brightness">Fényes vonalkód nézet</string>
<string name="settings_keep_screen_on">Képernyő bekapcsolva marad</string>
<string name="settings_disable_lockscreen_while_viewing_card">Képernyő zárólás megakadályozása</string>
<string name="intent_import_card_from_url_share_text">Meg akarok veled osztani egy kártyát</string>
<string name="importSuccessful">Adatok importálva</string>
<string name="exportSuccessful">Adatok exportálva</string>
<string name="importSuccessful">Adat importálva</string>
<string name="exportSuccessful">Adat exportálva</string>
<string name="enter_group_name">Adja meg a csoport nevét</string>
<string name="groups">Csoportok</string>
<string name="group_edit">Csoport szerkesztése</string>
<string name="group_name_is_empty">A csoportnév nem lehet üres</string>
<string name="failedOpeningFileManager">Előbb telepítsen egy fájlkezelőt.</string>
<string name="moveUp">Mozgatás felfelé</string>
<string name="moveDown">Mozgatás lefelé</string>
<string name="group_name_is_empty">Csoport név nem lehet üres</string>
<string name="failedOpeningFileManager">Telepítsen egy fájl menedzsert.</string>
<string name="moveUp">Felfelé mozgatás</string>
<string name="moveDown">Lefelé mozgatás</string>
<string name="leaveWithoutSaveTitle">Kilépés</string>
<string name="leaveWithoutSaveConfirmation">Kilépés mentés nélkül\?</string>
<string name="addManually">Azonosító kézi beírása</string>
<string name="addManually">Azonosító manuális beírása</string>
<string name="addFromImage">Kép kiválasztása a galériából</string>
<string name="editGroup">Csoportok szerkesztése: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Lejárat: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Érvényes: <xliff:g>%s</xliff:g></string>
<string name="balanceSentence">Egyenleg: <xliff:g>%s</xliff:g></string>
<string name="card">Kártya</string>
<string name="barcode">Vonalkód</string>
<string name="editBarcode">Vonalkód szerkesztése</string>
<string name="expiryDate">Lejárati dátum</string>
<string name="never">Soha</string>
<string name="chooseExpiryDate">Lejárati dátum kiválasztása</string>
<string name="moveBarcodeToTopOfScreen">Vonalkód feltolása a képernyő tetejére</string>
<string name="moveBarcodeToCenterOfScreen">Vonalkód középre igazítása</string>
<string name="noBarcodeFound">Nem található vonalkód</string>
<string name="errorReadingImage">Nem lehet olvasni a képet</string>
<string name="balance">Egyenleg</string>
<string name="currency">Pénznem</string>
<string name="currency">Valuta</string>
<string name="points">Pontok</string>
<string name="parsingBalanceFailed">A(z) <xliff:g>%s</xliff:g> nem tűnik valós egyenlegnek.</string>
<string name="app_loyalty_card_keychain">Hűségkártya-kulcstartó</string>
<string name="privacy_policy">Adatvédelmi irányelvek</string>
<string name="accept">Elfogadás</string>
<string name="importCatima">Importálás a Catimából</string>
<string name="importFidme">Importálás a FidMeből</string>
<string name="importLoyaltyCardKeychain">Importálás a Loyalty Card Keychainből</string>
<string name="importLoyaltyCardKeychainMessage">Válassza ki a Loyalty Card Keychainl importálandó <i>LoyaltyCardKeychain.csv</i> export fájlt.
\nEzt hozza létre a Loyalty Card Keychainben az Importálás/exportálás menüben, az Exportálás megnyomásával.</string>
<string name="importStocard">Importálás a Stocardból</string>
<string name="importVoucherVaultMessage">Válassza ki az importálandó <i>vouchervault.json</i> Voucher Vault export fájlt.
\nEzt hozza létre a Voucher Vaultban az Exportálás megnyomásával.</string>
<string name="barcodeId">Vonalkód értéke</string>
<string name="parsingBalanceFailed">A <xliff:g>%s</xliff:g> nem tűnik valós egyenlegnek.</string>
<string name="app_loyalty_card_keychain">Hűségkártya kulcstartó</string>
<string name="privacy_policy">Adatvédelmi Szabályzat</string>
<string name="accept">Elfogad</string>
<string name="importCatima">Importálás Catimából</string>
<string name="importFidme">Importálás FidMe-ből</string>
<string name="importLoyaltyCardKeychain">Importálás a Loyalty Card Keychain-ből</string>
<string name="importLoyaltyCardKeychainMessage">Válassza ki a Loyalty Card Keychain-ból importálni kívánt <i>LoyaltyCardKeychain.csv</i> export fájlt.
\nLétrehozhatja az Import/Export menüből ha a Loyalty Card Keychain-ben rányom az Exportra.</string>
<string name="importStocard">Importálás Stocard-ból</string>
<string name="importVoucherVaultMessage">Válassza ki a <i>vouchervault.json</i> Voucher Vault exportt.
\nLétrehozhatja az Export-ra nyomva a Voucher Vault-ban.</string>
<string name="barcodeId">Vonalkód érték</string>
<string name="sameAsCardId">Ugyanaz, mint az azonosító</string>
<string name="setBarcodeId">Vonalkód értékének beállítása</string>
<string name="unsupportedBarcodeType">Ez a vonalkódtípus még nem jeleníthető meg. Lehet, hogy támogatott lesz az alkalmazás egy későbbi verzióban.</string>
<string name="copy_to_clipboard_multiple_toast">Az azonosítók a vágólapra másolva</string>
<string name="setBarcodeId">Vonalkód érték beállítása</string>
<string name="unsupportedBarcodeType">Ez a vonalkód típus még nem megjeleníthető. Feltehetően támogatva lesz egy későbbi verzióban.</string>
<string name="copy_to_clipboard_multiple_toast">Azonosítók a vágólapra másolva</string>
<string name="intent_import_card_from_url_share_multiple_text">Meg akarok veled osztani pár kártyát</string>
<string name="frontImageDescription">Előlapi kép</string>
<string name="backImageDescription">Hátlapi kép</string>
@@ -155,10 +159,10 @@
<string name="setFrontImage">Előlapi kép beállítása</string>
<string name="removeImage">Kép eltávolítása</string>
<string name="takePhoto">Fénykép készítése</string>
<string name="updateBarcodeQuestionTitle">Vonalkódérték frissítése\?</string>
<string name="updateBarcodeQuestionText">Megváltoztatta az azonosítót. Ennek megfelelően megváltoztatja a vonalkód értéket is\?</string>
<string name="updateBarcodeQuestionTitle">Vonalkód érték frissítése\?</string>
<string name="updateBarcodeQuestionText">Megváltoztatta az azonosító. Meg akarja ennek megfelelően változtatni a vonalkód értéket is\?</string>
<string name="yes">Igen</string>
<string name="exportPassword">Állítson be egy jelszót az export védelme érdekében (nem kötelező)</string>
<string name="exportPassword">Írjon be egy jelszót az export védelme érdekében (opcionális)</string>
<string name="turn_flashlight_on">Zseblámpa bekapcsolása</string>
<string name="turn_flashlight_off">Zseblámpa kikapcsolása</string>
<string name="settings_locale">Nyelv</string>
@@ -166,106 +170,102 @@
<string name="selectColor">Szín kiválasztása</string>
<string name="setIcon">Ikon beállítása</string>
<string name="settings_pink_theme">Rózsaszín</string>
<string name="settings_magenta_theme">Bíbor</string>
<string name="settings_violet_theme">Ibolya</string>
<string name="settings_magenta_theme">Magenta</string>
<string name="settings_violet_theme">Ibolyaszínű</string>
<string name="settings_blue_theme">Kék</string>
<string name="settings_sky_blue_theme">Égszínkék</string>
<string name="settings_brown_theme">Barna</string>
<string name="app_contributors">Lehetővé tették: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="showMoreInfo">Információk megjelenítése</string>
<string name="reverse">…fordított sorrendben</string>
<string name="sort_by">Rendezés:</string>
<string name="version_history">Verziótörténet</string>
<string name="app_contributors">Lehetővé tette: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="showMoreInfo">Infó mutatása</string>
<string name="hideMoreInfo">Infó elrejtése</string>
<string name="swipeToSwitchImages">Csúsztassa ujját a képek váltásához, tartsa lenyomva a kép megnyitásához a Galéria alkalmazásban</string>
<string name="sort_by_balance">Egyenleg</string>
<string name="reverse">...fordított sorrendben</string>
<string name="sort_by">Rendezés mint</string>
<string name="version_history">Verzió történet</string>
<string name="credits">Köszönet</string>
<string name="help_translate_this_app">Segítsen lefordítani az alkalmazást</string>
<string name="license">Licenc</string>
<string name="source_repository">Forráskódtároló</string>
<string name="on_github">a GitHubon</string>
<string name="report_error">Hiba jelentése</string>
<string name="help_translate_this_app">Segítsen lefordítani az appot</string>
<string name="license">Licensz</string>
<string name="source_repository">Forrás repó</string>
<string name="on_github">GitBub-on</string>
<string name="report_error">Hiba Jelentése</string>
<string name="shortcutSelectCard">Válasszon egy kártyát</string>
<string name="options">Beállítások</string>
<string name="starred">Csillagozva</string>
<string name="set_scale">Méret választása</string>
<plurals name="groupCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> kártya</item>
<item quantity="other"><xliff:g>%d</xliff:g> kártya</item>
<item quantity="other"><xliff:g>%d</xliff:g> kártyák</item>
</plurals>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> pont</item>
<item quantity="other"><xliff:g>%s</xliff:g> pontok</item>
</plurals>
<string name="chooseImportType">Adatok importálása innen</string>
<string name="chooseImportType">Adat importálása innen</string>
<string name="thumbnailDescription">Előkép</string>
<string name="importOptionFilesystemExplanation">Válassza ki a kívánt fájlt a fájlrendszerből.</string>
<string name="importOptionApplicationButton">Másik alkalmazás használata</string>
<string name="importOptionApplicationButton">Másik app használata</string>
<string name="about">Névjegy</string>
<string name="app_copyright_old">Készült a Loyalty Card Keychain alapján
\nCopyright © 20162020 Branden Archer</string>
<string name="app_libraries">Szabad külső programkönyvtárak: <xliff:g id="app_libraries_list">%s</xliff:g></string>
\nszerzői jog © 20162020 Branden Archer</string>
<string name="app_libraries">Gáttalan külsős mappák: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="settings_dark_theme">Sötét</string>
<string name="deleteConfirmationGroup">Csoport törlése\?</string>
<string name="noGroups">Nyomja meg a + gombot a csoportok kategorizálásához.</string>
<string name="group_name_already_in_use">A csoportnév már létezik</string>
<string name="all">Összes</string>
<string name="group_name_already_in_use">Csoport név már létezik</string>
<string name="all">Mind</string>
<string name="noGroupCards">Ez a csoport üres</string>
<string name="group_updated">Csoport frissítve</string>
<string name="expiryStateSentenceExpired">Lejárt: <xliff:g>%s</xliff:g></string>
<string name="groupsList">Csoportok: <xliff:g>%s</xliff:g></string>
<string name="importCatimaMessage">Válassza ki az exportált <i>catima.zip</i> fájlt az importáláshoz.
\nLétrehozhatja az Importálás/exportálás menüből az Exportálást megnyomva egy másik Catima alkalmazásban.</string>
<string name="privacy_policy_popup_text">Adatvédelmi irányelvek nyilatkozata (némely alkalmazásbolt kéri):
<string name="importCatimaMessage">Válassza ki a <i>catima.zip</i>-jét az importáláshoz.
\nLétrehozhatja az Import/Export menüből az Exportálást megnyomva egy másik Catima appban.</string>
<string name="privacy_policy_popup_text">Adatvédelmi szabály értesítő (némely app bolt kéri):
\n
\nSEMMILYEN ADAT NEM KERÜL GYŰJTÉSRE, amit bárki ellenőrizhet, hiszen az alkalmazás szabad szoftver.</string>
<string name="importFidmeMessage">Válassza ki a FidMeből exportált <i>fidme-export-request-xxxxxx.zip</i> fájl majd importálja be, és utána válassza a kézi vonalkódbeírást.
\nEzt hozza létre a FidMe-profiljában az Adatvédelem rész választásával, majd a Saját adatok kinyerése megnyomásával.</string>
<string name="settings_card_orientation">Vonalkód tájolása</string>
\nSEMMILYEN ADATGYŰJTÉS NINCS, amit bárki ellenőrizhet, lévén hogy az app gáttalan szoftver.</string>
<string name="importFidmeMessage">Válassza ki a <i>fidme-export-request-xxxxxx.zip</i> nevű FidMe exportot, majd importálja be és válassza a manuális vonalkód opciót utána.
\nEzt a FidMe-ben megtalálja a profiljában az Adat Védelem résznél ha rányom az Adataim Kivonata linkre.</string>
<string name="settings_card_orientation">Vonalkód tájolás</string>
<plurals name="groupCardCountWithArchived">
<item quantity="one"><xliff:g>%1$d</xliff:g> kártya (<xliff:g id="archivedCount">%2$d</xliff:g> archiválva)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> kártya (<xliff:g id="archivedCount">%2$d</xliff:g> archiválva)</item>
<item quantity="other"><xliff:g>%1$d</xliff:g> kártyák (<xliff:g id="archivedCount">%2$d</xliff:g> archiválva)</item>
</plurals>
<string name="noUnarchivedCardsMessage">Nincs archiválatlan kártya</string>
<string name="failedToOpenUrl">Először telepítsen egy webböngészőt</string>
<string name="failedLaunchingPhotoPicker">Nem található támogatott galéria alkalmazás</string>
<string name="failedToOpenUrl">Először telepíts egy webböngészőt</string>
<string name="failedLaunchingPhotoPicker">Nem található támogatott képnézegető app</string>
<string name="previousCard">Előző</string>
<string name="nextCard">Következő</string>
<string name="settings_portrait_orientation">Álló</string>
<string name="settings_follow_system_orientation">Rendszer követése</string>
<string name="settings_lock_on_opening_orientation">A használt tájolás zárolása a kártya megnyitásakor</string>
<string name="settings_lock_on_opening_orientation">A használt tájolás zárolása kártya használatakor</string>
<string name="settings_landscape_orientation">Fekvő</string>
<string name="settings_oled_dark">Teljesen fekete háttér a sötét témánál</string>
<string name="include_if_asking_support">Ha támogatás akar kérni, ossza meg az alábbi információkat:</string>
<string name="archive">Archiválás</string>
<string name="settings_oled_dark">Tiszta fekete háttér sötét témánál</string>
<string name="include_if_asking_support">Ha támogatást szeretnél igénybe venni, oszd meg az alábbi információkat:</string>
<string name="archive">Archivál</string>
<string name="unarchive">Archiválás megszüntetése</string>
<string name="archived">Kártya archiválva</string>
<string name="archiveList">Archívum</string>
<string name="duplicateCard">Klónozás</string>
<string name="archived">Kártya archiválása</string>
<string name="archiveList">Archivál</string>
<string name="duplicateCard">Másolat</string>
<string name="currentBalanceSentence">Jelenlegi egyenleg: <xliff:g>%s</xliff:g></string>
<string name="updateBalanceHint">Adja meg az összeget</string>
<string name="importCards">Kártyák importálása</string>
<string name="updateBalanceTitle">Mennyit költött\?</string>
<string name="updateBalanceTitle">Mennyit költöttél\?</string>
<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="unarchived">Archiválatlan kártya</string>
<string name="welcome">Üdvözöljük Catimában</string>
<plurals name="viewArchivedCardsWithCount">
<item quantity="one">Archívum megtekintése (<xliff:g>%1$d</xliff:g> kártya)</item>
<item quantity="other">Archívum megtekintése (<xliff:g>%1$d</xliff:g> kártya)</item>
<item quantity="other">Archívum megtekintése (<xliff:g>%1$d</xliff:g> kártyák)</item>
</plurals>
<string name="updateBalance">Egyenleg frissítése</string>
<string name="noCameraPermissionDirectToSystemSetting">A vonalkódok leolvasásához a Catimának hozzá kell férnie a kamerához. Koppintson ide az engedélybeállítások módosításához.</string>
<string name="noCameraPermissionDirectToSystemSetting">A vonalkódok beolvasásához a Catimának hozzá kell férnie a kamerához. Koppintson ide az engedélybeállítások módosításához.</string>
<string name="validFromDate">Érvényesség kezdete</string>
<string name="anyDate">Bármely dátum</string>
<string name="chooseValidFromDate">Válassza ki az érvényesség kezdetét</string>
<string name="chooseValidFromDate">Válassza ki az érvényesség kezdeti dátumot</string>
<string name="validFromSentence">Érvényesség kezdete: <xliff:g>%s</xliff:g></string>
<string name="storageReadPermissionRequired">A művelethez tárolóolvasási engedély szükséges…</string>
<string name="cameraPermissionRequired">A művelethez a kamera-hozzáférési engedély szükséges…</string>
<string name="height">Magasság:</string>
<string name="switchToFrontImage">Elölnézeti képre váltás</string>
<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="storageReadPermissionRequired">A művelethez tároló olvasási engedély szükséges…</string>
<string name="cameraPermissionRequired">A kamerához való hozzáférés engedélye szükséges ehhez a művelethez</string>
</resources>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
<string name="app_revision_url">https://github.com/CatimaLoyalty/Android/releases</string>
<string name="storeName">Nama</string>
<string name="note">Keterangan</string>
<string name="delete">Hapus</string>
@@ -13,6 +14,7 @@
<string name="action_add">Tambah</string>
<string name="action_search">Cari</string>
<string name="sort_by_name">Nama</string>
<string name="sort_by_balance">Saldo</string>
<string name="sort_by">Sortir dengan</string>
<string name="sort">Urut</string>
<string name="credits">Kredit</string>
@@ -34,6 +36,7 @@
<string name="all">Semua</string>
<string name="leaveWithoutSaveTitle">Keluar</string>
<string name="card">Kartu</string>
<string name="barcode">barcode</string>
<string name="chooseExpiryDate">Pilih masa berlaku</string>
<string name="noBarcodeFound">Barcode tidak ditemukan</string>
<string name="errorReadingImage">Tidak dapat membaca gambar</string>
@@ -107,6 +110,7 @@
<string name="app_license">Perangkat lunak bebas copyleft, berlisensi GPLv3+</string>
<string name="about_title_fmt">Tentang <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Versi: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Info Revisi: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="app_libraries">Pustaka pihak ketiga gratis: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_resources">Sumber daya pihak ketiga gratis: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="enterBarcodeInstructions">Masukkan ID, dan pilih jenis barcode di bawah ini, atau \"Tidak ada barcode\".</string>
@@ -115,6 +119,7 @@
<string name="starImage">Favorit</string>
<string name="settings_light_theme">Terang</string>
<string name="settings_dark_theme">Gelap</string>
<string name="settings_max_font_size_scale">Ukuran maksimal huruf</string>
<string name="settings_display_barcode_max_brightness">Terangkan tampilan barcode</string>
<string name="settings_keep_screen_on">Biarkan layar menyala</string>
<string name="settings_disable_lockscreen_while_viewing_card">Cegah kunci layar</string>
@@ -140,6 +145,7 @@
<string name="expiryDate">Tanggal masa berlaku</string>
<string name="never">Tidak pernah</string>
<string name="moveBarcodeToTopOfScreen">Pindah barcode ke bagian paling depan</string>
<string name="moveBarcodeToCenterOfScreen">Pusatkan barcode pada layar</string>
<string name="points">Poin</string>
<string name="parsingBalanceFailed"><xliff:g>%s</xliff:g> sepertinya bukan saldo yang valid.</string>
<string name="app_loyalty_card_keychain">Gantungan kunci kartu kesetiaan</string>
@@ -171,6 +177,7 @@
<string name="exportPassword">Tetapkan kata sandi untuk melindungi ekspor anda (opsional)</string>
<string name="failedGeneratingShareURL">Tidak dapat membuat alamat berbagi. Mohon laporkan ini.</string>
<string name="app_contributors">Pengembangan dibantu oleh: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="swipeToSwitchImages">Geser untuk beralih gambar, tahan untuk membuka gambar di aplikasi galeri</string>
<string name="reverse">…dalam urutan terbalik</string>
<string name="version_history">Riwayat Versi</string>
<string name="help_translate_this_app">Bantu terjemahkan aplikasi ini</string>
@@ -226,7 +233,9 @@
<item quantity="other"><xliff:g>%s</xliff:g> poin</item>
</plurals>
<string name="showMoreInfo">Tampilkan informasi</string>
<string name="hideMoreInfo">Sembunyikan informasi</string>
<string name="shortcutSelectCard">Pilih kartu</string>
<string name="set_scale">Atur skala</string>
<string name="include_if_asking_support">Jika anda ingin meminta bantuan, sertakan informasi berikut:</string>
<string name="duplicateCard">Duplikat</string>
<string name="archive">Arsip</string>
@@ -254,12 +263,4 @@
\n<xliff:g>%s</xliff:g></string>
<string name="anyDate">Kapan pun</string>
<string name="chooseValidFromDate">Pilih valid dari tanggal</string>
<string name="height">Tinggi:</string>
<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 didepan di galeri app</string>
<string name="openBackImageInGalleryApp">Buka gambar dibelakang di galeri app</string>
<string name="setBarcodeHeight">Atur tinggi kode batang</string>
<string name="donate">Donasi</string>
</resources>

View File

@@ -40,10 +40,12 @@
<string name="never">Aldrei</string>
<string name="currency">Mynt</string>
<string name="moveBarcodeToTopOfScreen">Færa strikamerkið að efst á skjánum</string>
<string name="moveBarcodeToCenterOfScreen">Miðju strikamerkið á skjánum</string>
<string name="errorReadingImage">Gat ekki lesið ímynd</string>
<string name="importOptionApplicationButton">Notaðu annan app</string>
<string name="about">Um</string>
<string name="settings">Stillingar</string>
<string name="settings_max_font_size_scale">Max. letrið</string>
<string name="settings_keep_screen_on">Halda á skjánum</string>
<string name="settings_disable_lockscreen_while_viewing_card">Að koma í veg fyrir að læsa skjánum</string>
<string name="editBarcode">Breyta strikamerkið</string>
@@ -74,6 +76,7 @@
<string name="leaveWithoutSaveConfirmation">Fara án þess að bjarga\?</string>
<string name="addFromImage">Veldu mynd frá gallerí</string>
<string name="card">Kort</string>
<string name="barcode">Strikamerkið</string>
<string name="expiryDate">Fyrningu</string>
<string name="moveDown">Fara neðar</string>
<string name="chooseExpiryDate">Velja rennur</string>

View File

@@ -47,6 +47,7 @@
<string name="app_license">Software libero con copyleft, licenza GPLv3+</string>
<string name="about_title_fmt">Informazioni su <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Versione: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Informazioni sulla revisione: <xliff:g id="app_revision_url"> %s </xliff:g></string>
<string name="selectBarcodeTitle">Seleziona codice a barre</string>
<string name="enterBarcodeInstructions">Inserisci il codice e scegli un tipo di codice a barre sotto oppure seleziona «Non c\'è un codice a barre».</string>
<string name="copy_to_clipboard_toast">Codice copiato negli appunti</string>
@@ -90,11 +91,13 @@
<string name="points">Punti</string>
<string name="currency">Valuta</string>
<string name="balance">Saldo</string>
<string name="moveBarcodeToCenterOfScreen">Centra il codice a barre sullo schermo</string>
<string name="moveBarcodeToTopOfScreen">Sposta il codice a barre in cima allo schermo</string>
<string name="chooseExpiryDate">Scegli data di scadenza</string>
<string name="never">Mai</string>
<string name="expiryDate">Data di scadenza</string>
<string name="editBarcode">Modifica il codice a barre</string>
<string name="barcode">Codice a barre</string>
<string name="card">Carta</string>
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Scaduta: <xliff:g>%s</xliff:g></string>
@@ -126,6 +129,7 @@
<string name="errorReadingImage">Impossibile leggere l\'immagine</string>
<string name="noBarcodeFound">Nessun codice a barre trovato</string>
<string name="addFromImage">Seleziona immagine dalla galleria</string>
<string name="settings_max_font_size_scale">Dimensione massima del carattere</string>
<string name="unsupportedBarcodeType">Questo tipo di codice a barre non può ancora essere visualizzato. Potrebbe essere supportato in una versione successiva dell\'applicazione.</string>
<string name="wrongValueForBarcodeType">Il valore non è valido per il tipo di codice a barre selezionato</string>
<string name="app_resources">Risorse libere di terze parti: <xliff:g id="app_resources_list"> %s </xliff:g></string>
@@ -184,8 +188,10 @@
<string name="app_contributors">Reso possibile da: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="noGroupCards">Questo gruppo è vuoto</string>
<string name="barcodeImageDescriptionWithType">Immagine del codice a barre in formato <xliff:g>%s</xliff:g></string>
<string name="swipeToSwitchImages">Scorri per cambiare immagine, tieni premuto per aprire l\'immagine nella galleria</string>
<string name="sort_by">Ordina per</string>
<string name="reverse">…in ordine inverso</string>
<string name="sort_by_balance">Saldo</string>
<string name="sort_by_expiry">Scadenza</string>
<string name="sort_by_most_recently_used">Usate più recentemente</string>
<string name="sort_by_name">Nome</string>
@@ -216,7 +222,9 @@
<string name="shortcutSelectCard">Seleziona una tessera</string>
<string name="options">Opzioni</string>
<string name="starred">Nei preferiti</string>
<string name="set_scale">Imposta la scala</string>
<string name="showMoreInfo">Mostra info</string>
<string name="hideMoreInfo">Nascondi info</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> punto</item>
<item quantity="many"><xliff:g>%s</xliff:g> punti</item>
@@ -267,12 +275,4 @@
<string name="chooseValidFromDate">Scegli la data di validità</string>
<string name="validFromSentence">Valido da: <xliff:g>%s</xliff:g></string>
<string name="anyDate">Qualsiasi data</string>
<string name="height">Altezza:</string>
<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 l\'immagine frontale nell\'app Galleria</string>
<string name="donate">Dona</string>
<string name="openBackImageInGalleryApp">Apri l\'immagine posteriore nell\'app Galleria</string>
<string name="setBarcodeHeight">Imposta l\'altezza del codice a barre</string>
</resources>

View File

@@ -25,11 +25,13 @@
<string name="balance">残高</string>
<string name="errorReadingImage">画像が読み込めませんでした</string>
<string name="noBarcodeFound">バーコードが見つかりませんでした</string>
<string name="moveBarcodeToCenterOfScreen">バーコードを画面の中央に配置</string>
<string name="moveBarcodeToTopOfScreen">バーコードを画面の上部に移動</string>
<string name="chooseExpiryDate">有効期限を選択</string>
<string name="never">なし</string>
<string name="expiryDate">有効期限</string>
<string name="editBarcode">バーコードの編集</string>
<string name="barcode">バーコード</string>
<string name="card">カード</string>
<string name="balanceSentence">残高: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">期限切れ: <xliff:g>%s</xliff:g></string>
@@ -56,6 +58,7 @@
<string name="settings_disable_lockscreen_while_viewing_card">バーコード表示中は画面をロックしない</string>
<string name="settings_keep_screen_on">バーコード表示中は画面を消灯しない</string>
<string name="settings_display_barcode_max_brightness">バーコード表示画面を明るくする</string>
<string name="settings_max_font_size_scale">最大のフォントサイズ</string>
<string name="settings_dark_theme">ダーク</string>
<string name="settings_light_theme">ライト</string>
<string name="settings_system_theme">システムに従う</string>
@@ -68,6 +71,7 @@
<string name="enterBarcodeInstructions">カード番号を入力し、バーコード形式を選択してください。</string>
<string name="selectBarcodeTitle">バーコード選択</string>
<string name="app_libraries">Libre third-party libraries: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_revision_fmt">Revision Info: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="debug_version_fmt">Version: <xliff:g id="version">%s</xliff:g></string>
<string name="about_title_fmt">About <xliff:g id="app_name">%s</xliff:g></string>
<string name="app_license">Copylefted libre software, licensed GPLv3+</string>
@@ -176,7 +180,9 @@
<string name="settings_system_locale">システムに従う</string>
<string name="settings_locale">言語</string>
<string name="noGroupCards">このグループにはカードがありません</string>
<string name="swipeToSwitchImages">画像を切り替えるには長押し、またはスワイプ</string>
<string name="sort_by">並び替え</string>
<string name="sort_by_balance">残高</string>
<string name="sort_by_expiry">期限</string>
<string name="sort_by_most_recently_used">最近使用したカード</string>
<string name="sort_by_name">名前</string>

View File

@@ -14,6 +14,7 @@
<string name="settings_category_title_ui">사용자 인터페이스</string>
<string name="settings">설정</string>
<string name="enterBarcodeInstructions">카드 ID를 입력하고 카드에서 사용하는 바코드 이미지를 선택하세요. 바코드를 사용하지 않는 경우 “이 카드는 바코드가 없음”을 선택하세요.</string>
<string name="app_revision_fmt">리비전 정보: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="selectBarcodeTitle">바코드 선택</string>
<string name="about">정보</string>
<string name="exporting">내보내는 중…</string>
@@ -70,6 +71,7 @@
<string name="noStoreError">매장을 입력하지 않음</string>
<string name="starImage">즐겨찾기 별</string>
<string name="settings_display_barcode_max_brightness">바코드를 표시할 때 화면 밝기 높이기</string>
<string name="barcode">바코드</string>
<string name="deleteConfirmation">정말 이 카드를 삭제하시겠습니까\?</string>
<string name="deleteTitle">카드 삭제</string>
<plurals name="deleteCardsTitle">

View File

@@ -73,6 +73,7 @@
<string name="settings_dark_theme">Donkel</string>
<string name="settings_disable_lockscreen_while_viewing_card">Bildschierm spären verhënneren</string>
<string name="settings_light_theme">Liicht</string>
<string name="settings_max_font_size_scale">Max. Schrëftgréisst</string>
<string name="settings_keep_screen_on">Hale Si op Bildschierm</string>
<string name="importSuccessful">Kartendaten anere sproochen</string>
<string name="exportSuccessful">Exportierte Kartendaten</string>

View File

@@ -27,6 +27,7 @@
<string name="app_license">Copylefted laisvoji programinė įranga, licencijuota GPLv3+</string>
<string name="about_title_fmt">Apie <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Versija: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Revizijos info: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="selectBarcodeTitle">Pasirinkite brūkšninį kodą</string>
<string name="copy_to_clipboard_toast">ID nukopijuota į iškarpinę</string>
<string name="card_ids_copied">Nukopijuoti ID</string>
@@ -48,6 +49,7 @@
<string name="importLoyaltyCardKeychain">Importuoti iš Loyalty Card Keychain</string>
<string name="app_loyalty_card_keychain">Lojalumo kortelės</string>
<string name="parsingBalanceFailed">Panašu, kad <xliff:g> %s </xliff:g> reikšmė nėra tinkama.</string>
<string name="moveBarcodeToCenterOfScreen">Centruoti brūkšninį kodą ekrane</string>
<string name="moveBarcodeToTopOfScreen">Perkelti brūkšninį kodą į ekrano viršų</string>
<string name="settings_display_barcode_max_brightness">Šviesinti brūkšninio kodo rodinį</string>
<string name="failedParsingImportUriError">Nepavyko iššifruoti importo URI</string>
@@ -97,6 +99,7 @@
<string name="never">Niekada</string>
<string name="expiryDate">Galiojimo data</string>
<string name="editBarcode">Redaguoti brūkšninį kodą</string>
<string name="barcode">Brūkšninis kodas</string>
<string name="card">Kortelė</string>
<string name="balanceSentence">Balansas: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Galiojimas baigėsi: <xliff:g>%s</xliff:g></string>
@@ -124,6 +127,7 @@
<string name="intent_import_card_from_url_share_text">Noriu pasidalyti su jumis kortele</string>
<string name="settings_disable_lockscreen_while_viewing_card">Neleisti užrakinti ekrano</string>
<string name="settings_keep_screen_on">Laikyti ekraną įjungtą</string>
<string name="settings_max_font_size_scale">Didžiausias šrifto dydis</string>
<string name="settings_dark_theme">Tamsi</string>
<string name="settings_light_theme">Šviesi</string>
<string name="settings_system_theme">Sistemos</string>
@@ -184,8 +188,10 @@
<string name="app_contributors">Tapo įmanoma su pagalba: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="noGroupCards">Grupėje yra tuščia</string>
<string name="barcodeImageDescriptionWithType"><xliff:g>%s</xliff:g> brūkšninio kodo vaizdas</string>
<string name="swipeToSwitchImages">Braukite, kad perjungtumėte vaizdus, palaikykite, kad atvertumėte vaizdą galerijos programėlėje</string>
<string name="sort_by">Rikiuoti pagal</string>
<string name="reverse">…atvirkštine tvarka</string>
<string name="sort_by_balance">Balansas</string>
<string name="sort_by_expiry">Galiojimo pabaiga</string>
<string name="sort_by_most_recently_used">Vėliausiai naudota</string>
<string name="sort_by_name">Pavadinimas</string>
@@ -228,6 +234,8 @@
<item quantity="few"><xliff:g>%1$d</xliff:g> kortelės ( archyvuotos)<xliff:g id="archivedCount">%2$d</xliff:g></item>
<item quantity="other"><xliff:g>%1$d</xliff:g> kortelių ( archyvuotų)<xliff:g id="archivedCount">%2$d</xliff:g></item>
</plurals>
<string name="set_scale">Nustatyti mastelį</string>
<string name="hideMoreInfo">Slėpti informaciją</string>
<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>
@@ -263,16 +271,4 @@
<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>
<string name="chooseValidFromDate">Pasirinkite datą, galiojančią nuo</string>
<string name="validFromSentence">Galioja nuo: <xliff:g>%s</xliff:g></string>
<string name="switchToBackImage">Perjungti į galinį vaizdą</string>
<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>
</resources>

View File

@@ -2,7 +2,7 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
<string name="action_search">Meklēt</string>
<string name="action_add">Pievienot</string>
<string name="noGiftCards">Noklikšķiniet uz pogas + plus, lai pievienotu karti, vai vispirms importējiet no ⋮ izvēlnes.</string>
<string name="noGiftCards">Noklikšķiniet uz pogas + plus, lai pievienotu karti, vai vispirms importējiet dažus no ⋮ izvēlnes.</string>
<string name="noMatchingGiftCards">Nav rezultātu. Mēģiniet mainīt meklējamo tekstu.</string>
<string name="storeName">Nosaukums</string>
<string name="note">Piezīme</string>
@@ -16,6 +16,7 @@
<string name="edit">Rediģēt</string>
<string name="delete">Dzēst</string>
<string name="moveBarcodeToTopOfScreen">Pārvietojiet svītrkodu uz ekrāna augšdaļu</string>
<string name="moveBarcodeToCenterOfScreen">Centrējiet svītrkodu uz ekrāna</string>
<string name="errorReadingImage">Nevarēja nolasīt attēlu</string>
<string name="balance">Bilance</string>
<string name="noBarcodeFound">Svītrkods netika atrasts</string>
@@ -66,6 +67,7 @@
<string name="settings_system_theme">Sistēmas</string>
<string name="settings_light_theme">Gaiša</string>
<string name="settings_dark_theme">Tumša</string>
<string name="settings_max_font_size_scale">Maksimālais burtu lielums</string>
<string name="settings_display_barcode_max_brightness">Izgaismot svītrkoda skatu</string>
<string name="settings_keep_screen_on">Turēt ekrānu ieslēgtu</string>
<string name="settings_disable_lockscreen_while_viewing_card">Neļaut ekrānam aizslēgties</string>
@@ -83,6 +85,7 @@
<string name="leaveWithoutSaveConfirmation">Iziet nesaglabājot\?</string>
<string name="addFromImage">Izvēlēties attēlu no galerijas</string>
<string name="card">Karte</string>
<string name="barcode">Svītrkods</string>
<string name="expiryDate">Derīguma termiņš</string>
<string name="never">Nekad</string>
<string name="chooseExpiryDate">Izvēlieties derīguma termiņu</string>
@@ -92,6 +95,7 @@
<string name="reverse">...apgrieztā secībā</string>
<string name="credits">Pateicības</string>
<string name="shortcutSelectCard">Izvēlieties karti</string>
<string name="set_scale">Iestatiet mērogu</string>
<string name="duplicateCard">Dublēt</string>
<string name="archive">Arhivēt</string>
<string name="translate_platform">vietnē Weblate</string>
@@ -105,6 +109,7 @@
</plurals>
<string name="noCardIdError">Numurs nav ievadīts</string>
<string name="about_title_fmt">Par <xliff:g id="app_name">%s</xliff:g></string>
<string name="app_revision_fmt">Versijas pārskats: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Derīguma termiņš beidzās: <xliff:g>%s</xliff:g></string>
<string name="action_hide_details">Slēpt detaļas</string>
<string name="action_show_details">Rādīt detalizēti</string>
@@ -138,6 +143,7 @@
<string name="failedGeneratingShareURL">Nevarēja izveidot koplietojamu URL. Lūdzu, ziņojiet par šo kļūdu.</string>
<string name="turn_flashlight_off">Izslēgt zibspuldzi</string>
<string name="app_contributors">To padarīja iespējamu: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="sort_by_balance">Bilance</string>
<string name="version_history">Versiju vēsture</string>
<string name="sort_by">Kārtot pēc</string>
<string name="help_translate_this_app">Palīdziet tulkot šo lietotni</string>
@@ -227,6 +233,8 @@
<string name="settings_grey_theme">Pelēka</string>
<string name="sort">Kārtot</string>
<string name="showMoreInfo">Rādīt informāciju</string>
<string name="hideMoreInfo">Slēpt informāciju</string>
<string name="swipeToSwitchImages">Velciet, lai pārslēgtu attēlus; spiediet un turiet lai atvērtu attēlu galerijas lietotnē</string>
<string name="sort_by_most_recently_used">Nesen lietotās</string>
<string name="unarchive">Atarhivēt</string>
<string name="archived">Karte arhivēta</string>
@@ -248,14 +256,4 @@
</plurals>
<string name="failedToOpenUrl">Vispirms nepieciešams uzstādīt interneta pārlūku</string>
<string name="welcome">Laipni lūgti Catima</string>
<string name="cameraPermissionRequired">Ir nepieciešama pieeja kamerai lai veiktu šo darbību</string>
<string name="noCameraPermissionDirectToSystemSetting">Lai skanētu svītrkods, Catima ir nepieciešama pieeja jūsu kamerai. Nospied šeit lai nomainītu atļaujas iestatījumus.</string>
<string name="cameraPermissionDeniedTitle">Nevar pievienieties kamerai</string>
<string name="updateBalance">Atjaunināta bilance</string>
<string name="updateBalanceTitle">Cik daudz Tu iztērēji\?</string>
<string name="updateBalanceHint">Ievadi summu</string>
<string name="currentBalanceSentence">Šābrīža bilance: <xliff:g>%s</xliff:g></string>
<string name="newBalanceSentence">Jauna bilance: <xliff:g>%s</xliff:g></string>
<string name="storageReadPermissionRequired">Atļauja lasīt noliktavu ir nepieciešama šai darbībai…</string>
<string name="importCards">Importēt kartes</string>
</resources>
</resources>

View File

@@ -44,6 +44,7 @@
<string name="app_license">Gemenhetslig fri programvare, lisensiert GPLv3+</string>
<string name="about_title_fmt">Om <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Versjon: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Utgivelsesinfo: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="selectBarcodeTitle">Velg strekkode</string>
<string name="enterBarcodeInstructions">Skriv inn kortets ID, og enten velg strekkodetypen nedenfor, eller «Det er ingen strekkode».</string>
<string name="copy_to_clipboard_toast">ID kopiert til utklippstavle</string>
@@ -86,12 +87,14 @@
</plurals>
<string name="groupsList">Grupper: <xliff:g>%s</xliff:g></string>
<string name="editBarcode">Rediger strekkode</string>
<string name="barcode">Strekkode</string>
<string name="card">Kort</string>
<string name="expiryStateSentence">Utløper: <xliff:g>%s</xliff:g></string>
<string name="chooseExpiryDate">Velg utløpsdato</string>
<string name="never">Aldri</string>
<string name="expiryDate">Utløpsdato</string>
<string name="expiryStateSentenceExpired">Utløpt: <xliff:g>%s</xliff:g></string>
<string name="moveBarcodeToCenterOfScreen">Sentrer strekkoden på skjermen</string>
<string name="moveBarcodeToTopOfScreen">Flytt strekkoden til toppen av skjermen</string>
<string name="parsingBalanceFailed"><xliff:g>%s</xliff:g> ser ikke ut til å være en gyldig saldo.</string>
<string name="points">Poeng</string>
@@ -124,6 +127,7 @@
<string name="importLoyaltyCardKeychain">Importer fra Kundekortknippe</string>
<string name="importFidmeMessage">Velg din <i>fidme.export-request-xxxxx.zip</i>-eksport fra FidMe å importere, for så å velge strekkodetypene manuelt etterpå-
\nOpprett den i din FidMe-profil ved å velge «Databeskyttelse», for så å trykke «Pakk ut dataen min» først.</string>
<string name="settings_max_font_size_scale">Maks. skriftstørrelse</string>
<string name="wrongValueForBarcodeType">Verdien er ikke gyldig for valgt strekkodetype</string>
<string name="intent_import_card_from_url_share_multiple_text">Jeg vil dele noen kort med deg</string>
<string name="copy_to_clipboard_multiple_toast">ID-er ble kopiert til utklippstavle</string>
@@ -178,8 +182,10 @@
<string name="settings_theme_color">Draktfarge</string>
<string name="noGroupCards">Denne gruppen er tom</string>
<string name="barcodeImageDescriptionWithType">Bilde av <xliff:g>%s</xliff:g>-strekkode</string>
<string name="swipeToSwitchImages">Dra for å bytte bilder, hold for å åpne et bilde i galleriet.</string>
<string name="sort_by">Sortering</string>
<string name="reverse">…i omvendt rekkefølge</string>
<string name="sort_by_balance">Saldo</string>
<string name="sort_by_expiry">Utløp</string>
<string name="sort_by_most_recently_used">Nyligst brukt</string>
<string name="sort_by_name">Navn</string>
@@ -212,7 +218,9 @@
<string name="translate_platform">på Weblate</string>
<string name="options">Alternativer</string>
<string name="starred">Stjernemerket</string>
<string name="set_scale">Sett skalering</string>
<string name="showMoreInfo">Vis info</string>
<string name="hideMoreInfo">Skjul info</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> poeng</item>
<item quantity="other"><xliff:g>%s</xliff:g> poeng</item>

View File

@@ -27,18 +27,10 @@
<item name="colorOnSurfaceInverse">@color/md_theme_dark_inverseOnSurface</item>
<item name="colorSurfaceInverse">@color/md_theme_dark_inverseSurface</item>
<item name="colorPrimaryInverse">@color/md_theme_dark_primaryInverse</item>
<item name="materialAlertDialogTheme">@style/ThemeOverlay.App.MaterialAlertDialog.Monet</item>
<item name="alertDialogTheme">@style/ThemeOverlay.App.MaterialAlertDialog.Monet</item>
<item name="windowActionModeOverlay">true</item>
</style>
<style name="ThemeOverlay.App.MaterialAlertDialog.Monet" parent="ThemeOverlay.Material3.MaterialAlertDialog">
<item name="alertDialogStyle">@style/MaterialAlertDialog.Material3</item>
<item name="dialogCornerRadius">28dp</item>
<item name="android:background">@drawable/dialog_bg_monet</item>
</style>
<!-- note that this is not used directly, these are used to patch the active theme runtime with
theme.applyStyle
-->

View File

@@ -49,6 +49,7 @@
<string name="app_license">Vrije software, uitgebracht onder de GPLv3+-licentie</string>
<string name="about_title_fmt">Over <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Versie: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Versie-informatie: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="selectBarcodeTitle">Barcode toevoegen</string>
<string name="enterBarcodeInstructions">Voer de kaart-id in en kies daarna het soort barcode of druk op “Deze kaart heeft geen barcode”.</string>
<string name="copy_to_clipboard_toast">De kaart-id is gekopieerd naar het klembord</string>
@@ -86,12 +87,14 @@
</plurals>
<string name="groupsList">Groepen: <xliff:g>%s</xliff:g></string>
<string name="editBarcode">Barcode aanpassen</string>
<string name="barcode">Barcode</string>
<string name="card">Kaart</string>
<string name="chooseExpiryDate">Kies een vervaldatum</string>
<string name="never">Nooit</string>
<string name="expiryDate">Vervaldatum</string>
<string name="expiryStateSentence">Vervalt op <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Verlopen: <xliff:g>%s</xliff:g></string>
<string name="moveBarcodeToCenterOfScreen">Barcode verplaatsen naar midden van scherm</string>
<string name="moveBarcodeToTopOfScreen">Barcode verplaatsen naar bovenkant van scherm</string>
<string name="parsingBalanceFailed"><xliff:g>%s</xliff:g> lijkt geen geldig saldo te zijn.</string>
<string name="points">Aantal punten</string>
@@ -125,6 +128,7 @@
<string name="setBarcodeId">Barcodewaarde instellen</string>
<string name="sameAsCardId">Gelijk aan kaart-id</string>
<string name="barcodeId">Barcodewaarde</string>
<string name="settings_max_font_size_scale">Max. tekstgrootte</string>
<string name="unsupportedBarcodeType">Dit type barcode kan nog niet worden getoond - we hopen hiervoor in een nieuwere versie ondersteuning toe te voegen.</string>
<string name="wrongValueForBarcodeType">Deze waarde komt niet overeen met het gekozen barcodetype</string>
<string name="app_resources">Vrije externe bronnen: <xliff:g id="app_resources_list">%s</xliff:g></string>
@@ -180,8 +184,10 @@
<string name="app_contributors">Mede mogelijk gemaakt door: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="noGroupCards">Deze groep bevat geen kaarten</string>
<string name="barcodeImageDescriptionWithType">Afbeelding van barcode <xliff:g>%s</xliff:g></string>
<string name="swipeToSwitchImages">Veeg om te bladeren; houd lang ingedrukt om te openen in de galerij-app</string>
<string name="sort_by">Sorteren op</string>
<string name="reverse">…in omgekeerde volgorde</string>
<string name="sort_by_balance">Op saldo</string>
<string name="sort_by_expiry">Op vervaldatum</string>
<string name="sort_by_most_recently_used">Op onlangs gebruikt</string>
<string name="sort_by_name">Op naam</string>
@@ -213,6 +219,8 @@
<string name="options">Opties</string>
<string name="showMoreInfo">Informatie tonen</string>
<string name="starred">Favoriet</string>
<string name="hideMoreInfo">Informatie verbergen</string>
<string name="set_scale">Schaal instellen</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> punt</item>
<item quantity="other"><xliff:g>%s</xliff:g> punten</item>
@@ -260,12 +268,4 @@
<string name="validFromDate">Geldig vanaf</string>
<string name="validFromSentence">Geldig vanaf: <xliff:g>%s</xliff:g></string>
<string name="chooseValidFromDate">Kies een geldige vanaf-datum</string>
<string name="setBarcodeHeight">Barcodehoogte instellen</string>
<string name="height">Hoogte:</string>
<string name="switchToFrontImage">Voorzijde tonen</string>
<string name="switchToBackImage">Achterzijde tonen</string>
<string name="switchToBarcode">Barcode tonen</string>
<string name="openFrontImageInGalleryApp">Voorzijde openen in galerij-app</string>
<string name="openBackImageInGalleryApp">Achterzijde openen in galerij-app</string>
<string name="donate">Doneren</string>
</resources>

View File

@@ -51,7 +51,7 @@
<string name="settings">Paramètres</string>
<string name="settings_category_title_ui">Interfàcia utilizaire</string>
<string name="settings_theme">Tèma</string>
<string name="noGiftCards">Clicatz lo boton + per apondre una carta o nimportar una menú ⋮</string>
<string name="noGiftCards">Clicatz lo boton + per apondre una carta o utilizatz lo menú ⋮ per nimportar una.</string>
<string name="noMatchingGiftCards">Cap de resultat. Ensajatz de modificar vòstra recèrca.</string>
<string name="settings_light_theme">Clar</string>
<string name="settings_dark_theme">Escur</string>
@@ -63,7 +63,7 @@
<string name="addFromImage">Causir a la galariá</string>
<string name="groups">Grops</string>
<string name="groupsList">Grops: <xliff:g>%s</xliff:g></string>
<string name="settings_max_font_size_scale">Talha max. de la poliça</string>
<string name="settings_theme_color">Color del tèma</string>
<string name="settings_locale">Lenga</string>
<string name="noGiftCardsGroup">Creatz de cartas puèi ligatz-las al grop aicí.</string>
</resources>

View File

@@ -47,6 +47,7 @@
<string name="app_license">Wolne oprogramowanie typu copyleft, na licencji GPLv3+</string>
<string name="about_title_fmt">O <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Wersja: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Informacje o wydaniu: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="selectBarcodeTitle">Wybierz kod kreskowy</string>
<string name="enterBarcodeInstructions">Wprowadź ID, a następnie wybierz typ kodu kreskowego, którego chcesz użyć lub wybierz „Bez kodu kreskowego”.</string>
<string name="copy_to_clipboard_toast">Skopiowano ID do schowka</string>
@@ -139,11 +140,13 @@
<string name="balance">Saldo</string>
<string name="errorReadingImage">Nie udało się odczytać zdjęcia</string>
<string name="noBarcodeFound">Nie znaleziono kodu kreskowego</string>
<string name="moveBarcodeToCenterOfScreen">Wyśrodkuj kod kreskowy na ekranie</string>
<string name="moveBarcodeToTopOfScreen">Przenieś kod kreskowy na górę ekranu</string>
<string name="chooseExpiryDate">Wybierz datę wygaśnięcia</string>
<string name="never">Nigdy</string>
<string name="expiryDate">Data wygaśnięcia</string>
<string name="editBarcode">Edytuj kod kreskowy</string>
<string name="barcode">Kod kreskowy</string>
<string name="card">Karta</string>
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Wygasło: <xliff:g>%s</xliff:g></string>
@@ -165,6 +168,7 @@
<string name="noGroupCards">Ta grupa jest pusta</string>
<string name="settings_disable_lockscreen_while_viewing_card">Zapobiegaj wyłączeniu ekranu</string>
<string name="settings_keep_screen_on">Nie wygaszaj ekranu</string>
<string name="settings_max_font_size_scale">Maks. rozmiar czcionki</string>
<string name="app_resources">Otwarte zewnętrzne zasoby: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_libraries">Otwarte zewnętrzne biblioteki: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Wszelkie prawa zastrzeżone © 2019<xliff:g>%d</xliff:g> Sylvia van Os</string>
@@ -191,19 +195,21 @@
<string name="action_show_details">Pokaż szczegóły</string>
<string name="action_hide_details">Ukryj szczegóły</string>
<string name="sort_by_name">Nazwa</string>
<string name="sort_by_most_recently_used">Ostatnio używane</string>
<string name="sort_by_most_recently_used">Ostatnio użyte</string>
<string name="sort_by_expiry">Data wygaśnięcia</string>
<string name="sort_by_balance">Balans</string>
<string name="sort_by">Sortuj według</string>
<string name="credits">Podziękowania</string>
<string name="help_translate_this_app">Pomóż przetłumaczyć tę aplikację</string>
<string name="help_translate_this_app">Pomóż przetłumaczyć tą aplikację</string>
<string name="source_repository">Repozytorium Źródłowe</string>
<string name="report_error">Zgłoś Błąd</string>
<string name="setIcon">Ustaw ikonę</string>
<string name="on_github">na GitHub\'ie</string>
<string name="swipeToSwitchImages">Przeciągnij aby zmienić obraz, przytrzymaj aby otworzyć obraz w galerii</string>
<string name="selectColor">Wybierz kolor</string>
<string name="version_history">Historia wersji</string>
<string name="version_history">Historia Wersji</string>
<string name="and_data_usage">i wykorzystanie danych</string>
<string name="rate_this_app">Oceń tę aplikację</string>
<string name="rate_this_app">Oceń tą aplikację</string>
<string name="license">Licencja</string>
<string name="on_google_play">w Google Play</string>
<string name="noGiftCardsGroup">Stwórz karty i przypisz je do grup w tym miejscu.</string>
@@ -228,20 +234,22 @@
</plurals>
<string name="include_if_asking_support">Jeśli chcesz poprosić o pomoc, podaj następujące informacje:</string>
<string name="settings_oled_dark">Całkowicie czarne tło dla ciemnego motywu</string>
<string name="hideMoreInfo">Ukryj informacje</string>
<string name="settings_card_orientation">Orientacja kodu kreskowego</string>
<string name="settings_follow_system_orientation">Śledź orientację systemową</string>
<string name="set_scale">Ustaw skalę</string>
<string name="duplicateCard">Duplikuj</string>
<string name="starred">Oznaczone gwiazdką</string>
<string name="settings_landscape_orientation">Poziomowy</string>
<string name="settings_lock_on_opening_orientation">Blokuj do ustawionej orientacji przy otwieraniu karty</string>
<string name="settings_portrait_orientation">Portretowy</string>
<string name="archive">Archiwum</string>
<string name="unarchive">Cofnij archiwizację</string>
<string name="archived">Karta zarchiwizowana</string>
<string name="unarchived">Karta niezarchiwizowana</string>
<string name="archive">Archiwizować</string>
<string name="unarchive">Odarchiwizować</string>
<string name="archived">Karta archiwizowana</string>
<string name="unarchived">Karta odarchiwizowana</string>
<string name="archiveList">Archiwum</string>
<string name="noUnarchivedCardsMessage">Nie istnieją żadne niezarchiwizowane karty</string>
<string name="failedLaunchingPhotoPicker">Nie można odnaleźć aplikacji galeria</string>
<string name="failedLaunchingPhotoPicker">Nie można odnaleźć aplikacji galerii</string>
<string name="previousCard">Poprzedni</string>
<string name="nextCard">Następny</string>
<plurals name="groupCardCountWithArchived">
@@ -274,11 +282,4 @@
<string name="chooseValidFromDate">Wybierz datę rozpoczęcia ważności</string>
<string name="anyDate">Dowolna data</string>
<string name="validFromSentence">Ważny od: <xliff:g>%s</xliff:g></string>
<string name="height">Wysokość:</string>
<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 aplikacji galeria</string>
<string name="setBarcodeHeight">Ustaw wysokość kodu kreskowego</string>
<string name="donate">Darowizna</string>
</resources>
</resources>

View File

@@ -62,6 +62,7 @@
<string name="settings_system_theme">Sistema</string>
<string name="settings_light_theme">Claro</string>
<string name="settings_dark_theme">Escuro</string>
<string name="settings_max_font_size_scale">Tamanho máximo da fonte</string>
<string name="selectBarcodeTitle">Selecionar código de barras</string>
<string name="enterBarcodeInstructions">Introduza o identificador e depois escolha o tipo de código de barras abaixo ou \"Sem código de barras\".</string>
<string name="copy_to_clipboard_toast">Identificador copiado para a área de transferência</string>
@@ -82,6 +83,7 @@
<string name="exporting">A exportar…</string>
<string name="settings_sky_blue_theme">Azul céu</string>
<string name="report_error">Reportar erro</string>
<string name="barcode">Código de barras</string>
<string name="chooseImportType">Importar dados de</string>
<string name="card">Cartão</string>
<string name="expiryStateSentence">Expiram: <xliff:g>%s</xliff:g></string>
@@ -122,6 +124,7 @@
\ndireitos de autor © 20162020 Branden Archer</string>
<string name="about_title_fmt">Sobre o <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Versão: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Informação da revisão: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Expirados: <xliff:g>%s</xliff:g></string>
<string name="leaveWithoutSaveConfirmation">Sair sem guardar\?</string>
<string name="addManually">Introduzir manualmente o identificador</string>
@@ -133,6 +136,7 @@
<string name="never">Nunca</string>
<string name="chooseExpiryDate">Escolher validade</string>
<string name="moveBarcodeToTopOfScreen">Mover o código de barras para o topo do ecrã</string>
<string name="moveBarcodeToCenterOfScreen">Centrar o código de barras no ecrã</string>
<string name="noBarcodeFound">Não foi encontrado nenhum código de barras</string>
<string name="errorReadingImage">Não foi possível ler a imagem</string>
<string name="balance">Saldo</string>
@@ -173,9 +177,11 @@
<string name="settings_blue_theme">Azul</string>
<string name="app_contributors">Tornado possível por: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="sort">Ordenar</string>
<string name="swipeToSwitchImages">Deslize para mudar as imagens, toque prolongadamente para abrir na aplicação da galeria</string>
<string name="sort_by_name">Nome</string>
<string name="sort_by_most_recently_used">Mais usados recentemente</string>
<string name="sort_by_expiry">Validade</string>
<string name="sort_by_balance">Saldo</string>
<string name="reverse">…na ordem inversa</string>
<string name="sort_by">Ordenar por</string>
<string name="version_history">Histórico de versões</string>
@@ -215,7 +221,9 @@
<string name="shortcutSelectCard">Selecione um cartão</string>
<string name="translate_platform">no Weblate</string>
<string name="starred">Estrela</string>
<string name="set_scale">Escala de set</string>
<string name="showMoreInfo">Mostrar info</string>
<string name="hideMoreInfo">Ocultar informação</string>
<string name="options">Opções</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> ponto</item>
@@ -267,12 +275,4 @@
<string name="anyDate">Qualquer data</string>
<string name="chooseValidFromDate">Escolha uma data desde válida</string>
<string name="validFromSentence">Válido desde: <xliff:g>%s</xliff:g></string>
<string name="switchToFrontImage">Mudar para imagem frontal</string>
<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">Abra a imagem frontal no aplicativo da galeria</string>
<string name="openBackImageInGalleryApp">Abra a imagem traseira no aplicativo da galeria</string>
<string name="setBarcodeHeight">Definir altura do código de barras</string>
<string name="donate">Doar</string>
</resources>
</resources>

View File

@@ -57,6 +57,7 @@
<string name="settings_light_theme">Lumină</string>
<string name="settings_dark_theme">Întuneric</string>
<string name="noBarcodeFound">Nu a fost găsit niciun cod de bare</string>
<string name="settings_max_font_size_scale">Mărimea maximă a fontului</string>
<string name="settings_display_barcode_max_brightness">Luminați vizualizarea codurilor de bare</string>
<string name="settings_keep_screen_on">Păstrați ecranul pornit</string>
<string name="settings_disable_lockscreen_while_viewing_card">Evitați ecranul de blocare</string>
@@ -68,9 +69,11 @@
<string name="failedOpeningFileManager">Instalați mai întâi un manager de fișiere.</string>
<string name="leaveWithoutSaveTitle">Ieșire</string>
<string name="addManually">Introduceți manual ID-ul cardului</string>
<string name="barcode">Cod de bare</string>
<string name="currency">Monedă</string>
<string name="editBarcode">Editarea codului de bare</string>
<string name="chooseExpiryDate">Alegeți data de expirare</string>
<string name="moveBarcodeToCenterOfScreen">Centrați codul de bare pe ecran</string>
<string name="copy_to_clipboard_toast">ID-ul cardului copiat în clipboard</string>
<string name="noStoreError">Nici un nume introdus</string>
<string name="selectBarcodeTitle">Selectare cod de bare</string>

View File

@@ -49,6 +49,7 @@
<string name="app_license">Авторское лево свободного программного обеспечения, лицензия GPLv3+</string>
<string name="about_title_fmt">О приложении <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Версия: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Информация о версиях: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="selectBarcodeTitle">Выбор штрих-кода</string>
<string name="enterBarcodeInstructions">Введите номер и выберите тип штрих-кода (или выберите \"Нет штрих-кода\").</string>
<string name="copy_to_clipboard_toast">Номер скопирован в буфер обмена</string>
@@ -91,11 +92,13 @@
<string name="chooseImportType">Откуда импортировать данные</string>
<string name="balance">Баланс</string>
<string name="moveBarcodeToTopOfScreen">Переместить штрих-код в верхнюю часть экрана</string>
<string name="moveBarcodeToCenterOfScreen">Центрировать штрих-код на экране</string>
<string name="currency">Валюта</string>
<string name="chooseExpiryDate">Выбор срока действия</string>
<string name="never">Никогда</string>
<string name="expiryDate">Срок действия</string>
<string name="editBarcode">Изменить штрих-код</string>
<string name="barcode">Штрих-код</string>
<string name="card">Карта</string>
<string name="groupsList">Группы: <xliff:g>%s</xliff:g></string>
<string name="moveDown">Переместить ниже</string>
@@ -127,6 +130,7 @@
<string name="setBarcodeId">Указать значение</string>
<string name="sameAsCardId">Как номер</string>
<string name="barcodeId">Значение штрих-кода</string>
<string name="settings_max_font_size_scale">Максимальный размер шрифта</string>
<string name="unsupportedBarcodeType">В настоящее время данный тип штрих-кодов не отображается. Его поддержка может быть добавлена в следующих версиях приложения.</string>
<string name="wrongValueForBarcodeType">Недопустимое значение для выбранного типа штрих-кода</string>
<string name="app_resources">Свободные сторонние ресурсы: <xliff:g id="app_resources_list">%s</xliff:g></string>
@@ -188,9 +192,11 @@
<string name="app_contributors">Создано при поддержке: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="noGroupCards">Группа пуста</string>
<string name="barcodeImageDescriptionWithType">Изображение штрих-кода <xliff:g>%s</xliff:g></string>
<string name="swipeToSwitchImages">Смахивание переключает изображения, долгое нажатие открывает в приложении галереи</string>
<string name="sort_by_expiry">Срок действия</string>
<string name="sort_by">Сортировать по</string>
<string name="reverse">…в обратном порядке</string>
<string name="sort_by_balance">Баланс</string>
<string name="sort_by_most_recently_used">Частота использования</string>
<string name="sort_by_name">Название</string>
<string name="sort">Сортировка</string>
@@ -219,6 +225,8 @@
<string name="translate_platform">на Weblate</string>
<string name="shortcutSelectCard">Выбор карты</string>
<string name="options">Параметры</string>
<string name="set_scale">Выбор масштаба</string>
<string name="hideMoreInfo">Скрыть данные</string>
<string name="showMoreInfo">Показать данные</string>
<string name="starred">Избранное</string>
<plurals name="balancePoints">
@@ -274,12 +282,4 @@
<string name="anyDate">Любая дата</string>
<string name="chooseValidFromDate">Выбор даты действия</string>
<string name="validFromSentence">Действует с: <xliff:g>%s</xliff:g></string>
<string name="setBarcodeHeight">Указать высоту штрих-кода</string>
<string name="height">Высота:</string>
<string name="switchToBarcode">Переключить на штрих-код</string>
<string name="switchToFrontImage">Переключить на лицевую сторону</string>
<string name="switchToBackImage">Переключить на заднюю сторону</string>
<string name="openFrontImageInGalleryApp">Открыть лицевое изображение в приложении галереи</string>
<string name="openBackImageInGalleryApp">Открыть заднее изображение в приложении галереи</string>
<string name="donate">Пожертвовать</string>
</resources>

View File

@@ -42,6 +42,7 @@
<string name="app_license">Copyleftovaný slobodný softvér s licenciou GPLv3+</string>
<string name="about_title_fmt">O <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Verzia: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Informácia o revízii: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="selectBarcodeTitle">Vyberte čiarový kód</string>
<string name="copy_to_clipboard_toast">ID skopírované do schránky</string>
<string name="thumbnailDescription">Miniatúra</string>
@@ -62,6 +63,7 @@
<string name="balance">Vyváženie</string>
<string name="errorReadingImage">Obrázok sa nepodarilo prečítať</string>
<string name="noBarcodeFound">Nenašiel sa žiadny čiarový kód</string>
<string name="moveBarcodeToCenterOfScreen">Vycentrovanie čiarového kódu na obrazovke</string>
<string name="moveBarcodeToTopOfScreen">Presun čiarového kódu do hornej časti obrazovky</string>
<string name="chooseExpiryDate">Zvoľte dátum skončenia platnosti</string>
<string name="never">Nikdy</string>
@@ -83,6 +85,7 @@
<string name="intent_import_card_from_url_share_text">Chcem sa s vami podeliť o pohľadnicu</string>
<string name="settings_disable_lockscreen_while_viewing_card">Zabrániť uzamknutiu obrazovky</string>
<string name="settings_keep_screen_on">Nechajte obrazovku zapnutú</string>
<string name="settings_max_font_size_scale">Maximálna veľkosť písma</string>
<string name="card_ids_copied">Skopírované ID</string>
<string name="unstar">Odstrániť z obľúbených</string>
<string name="settings_dark_theme">Tmavé</string>
@@ -137,6 +140,7 @@
<string name="turn_flashlight_on">Zapnúť svetlo</string>
<string name="sort_by_name">Názov</string>
<string name="sort_by_most_recently_used">Naposledy použité</string>
<string name="sort_by_balance">Zostatok</string>
<string name="reverse">…v obrátenom poradí</string>
<string name="on_github">na GitHube</string>
<string name="sort_by_expiry">Koniec platnosti</string>
@@ -147,6 +151,7 @@
<string name="report_error">Nahlásiť chybu</string>
<string name="translate_platform">na Weblate</string>
<string name="showMoreInfo">Zobraziť podrobnosti</string>
<string name="hideMoreInfo">Skryť podrobnosti</string>
<string name="action_hide_details">Skryť detaily</string>
<string name="yes">Áno</string>
<string name="importStocard">Import z aplikácie Stocard</string>
@@ -177,6 +182,7 @@
\ncopyright © 20162020 Branden Archer</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019<xliff:g>%d</xliff:g> Sylvia van Os</string>
<string name="expiryDate">Platnosť</string>
<string name="barcode">Čiarový kód</string>
<string name="editBarcode">Upraviť čiarový kód</string>
<string name="privacy_policy">Zásady ochrany osobných údajov</string>
<string name="importVoucherVault">Import z Voucher Vault</string>
@@ -209,6 +215,7 @@
<string name="and_data_usage">a využitie dát</string>
<string name="options">Možnosti</string>
<string name="starred">S hviezdičkou</string>
<string name="set_scale">Nastaviť mierku</string>
<string name="duplicateCard">Duplikovať</string>
<string name="archive">Archivovať</string>
<string name="unarchive">Vrátiť z archivu</string>
@@ -249,6 +256,7 @@
<item quantity="few">Zobraziť archív (<xliff:g>%1$d</xliff:g> karty)</item>
<item quantity="other">Zobraziť archív (<xliff:g>%1$d</xliff:g> kariet)</item>
</plurals>
<string name="swipeToSwitchImages">Potiahnutím prstom prepínate obrázky, podržaním otvoríte obrázok v aplikácii galéria</string>
<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>

View File

@@ -42,6 +42,7 @@
<string name="app_license">Odprtokodna programska oprema, licencirana skladno s GPL3+</string>
<string name="about_title_fmt">Več o <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Verzija: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Informacije o popravkih: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="selectBarcodeTitle">Izberite črtno kodo</string>
<string name="copy_to_clipboard_toast">ID številka je kopirana v odložišče</string>
<string name="thumbnailDescription">Sličica</string>
@@ -70,6 +71,7 @@
<string name="settings_disable_lockscreen_while_viewing_card">Prepreči zaklepanje zaslona</string>
<string name="settings_keep_screen_on">Ohranite zaslon vklopljen</string>
<string name="enterBarcodeInstructions">Vnesite ID kartice in spodaj izberite vrsto črtne kode ali izbiro \"Ta kartica nima črtne kode\".</string>
<string name="settings_max_font_size_scale">Največja velikost pisave</string>
<string name="settings_dark_theme">Temno</string>
<string name="settings_light_theme">Svetlo</string>
<string name="settings_system_theme">Sistem</string>
@@ -104,8 +106,10 @@
<string name="settings_system_locale">Sistem</string>
<string name="settings_locale">Jezik</string>
<string name="barcodeImageDescriptionWithType">Slika <xliff:g>%s</xliff:g> črtna koda</string>
<string name="swipeToSwitchImages">Povlecite za zamenjavo slike ali dolgo pritisnite, da odprete sliko v aplikaciji za gledanje slik</string>
<string name="sort_by">Razvrsti po</string>
<string name="reverse">...v obratnem vrstnem redu</string>
<string name="sort_by_balance">Stanje</string>
<string name="sort_by_expiry">Potek</string>
<string name="sort_by_most_recently_used">Nazadnje uporabljene</string>
<string name="sort_by_name">Ime</string>
@@ -155,6 +159,7 @@
<string name="unsupportedBarcodeType">Te vrste črtne kode aplikacija ne more prikazati. Morda bo to možno v prihodnosti.</string>
<string name="shortcutSelectCard">Izberite kartico</string>
<string name="starred">Priljubljene</string>
<string name="set_scale">Nastavi velikost</string>
<string name="include_if_asking_support">Ob zahtevani pomoči podpore je potrebno vključiti naslednje informacije:</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> točka</item>
@@ -162,6 +167,7 @@
<item quantity="few"><xliff:g>%s</xliff:g> točke</item>
<item quantity="other"><xliff:g>%s</xliff:g> točk</item>
</plurals>
<string name="barcode">Črtna koda</string>
<string name="editBarcode">Uredi črtno kodo</string>
<string name="group_edit">Uredi skupino</string>
<string name="never">Nikoli</string>
@@ -182,6 +188,7 @@
<string name="settings_lock_on_opening_orientation">Ohrani usmerjenost uporabljeno pri odpiranju kartice</string>
<string name="setIcon">Nastavite ikono</string>
<string name="showMoreInfo">Prikaži informacije</string>
<string name="hideMoreInfo">Skrij informacije</string>
<string name="updateBalance">Posodobi stanje</string>
<string name="failedToRetrieveImageFile">Slikovne datoteke ni bilo mogoče pridobiti</string>
<string name="credits">Zasluge</string>
@@ -211,6 +218,7 @@
<string name="expiryDate">Datum poteka veljavnosti</string>
<string name="chooseExpiryDate">Izberi datum poteka veljavnosti</string>
<string name="moveBarcodeToTopOfScreen">Premakni črtno kodo na vrh zaslona</string>
<string name="moveBarcodeToCenterOfScreen">Postavi črtno kodo na sredino zaslona</string>
<string name="importCatimaMessage">Izberi svoj obstoječ Catima <i>catima.zip</i> izvoz podatkov za uvoz v aplikacijo.
\nNajprej izvozi podatke v meniju \"Uvozi/Izvozi\" v drugi aplikaciji Catima s pritiskom na izbiro izvozi.</string>
<string name="importStocardMessage">Izberi svoj <i>***.zip</i> Stocard izvoz podatkov za uvoz.

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
<string name="settings_display_barcode_max_brightness">Gör streckkodsvyn ljusare</string>
<string name="settings_max_font_size_scale">Max. teckenstorlek</string>
<string name="settings_keep_screen_on">Håll skärmen påslagen</string>
<string name="enterBarcodeInstructions">Ange ID:t och välj antingen streckkodstyp nedan, eller \"Det finns ingen streckkod\".</string>
<string name="importFidmeMessage">Välj den exporterade <i>fidme-export-request-xxxxxx.zip</i> från FidMe som du vill importera och välj streckkodstyper manuellt efteråt.
@@ -41,9 +42,11 @@
<string name="addManually">Ange ID manuellt</string>
<string name="addFromImage">Välj bild från galleriet</string>
<string name="card">Kort</string>
<string name="barcode">Streckkod</string>
<string name="editBarcode">Redigera streckkod</string>
<string name="never">Aldrig</string>
<string name="moveBarcodeToTopOfScreen">Flytta streckkoden högst upp på skärmen</string>
<string name="moveBarcodeToCenterOfScreen">Centrera streckkoden på skärmen</string>
<string name="noBarcodeFound">Hittade ingen streckkod</string>
<string name="points">Poäng</string>
<string name="chooseImportType">Importera data från</string>
@@ -143,6 +146,7 @@
<string name="exportSuccessfulTitle">Exporten lyckades</string>
<string name="scanCardBarcode">Skanna streckkod</string>
<string name="settings_system_theme">Systemtemat</string>
<string name="app_revision_fmt">Ändringsinfo: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="privacy_policy_popup_text">Notis rörande integritetspolicy (krävs av vissa appbutiker):
\n
\nINGEN DATA ALLS SAMLAS IN, vilket vem som helst kan bekräfta eftersom vår app är fri programvara.</string>
@@ -180,8 +184,10 @@
<string name="settings_theme_color">Temafärg</string>
<string name="noGroupCards">Denna grupp är tom</string>
<string name="barcodeImageDescriptionWithType">Bild <xliff:g>%s</xliff:g> streckkod</string>
<string name="swipeToSwitchImages">Svep eller ändra bilder, håll för att öppna i bild i galleri app</string>
<string name="reverse">...i omvänd ordning</string>
<string name="sort_by">Sortera efter</string>
<string name="sort_by_balance">Saldo</string>
<string name="sort_by_expiry">Förfallodag</string>
<string name="sort_by_most_recently_used">Senast använda</string>
<string name="sort_by_name">Namn</string>
@@ -212,11 +218,13 @@
<string name="shortcutSelectCard">Välj ett kort</string>
<string name="showMoreInfo">Visa info</string>
<string name="starred">Stjärnmärkt</string>
<string name="hideMoreInfo">Dölj info</string>
<string name="options">Alternativ</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> poäng</item>
<item quantity="other"><xliff:g>%s</xliff:g> poäng</item>
</plurals>
<string name="set_scale">Justera skala</string>
<string name="include_if_asking_support">Om du vill be om hjälp, inkludera då följande information:</string>
<string name="settings_oled_dark">Helsvart bakgrund för mörkt tema</string>
<string name="failedLaunchingPhotoPicker">Kunde inte hitta kompatibelt bildprogram</string>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
<string name="swipeToSwitchImages">Resimler arasında geçiş yapmak için kaydırın, resmi galeri uygulamasında açmak için basılı tutun</string>
<string name="app_contributors">Katkıda bulunanlar: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="settings_brown_theme">Kahverengi</string>
<string name="settings_grey_theme">Gri</string>
@@ -63,11 +64,13 @@
<string name="balance">Bakiye</string>
<string name="errorReadingImage">Resim okunamadı</string>
<string name="noBarcodeFound">Barkod bulunamadı</string>
<string name="moveBarcodeToCenterOfScreen">Barkodu ekranda ortala</string>
<string name="moveBarcodeToTopOfScreen">Barkodu ekranın en üstüne taşı</string>
<string name="chooseExpiryDate">Son kullanma tarihi seç</string>
<string name="never">Hiçbir zaman</string>
<string name="expiryDate">Son kullanma tarihi</string>
<string name="editBarcode">Barkodu düzenle</string>
<string name="barcode">Barkod</string>
<string name="card">Kart</string>
<string name="balanceSentence">Bakiye: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Süresi doldu: <xliff:g>%s</xliff:g></string>
@@ -96,6 +99,7 @@
<string name="settings_disable_lockscreen_while_viewing_card">Ekran kilidini engelle</string>
<string name="settings_keep_screen_on">Ekranıık tut</string>
<string name="settings_display_barcode_max_brightness">Barkod görünümünü aydınlat</string>
<string name="settings_max_font_size_scale">Azami yazı tipi boyutu</string>
<string name="settings_dark_theme">Koyu</string>
<string name="settings_light_theme">ık</string>
<string name="settings_system_theme">Sistem</string>
@@ -109,6 +113,7 @@
<string name="selectBarcodeTitle">Barkod Seç</string>
<string name="app_resources">Özgür üçüncü taraf kaynakları: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_libraries">Özgür üçüncü taraf kütüphaneleri: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_revision_fmt">Değişiklik Bilgileri: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="debug_version_fmt">Sürüm: <xliff:g id="version">%s</xliff:g></string>
<string name="about_title_fmt"><xliff:g id="app_name">%s</xliff:g> hakkında</string>
<string name="app_license">GPLv3+ altında lisanslanan copyleft özgür yazılım</string>
@@ -182,6 +187,7 @@
<string name="action_search">Ara</string>
<string name="sort_by">Sıralama ölçütü</string>
<string name="reverse">…ters sırada</string>
<string name="sort_by_balance">Bakiye</string>
<string name="sort_by_expiry">Son kullanma tarihi</string>
<string name="sort_by_most_recently_used">En Son Kullanılan</string>
<string name="sort_by_name">Ad</string>
@@ -212,7 +218,9 @@
<string name="shortcutSelectCard">Kart seç</string>
<string name="options">Seçenekler</string>
<string name="showMoreInfo">Bilgileri göster</string>
<string name="hideMoreInfo">Bilgileri gizle</string>
<string name="starred">Yıldızlı</string>
<string name="set_scale">Ölçeği ayarla</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> puan</item>
<item quantity="other"><xliff:g>%s</xliff:g> puan</item>
@@ -260,12 +268,4 @@
<string name="anyDate">Herhangi bir tarih</string>
<string name="validFromDate">Geçerlilik başlangıcı</string>
<string name="validFromSentence"><xliff:g>%s</xliff:g> tarihinden itibaren geçerlidir</string>
<string name="height">Yükseklik:</string>
<string name="switchToBackImage">Arka resme geç</string>
<string name="switchToBarcode">Barkoda geç</string>
<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 galeri uygulamasında aç</string>
<string name="openBackImageInGalleryApp">Arka resmi galeri uygulamasında aç</string>
</resources>

View File

@@ -48,11 +48,13 @@
<string name="balance">Баланс</string>
<string name="errorReadingImage">Неможливо прочитати зображення</string>
<string name="noBarcodeFound">Жодного штрих-коду не знайдено</string>
<string name="moveBarcodeToCenterOfScreen">Відцентрувати штрих-код на екрані</string>
<string name="moveBarcodeToTopOfScreen">Посунути штрих-код наверх екрану</string>
<string name="chooseExpiryDate">Оберіть дату</string>
<string name="never">Ніколи</string>
<string name="expiryDate">Дата закінчення терміну дії</string>
<string name="editBarcode">Редагувати штрих-код</string>
<string name="barcode">Штрих-код</string>
<string name="card">Картка</string>
<string name="balanceSentence">Баланс: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentenceExpired">Термін дії закінчився: <xliff:g>%s</xliff:g></string>
@@ -75,6 +77,7 @@
<string name="intent_import_card_from_url_share_text">Я хочу поділитися з тобою картою</string>
<string name="settings_disable_lockscreen_while_viewing_card">Не блокувати екран</string>
<string name="settings_keep_screen_on">Не вимикати екран</string>
<string name="settings_max_font_size_scale">Макс. розмір шрифту</string>
<string name="settings_dark_theme">Темна</string>
<string name="settings_light_theme">Світла</string>
<string name="settings_system_theme">Системна</string>
@@ -88,6 +91,7 @@
<string name="copy_to_clipboard_toast">ID скопійовано до буферу обміну</string>
<string name="app_resources">Вільні ресурси третіх сторін: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_libraries">Вільні бібліотеки третіх сторін: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_revision_fmt">Інформація про випуск: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="debug_version_fmt">Версія: <xliff:g id="version">%s</xliff:g></string>
<string name="about_title_fmt">Про <xliff:g id="app_name">%s</xliff:g></string>
<string name="app_license">Копілефт вільне програмне забезпечення, ліцензоване під GPLv3+</string>
@@ -188,8 +192,10 @@
<string name="app_contributors">Стало можливим завдяки: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="noGroupCards">Пуста група</string>
<string name="barcodeImageDescriptionWithType">Зображення штрих-коду <xliff:g>%s</xliff:g></string>
<string name="swipeToSwitchImages">Свайп для зміни зображень, довге натискання для перегляду в галереї</string>
<string name="sort_by">Сортувати за</string>
<string name="reverse">у зворотному порядку</string>
<string name="sort_by_balance">Баланс</string>
<string name="sort_by_expiry">Термін дії</string>
<string name="sort_by_most_recently_used">Часто використовувані</string>
<string name="sort_by_name">Назва</string>
@@ -221,6 +227,8 @@
<string name="options">Параметри</string>
<string name="showMoreInfo">Відобразити дані</string>
<string name="starred">Обране</string>
<string name="set_scale">Зміна масштабу</string>
<string name="hideMoreInfo">Сховати дані</string>
<string name="settings_oled_dark">Повністю чорний фон для темної теми</string>
<plurals name="balancePoints">
<item quantity="one"><xliff:g>%s</xliff:g> бал</item>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
<string name="app_revision_fmt">更新日志: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="groupsList">组:<xliff:g>%s</xliff:g></string>
<plurals name="groupCardCount">
<item quantity="other"><xliff:g>%d</xliff:g> 卡片</item>
@@ -7,6 +8,7 @@
<string name="app_libraries">第三方自由程序库: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="debug_version_fmt">版本: <xliff:g id="version">%s</xliff:g></string>
<string name="about_title_fmt">关于 <xliff:g id="app_name">%s</xliff:g></string>
<string name="barcode">条形码</string>
<string name="card">卡片</string>
<string name="addManually">手动输入卡号</string>
<string name="settings_system_theme">系统设置</string>
@@ -46,6 +48,7 @@
<string name="balance">余额</string>
<string name="errorReadingImage">无法读取图像</string>
<string name="noBarcodeFound">未找到条形码</string>
<string name="moveBarcodeToCenterOfScreen">将条形码居中显示</string>
<string name="moveBarcodeToTopOfScreen">将条形码移到屏幕的顶部</string>
<string name="chooseExpiryDate">选择到期日</string>
<string name="never">从不</string>
@@ -71,6 +74,7 @@
<string name="settings_disable_lockscreen_while_viewing_card">防止锁屏</string>
<string name="settings_keep_screen_on">保持屏幕常亮</string>
<string name="settings_display_barcode_max_brightness">提高条码界面亮度</string>
<string name="settings_max_font_size_scale">最大字体大小</string>
<string name="settings_dark_theme">暗色</string>
<string name="settings_light_theme">浅色</string>
<string name="settings_theme">主题</string>
@@ -173,6 +177,7 @@
<string name="setIcon">设置图标</string>
<string name="settings_pink_theme">粉色</string>
<string name="settings_oled_dark">纯黑色背景的深色主题</string>
<string name="hideMoreInfo">隐藏信息</string>
<string name="translate_platform">在Weblate上</string>
<string name="settings_sky_blue_theme">天蓝</string>
<string name="showMoreInfo">显示信息</string>
@@ -194,6 +199,8 @@
<string name="sort_by_most_recently_used">最近使用</string>
<string name="sort_by_name">名称</string>
<string name="help_translate_this_app">帮助翻译此应用</string>
<string name="sort_by_balance">余额</string>
<string name="swipeToSwitchImages">滑动切换图片,按住打开图库应用中的图片</string>
<string name="reverse">倒序</string>
<string name="sort_by">排序方式</string>
<string name="selectColor">选择颜色</string>
@@ -211,6 +218,7 @@
<string name="settings_violet_theme">紫色</string>
<string name="action_show_details">显示详情</string>
<string name="action_hide_details">隐藏详情</string>
<string name="set_scale">设置大小</string>
<string name="app_contributors">因他们而存在: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="and_data_usage">和数据使用方法</string>
<string name="failedLaunchingPhotoPicker">找不到支持的图库应用</string>
@@ -253,12 +261,4 @@
<string name="chooseValidFromDate">选择有效日期</string>
<string name="validFromSentence">有效期自: <xliff:g>%s</xliff:g></string>
<string name="cameraPermissionRequired">此操作所需的访问相机的权限…</string>
<string name="height">高度:</string>
<string name="switchToFrontImage">选择正面图像</string>
<string name="switchToBackImage">选择背面图像</string>
<string name="switchToBarcode">选择条形码</string>
<string name="openFrontImageInGalleryApp">使用图库软件打开正面图像</string>
<string name="openBackImageInGalleryApp">使用图库软件打开背面图像</string>
<string name="setBarcodeHeight">设置条形码高度</string>
<string name="donate">捐赠</string>
</resources>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
<string name="app_revision_url">https://github.com/CatimaLoyalty/Android/releases</string>
<string name="action_search">搜尋</string>
<string name="action_add">新增</string>
<string name="noGiftCards">點選 + 按鈕以新增卡片,或從 ⋮ 選單中匯入。</string>
@@ -31,6 +32,7 @@
<string name="balance">餘額</string>
<string name="balanceSentence">餘額: <xliff:g>%s</xliff:g></string>
<string name="app_copyright_old">基於 Loyalty Card Keychain\n著作權所有 © 20162020 Branden Archer</string>
<string name="barcode">條碼</string>
<string name="barcodeId">條碼內容</string>
<string name="barcodeImageDescriptionWithType">圖片為 <xliff:g>%s</xliff:g> 的條碼</string>
<string name="card">卡片</string>
@@ -99,6 +101,7 @@
<string name="sort_by_name">名稱</string>
<string name="sort_by_most_recently_used">最近使用</string>
<string name="sort_by_expiry">逾期日期</string>
<string name="sort_by_balance">餘額</string>
<string name="reverse">...以反序排列</string>
<string name="sort_by">排列方式</string>
<string name="version_history">版本歷史</string>
@@ -144,6 +147,7 @@
<string name="thumbnailDescription">縮圖</string>
<string name="noGroupCards">此群組為空</string>
<string name="settings_category_title_ui">用戶界面</string>
<string name="settings_max_font_size_scale">最大字體大小</string>
<string name="settings_light_theme">淺色</string>
<string name="settings_dark_theme">深色</string>
<string name="settings_display_barcode_max_brightness">調高條碼介面螢幕亮度</string>
@@ -181,20 +185,24 @@
\n您可透過其他裝置的 Catima 程式中的匯入/匯出選單進行匯出。</string>
<string name="points"></string>
<string name="parsingBalanceFailed"><xliff:g>%s</xliff:g> 似乎不是個可用的餘額數值。</string>
<string name="app_revision_fmt">修訂版本資訊:<xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="app_libraries">第三方自由函示庫:<xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_resources">第三方自由資源:<xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="selectBarcodeTitle">選擇條碼</string>
<string name="noGroups">請點選 + 加號按鈕新增群組。</string>
<string name="moveBarcodeToTopOfScreen">將條碼移至螢幕上方</string>
<string name="moveBarcodeToCenterOfScreen">將條碼移至螢幕中央</string>
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
<string name="unsupportedBarcodeType">尚支援此條碼種類,但未來版本的應用程式可能會支援此條碼種類。</string>
<string name="wrongValueForBarcodeType">條碼內容不適用於此條碼種類</string>
<string name="backImageDescription">背面圖片</string>
<string name="updateBarcodeQuestionText">您已更新了 ID是否要更新條碼內容以匹配此 ID</string>
<string name="failedGeneratingShareURL">無法建立可分享的 URL請回報此錯誤。</string>
<string name="swipeToSwitchImages">滑動切換圖片,長按檢視圖片</string>
<string name="starImage">收藏標示</string>
<string name="noGiftCardsGroup">建立一些卡片,然後將它們分配到這個群組中。</string>
<string name="showMoreInfo">顯示資訊</string>
<string name="hideMoreInfo">隱藏資訊</string>
<string name="action_show_details">顯示詳情</string>
<string name="shortcutSelectCard">選擇卡片</string>
<string name="starred">已收藏</string>
@@ -212,6 +220,7 @@
<string name="action_hide_details">隱藏詳情</string>
<string name="translate_platform">於 Weblate</string>
<string name="options">選項</string>
<string name="set_scale">設定大小</string>
<string name="include_if_asking_support">如果您想請求協助,請附上以下訊息:</string>
<string name="settings_card_orientation">條碼方向</string>
<string name="failedToRetrieveImageFile">無法擷取圖片檔案</string>

View File

@@ -52,4 +52,6 @@
<color name="md_theme_dark_inverseSurface">#ECDFDE</color>
<color name="md_theme_dark_primaryInverse">#A83536</color>
<color name="md_theme_dark_onSelected">#80201A1A</color>
<color name="seed">#B53F3F</color>
<color name="error">#BA1B1B</color>
</resources>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_revision_url" translatable="false">https://github.com/CatimaLoyalty/Android/releases</string>
<string name="app_webpage_url" translatable="false">https://github.com/CatimaLoyalty/Android</string>
<integer name="full_rotation_duration">100</integer>
<integer name="half_rotation_duration">50</integer>
</resources>

View File

@@ -1,4 +1,8 @@
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="no_data_textSize">16sp</dimen>
<dimen name="no_data_padding">22dp</dimen>
@@ -10,13 +14,23 @@
<dimen name="storeNameTextSize">28sp</dimen>
<dimen name="noteTextSize">14sp</dimen>
<dimen name="singleCardCardIdTextSizeMin">15sp</dimen>
<dimen name="singleCardCardIdTextSizeMax">50sp</dimen>
<dimen name="singleCardNoteTextSizeMin">25sp</dimen>
<dimen name="singleCardNoteTextSizeMax">50sp</dimen>
<dimen name="inputBorderThickness">2dip</dimen>
<dimen name="inputBorderDividerThickness">4dip</dimen>
<dimen name="inputMargin">2dip</dimen>
<dimen name="inputPadding">10dip</dimen>
<dimen name="colorSamplePadding">10dip</dimen>
<dimen name="inputSize">18sp</dimen>
<dimen name="cardThumbnailSize">46dp</dimen>
<dimen name="cardThumbnailSizeLarge">200dp</dimen>
<dimen name="cardThumbnailEditOverlaySize">21dp</dimen>
<dimen name="activity_margin_small">8dp</dimen>
<dimen name="activity_margin">16dp</dimen>
<!-- Padding for layouts-->
<dimen name="activity_scanner_padding">10dp</dimen>
@@ -26,4 +40,5 @@
<dimen name="tileLetterFontSize">66sp</dimen>
<dimen name="tileLetterFontSizeForShortcut">48dp</dimen>
<dimen name="tileLetterImageSize">92dp</dimen>
<dimen name="cardViewLetterFontSize">100sp</dimen>
</resources>

View File

@@ -128,4 +128,11 @@
<item>#2093cd</item>
<item>#ad62a7</item>
</array>
<!-- Default values -->
<integer name="settings_max_font_size_scale_pct">100</integer>
<!-- Constraints -->
<integer name="settings_max_font_size_scale_pct_min">50</integer>
<integer name="settings_max_font_size_scale_pct_max">200</integer>
</resources>

View File

@@ -82,6 +82,7 @@
<string name="app_license">Copylefted libre software, licensed GPLv3+</string>
<string name="about_title_fmt">About <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Version: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Revision Info: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="app_libraries">Libre third-party libraries: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_resources">Libre third-party resources: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="selectBarcodeTitle">Select Barcode</string>
@@ -110,6 +111,7 @@
<string name="settings_lock_on_opening_orientation">Lock to orientation used when opening the card</string>
<string name="settings_key_lock_on_opening_orientation" translatable="false">lock_on_opening</string>
<string name="settings_key_max_font_size_scale" translatable="false">pref_max_font_size_scale</string>
<string name="settings_max_font_size_scale">Max. font size</string>
<string name="settings_display_barcode_max_brightness">Brighten barcode view</string>
<string name="settings_key_display_barcode_max_brightness" translatable="false">pref_display_card_max_brightness</string>
<string name="settings_keep_screen_on">Keep screen on</string>
@@ -164,11 +166,13 @@
<item quantity="other"><xliff:g>%s</xliff:g> points</item>
</plurals>
<string name="card">Card</string>
<string name="barcode">Barcode</string>
<string name="editBarcode">Edit barcode</string>
<string name="expiryDate">Expiry date</string>
<string name="never">Never</string>
<string name="chooseExpiryDate">Choose expiry date</string>
<string name="moveBarcodeToTopOfScreen">Move the barcode to the top of the screen</string>
<string name="moveBarcodeToCenterOfScreen">Center the barcode on the screen</string>
<string name="noBarcodeFound">No barcode was found</string>
<string name="errorReadingImage">Could not read the image</string>
<string name="balance">Balance</string>
@@ -248,12 +252,15 @@
<string name="app_contributors">Made possible by: <xliff:g id="app_contributors">%s</xliff:g></string>
<string name="sort">Sort</string>
<string name="showMoreInfo">Show info</string>
<string name="hideMoreInfo">Hide info</string>
<string name="updateBalance">Update balance</string>
<string name="swipeToSwitchImages">Swipe to switch images, hold to open image in the gallery app</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_used">Most Recently Used</string>
<string name="sort_by_expiry">Expiry</string>
<string name="sort_by_balance">Balance</string>
<!-- \"Reversed order\" is also OK. This is an option in the card sorting list -->
<string name="reverse">…in reversed order</string>
<string name="sort_by">Sort by</string>
@@ -274,6 +281,7 @@
<string name="shortcutSelectCard">Select a card</string>
<string name="options">Options</string>
<string name="starred">Starred</string>
<string name="set_scale">Set scale</string>
<string name="include_if_asking_support">If you want to request support, include the following info:</string>
<string name="duplicateCard">Duplicate</string>
<string name="archive">Archive</string>
@@ -305,12 +313,4 @@
<string name="anyDate">Any date</string>
<string name="chooseValidFromDate">Choose valid from date</string>
<string name="validFromSentence">Valid from: <xliff:g>%s</xliff:g></string>
<string name="height">Height:</string>
<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 gallery app</string>
<string name="openBackImageInGalleryApp">Open back image in gallery app</string>
<string name="setBarcodeHeight">Set barcode height</string>
<string name="donate">Donate</string>
</resources>

View File

@@ -27,17 +27,8 @@
<item name="colorOnSurfaceInverse">@color/md_theme_light_inverseOnSurface</item>
<item name="colorSurfaceInverse">@color/md_theme_light_inverseSurface</item>
<item name="colorPrimaryInverse">@color/md_theme_light_primaryInverse</item>
<item name="materialAlertDialogTheme">@style/ThemeOverlay.App.MaterialAlertDialog.Monet</item>
<item name="alertDialogTheme">@style/ThemeOverlay.App.MaterialAlertDialog.Monet</item>
<item name="windowActionModeOverlay">true</item>
</style>
<style name="ThemeOverlay.App.MaterialAlertDialog.Monet" parent="ThemeOverlay.Material3.MaterialAlertDialog">
<item name="alertDialogStyle">@style/MaterialAlertDialog.Material3</item>
<item name="dialogCornerRadius">28dp</item>
<item name="android:background">@drawable/dialog_bg_monet</item>
</style>
<style name="AppTheme.NoActionBar" parent="AppTheme">

View File

@@ -25,7 +25,6 @@
app:singleLineTitle="false" />
<SwitchPreferenceCompat
android:widgetLayout="@layout/preference_material_switch"
android:defaultValue="false"
android:key="@string/settings_key_oled_dark"
android:title="@string/settings_oled_dark"
@@ -41,8 +40,18 @@
app:iconSpaceReserved="false"
app:singleLineTitle="false" />
<nl.invissvenska.numberpickerpreference.NumberDialogPreference
android:key="@string/settings_key_max_font_size_scale"
android:title="@string/settings_max_font_size_scale"
app:defaultValue="@integer/settings_max_font_size_scale_pct"
app:iconSpaceReserved="false"
app:numberPickerPreference_maxValue="@integer/settings_max_font_size_scale_pct_max"
app:numberPickerPreference_minValue="@integer/settings_max_font_size_scale_pct_min"
app:numberPickerPreference_stepValue="10"
app:numberPickerPreference_unitText="%"
app:singleLineTitle="false" />
<SwitchPreferenceCompat
android:widgetLayout="@layout/preference_material_switch"
android:defaultValue="true"
android:key="@string/settings_key_display_barcode_max_brightness"
android:title="@string/settings_display_barcode_max_brightness"
@@ -59,7 +68,6 @@
app:singleLineTitle="false" />
<SwitchPreferenceCompat
android:widgetLayout="@layout/preference_material_switch"
android:defaultValue="true"
android:key="@string/settings_key_keep_screen_on"
android:title="@string/settings_keep_screen_on"
@@ -67,14 +75,11 @@
app:singleLineTitle="false" />
<SwitchPreferenceCompat
android:widgetLayout="@layout/preference_material_switch"
android:defaultValue="true"
android:key="@string/settings_key_disable_lockscreen_while_viewing_card"
android:title="@string/settings_disable_lockscreen_while_viewing_card"
app:iconSpaceReserved="false"
app:singleLineTitle="false" />
</PreferenceCategory>
</PreferenceScreen>
</PreferenceScreen>

View File

@@ -60,13 +60,25 @@ public class LoyaltyCardCursorAdapterTest {
return viewHolder.itemView;
}
private void checkView(final View view, final String store, final String note, final String validFrom, final String expiry, final String balance) {
final TextView storeField = view.findViewById(R.id.thumbnail_text);
private void checkView(final View view, final String store, final String note, final String validFrom, final String expiry, final String balance, boolean checkFontSizes) {
final TextView storeField = view.findViewById(R.id.store);
final TextView noteField = view.findViewById(R.id.note);
final TextView validFromField = view.findViewById(R.id.validFrom);
final TextView expiryField = view.findViewById(R.id.expiry);
final TextView balanceField = view.findViewById(R.id.balance);
if (checkFontSizes) {
Settings preferences = new Settings(activity.getApplicationContext());
int mediumFontSize = preferences.getFontSizeMax(preferences.getMediumFont());
int smallFontSize = preferences.getFontSizeMax(preferences.getSmallFont());
assertEquals(mediumFontSize, (int) storeField.getTextSize());
assertEquals(smallFontSize, (int) noteField.getTextSize());
assertEquals(smallFontSize, (int) validFromField.getTextSize());
assertEquals(smallFontSize, (int) expiryField.getTextSize());
}
assertEquals(store, storeField.getText().toString());
if (!note.isEmpty()) {
assertEquals(View.VISIBLE, noteField.getVisibility());
assertEquals(note, noteField.getText().toString());
@@ -107,7 +119,7 @@ public class LoyaltyCardCursorAdapterTest {
View view = createView(cursor);
checkView(view, card.store, card.note, "", "", "");
checkView(view, card.store, card.note, "", "", "", false);
cursor.close();
}
@@ -122,7 +134,30 @@ public class LoyaltyCardCursorAdapterTest {
View view = createView(cursor);
checkView(view, card.store, card.note, "", "", "");
checkView(view, card.store, card.note, "", "", "", false);
cursor.close();
}
@Test
public void TestCursorAdapterFontSizes() {
Date date = new Date();
String dateString = DateFormat.getDateInstance(DateFormat.LONG).format(date);
DBHelper.insertLoyaltyCard(mDatabase, "store", "note", date, date, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0);
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase);
cursor.moveToFirst();
setFontScale(50);
View view = createView(cursor);
checkView(view, card.store, card.note, dateString, dateString, "", true);
setFontScale(200);
view = createView(cursor);
checkView(view, card.store, card.note, dateString, dateString, "", true);
cursor.close();
}
@@ -188,7 +223,7 @@ public class LoyaltyCardCursorAdapterTest {
View view = createView(cursor);
checkView(view, card.store, card.note, "", "", "");
checkView(view, card.store, card.note, "", "", "", false);
cursor.close();
}
@@ -203,7 +238,7 @@ public class LoyaltyCardCursorAdapterTest {
View view = createView(cursor);
checkView(view, card.store, card.note, "", "", "");
checkView(view, card.store, card.note, "", "", "", false);
cursor.close();
}
@@ -218,7 +253,7 @@ public class LoyaltyCardCursorAdapterTest {
View view = createView(cursor);
checkView(view, card.store, card.note, "", "", "100 points");
checkView(view, card.store, card.note, "", "", "100 points", false);
cursor.close();
}
@@ -233,7 +268,7 @@ public class LoyaltyCardCursorAdapterTest {
View view = createView(cursor);
checkView(view, card.store, card.note, "", "", "$10.00");
checkView(view, card.store, card.note, "", "", "$10.00", false);
cursor.close();
}

View File

@@ -59,7 +59,6 @@ import java.util.Currency;
import java.util.Date;
import androidx.appcompat.app.AlertDialog;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.widget.TextViewCompat;
import androidx.preference.PreferenceManager;
@@ -310,7 +309,7 @@ public class LoyaltyCardViewActivityTest {
final String barcodeId, final String barcodeType,
final Bitmap frontImage, final Bitmap backImage) {
if (mode == ViewMode.VIEW_CARD) {
checkFieldProperties(activity, R.id.card_id_view, View.VISIBLE, cardId, FieldTypeView.TextView);
checkFieldProperties(activity, R.id.cardIdView, View.VISIBLE, cardId, FieldTypeView.TextView);
} else {
int editVisibility = View.VISIBLE;
@@ -622,7 +621,7 @@ public class LoyaltyCardViewActivityTest {
}
@Test
public void startWithLoyaltyCardViewModeCheckDisplay() {
public void startWithLoyaltyCardViewModeCheckDisplay() throws IOException {
ActivityController activityController = createActivityWithLoyaltyCard(false);
Activity activity = (Activity) activityController.get();
final Context context = activity.getApplicationContext();
@@ -1132,6 +1131,40 @@ public class LoyaltyCardViewActivityTest {
database.close();
}
@Test
public void startCheckFontSizes() {
ActivityController activityController = createActivityWithLoyaltyCard(false);
Activity activity = (Activity) activityController.get();
SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase();
DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null,0);
final int LARGE_FONT_SIZE = 40;
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity);
settings.edit()
.putInt(activity.getResources().getString(R.string.settings_key_max_font_size_scale), 100)
.apply();
activityController.start();
activityController.visible();
activityController.resume();
assertEquals(false, activity.isFinishing());
TextView storeName = activity.findViewById(R.id.storeName);
TextView cardIdFieldView = activity.findViewById(R.id.cardIdView);
TextViewCompat.getAutoSizeMaxTextSize(storeName);
TextViewCompat.getAutoSizeMaxTextSize(storeName);
assertEquals(LARGE_FONT_SIZE, TextViewCompat.getAutoSizeMaxTextSize(cardIdFieldView));
shadowOf(activity).clickMenuItem(android.R.id.home);
assertEquals(true, activity.isFinishing());
database.close();
}
@Test
public void checkPushStarIcon() {
ActivityController activityController = createActivityWithLoyaltyCard(false);
@@ -1180,12 +1213,13 @@ public class LoyaltyCardViewActivityTest {
assertFalse(activity.isFinishing());
View collapsingToolbarLayout = activity.findViewById(R.id.collapsingToolbarLayout);
BottomAppBar bottomAppBar = activity.findViewById(R.id.bottom_app_bar);
ImageView mainImage = activity.findViewById(R.id.main_image);
LinearLayout container = activity.findViewById(R.id.container);
ConstraintLayout fullScreenLayout = activity.findViewById(R.id.fullscreen_layout);
ImageButton minimizeButton = activity.findViewById(R.id.fullscreen_button_minimize);
ImageButton maximizeButton = activity.findViewById(R.id.maximizeButton);
ImageButton minimizeButton = activity.findViewById(R.id.minimizeButton);
LinearLayout dotIndicator = activity.findViewById(R.id.dotIndicator);
FloatingActionButton editButton = activity.findViewById(R.id.fabEdit);
SeekBar barcodeScaler = activity.findViewById(R.id.barcodeScaler);
// Android should not be in fullscreen mode
assertTrue(activity.getWindow().getDecorView().getRootWindowInsets().isVisible(WindowInsets.Type.statusBars()));
@@ -1193,13 +1227,16 @@ public class LoyaltyCardViewActivityTest {
assertEquals(WindowInsetsController.BEHAVIOR_DEFAULT, activity.getWindow().getInsetsController().getSystemBarsBehavior());
// Elements should be visible (except minimize button and scaler)
assertEquals(View.VISIBLE, collapsingToolbarLayout.getVisibility());
assertEquals(View.VISIBLE, bottomAppBar.getVisibility());
assertEquals(View.VISIBLE, container.getVisibility());
assertEquals(View.GONE, fullScreenLayout.getVisibility());
assertEquals(View.VISIBLE, maximizeButton.getVisibility());
assertEquals(View.GONE, minimizeButton.getVisibility());
assertEquals(View.VISIBLE, editButton.getVisibility());
assertEquals(View.GONE, barcodeScaler.getVisibility());
assertEquals(View.GONE, dotIndicator.getVisibility()); // We have no images, only a barcode
// Click maximize button to activate fullscreen
mainImage.performClick();
maximizeButton.performClick();
shadowOf(getMainLooper()).idle();
// Android should be in fullscreen mode
@@ -1208,10 +1245,13 @@ public class LoyaltyCardViewActivityTest {
assertEquals(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE, activity.getWindow().getInsetsController().getSystemBarsBehavior());
// Elements should not be visible (except minimize button and scaler)
assertEquals(View.GONE, collapsingToolbarLayout.getVisibility());
assertEquals(View.GONE, bottomAppBar.getVisibility());
assertEquals(View.GONE, container.getVisibility());
assertEquals(View.VISIBLE, fullScreenLayout.getVisibility());
assertEquals(View.GONE, maximizeButton.getVisibility());
assertEquals(View.VISIBLE, minimizeButton.getVisibility());
assertEquals(View.GONE, editButton.getVisibility());
assertEquals(View.VISIBLE, barcodeScaler.getVisibility());
assertEquals(View.GONE, dotIndicator.getVisibility()); // We have no images, only a barcode
// Clicking minimize button should deactivate fullscreen mode
minimizeButton.performClick();
@@ -1221,23 +1261,29 @@ public class LoyaltyCardViewActivityTest {
assertTrue(activity.getWindow().getDecorView().getRootWindowInsets().isVisible(WindowInsets.Type.navigationBars()));
assertEquals(WindowInsetsController.BEHAVIOR_DEFAULT, activity.getWindow().getInsetsController().getSystemBarsBehavior());
assertEquals(View.VISIBLE, collapsingToolbarLayout.getVisibility());
assertEquals(View.VISIBLE, bottomAppBar.getVisibility());
assertEquals(View.VISIBLE, container.getVisibility());
assertEquals(View.GONE, fullScreenLayout.getVisibility());
assertEquals(View.VISIBLE, maximizeButton.getVisibility());
assertEquals(View.GONE, minimizeButton.getVisibility());
assertEquals(View.VISIBLE, editButton.getVisibility());
assertEquals(View.GONE, barcodeScaler.getVisibility());
assertEquals(View.GONE, dotIndicator.getVisibility()); // We have no images, only a barcode
// Another click back to fullscreen
mainImage.performClick();
maximizeButton.performClick();
shadowOf(getMainLooper()).idle();
assertFalse(activity.getWindow().getDecorView().getRootWindowInsets().isVisible(WindowInsets.Type.statusBars()));
assertFalse(activity.getWindow().getDecorView().getRootWindowInsets().isVisible(WindowInsets.Type.navigationBars()));
assertEquals(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE, activity.getWindow().getInsetsController().getSystemBarsBehavior());
assertEquals(View.GONE, collapsingToolbarLayout.getVisibility());
assertEquals(View.GONE, bottomAppBar.getVisibility());
assertEquals(View.GONE, container.getVisibility());
assertEquals(View.VISIBLE, fullScreenLayout.getVisibility());
assertEquals(View.GONE, maximizeButton.getVisibility());
assertEquals(View.VISIBLE, minimizeButton.getVisibility());
assertEquals(View.GONE, editButton.getVisibility());
assertEquals(View.VISIBLE, barcodeScaler.getVisibility());
assertEquals(View.GONE, dotIndicator.getVisibility()); // We have no images, only a barcode
// In full screen mode, back button should disable fullscreen
activity.onBackPressed();
@@ -1247,10 +1293,13 @@ public class LoyaltyCardViewActivityTest {
assertTrue(activity.getWindow().getDecorView().getRootWindowInsets().isVisible(WindowInsets.Type.navigationBars()));
assertEquals(WindowInsetsController.BEHAVIOR_DEFAULT, activity.getWindow().getInsetsController().getSystemBarsBehavior());
assertEquals(View.VISIBLE, collapsingToolbarLayout.getVisibility());
assertEquals(View.VISIBLE, bottomAppBar.getVisibility());
assertEquals(View.VISIBLE, container.getVisibility());
assertEquals(View.GONE, fullScreenLayout.getVisibility());
assertEquals(View.VISIBLE, maximizeButton.getVisibility());
assertEquals(View.GONE, minimizeButton.getVisibility());
assertEquals(View.VISIBLE, editButton.getVisibility());
assertEquals(View.GONE, barcodeScaler.getVisibility());
assertEquals(View.GONE, dotIndicator.getVisibility()); // We have no images, only a barcode
// Pressing back when not in full screen should finish activity
activity.onBackPressed();
@@ -1274,10 +1323,12 @@ public class LoyaltyCardViewActivityTest {
assertEquals(false, activity.isFinishing());
View collapsingToolbarLayout = activity.findViewById(R.id.collapsingToolbarLayout);
BottomAppBar bottomAppBar = activity.findViewById(R.id.bottom_app_bar);
ImageView mainImage = activity.findViewById(R.id.main_image);
ConstraintLayout fullScreenLayout = activity.findViewById(R.id.fullscreen_layout);
ImageButton maximizeButton = activity.findViewById(R.id.maximizeButton);
ImageButton minimizeButton = activity.findViewById(R.id.minimizeButton);
FloatingActionButton editButton = activity.findViewById(R.id.fabEdit);
SeekBar barcodeScaler = activity.findViewById(R.id.barcodeScaler);
// Android should not be in fullscreen mode
int uiOptions = activity.getWindow().getDecorView().getSystemUiVisibility();
@@ -1285,10 +1336,12 @@ public class LoyaltyCardViewActivityTest {
assertNotEquals(uiOptions | View.SYSTEM_UI_FLAG_FULLSCREEN, uiOptions);
// Elements should be visible (except minimize/maximize buttons and barcode and scaler)
assertEquals(View.VISIBLE, collapsingToolbarLayout.getVisibility());
assertEquals(View.VISIBLE, bottomAppBar.getVisibility());
assertEquals(View.GONE, mainImage.getVisibility());
assertEquals(View.GONE, fullScreenLayout.getVisibility());
assertEquals(View.GONE, maximizeButton.getVisibility());
assertEquals(View.GONE, minimizeButton.getVisibility());
assertEquals(View.VISIBLE, editButton.getVisibility());
assertEquals(View.GONE, barcodeScaler.getVisibility());
// Pressing back when not in full screen should finish activity
activity.onBackPressed();

View File

@@ -153,10 +153,10 @@ public class MainActivityTest {
list.measure(0, 0);
list.layout(0, 0, 100, 1000);
assertEquals("storeC", ((TextView) list.findViewHolderForAdapterPosition(0).itemView.findViewById(R.id.thumbnail_text)).getText());
assertEquals("storeD", ((TextView) list.findViewHolderForAdapterPosition(1).itemView.findViewById(R.id.thumbnail_text)).getText());
assertEquals("storeA", ((TextView) list.findViewHolderForAdapterPosition(2).itemView.findViewById(R.id.thumbnail_text)).getText());
assertEquals("storeB", ((TextView) list.findViewHolderForAdapterPosition(3).itemView.findViewById(R.id.thumbnail_text)).getText());
assertEquals("storeC", ((TextView) list.findViewHolderForAdapterPosition(0).itemView.findViewById(R.id.store)).getText());
assertEquals("storeD", ((TextView) list.findViewHolderForAdapterPosition(1).itemView.findViewById(R.id.store)).getText());
assertEquals("storeA", ((TextView) list.findViewHolderForAdapterPosition(2).itemView.findViewById(R.id.store)).getText());
assertEquals("storeB", ((TextView) list.findViewHolderForAdapterPosition(3).itemView.findViewById(R.id.store)).getText());
database.close();
}

View File

@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '8.0.2' apply false
id 'com.android.application' version '8.0.0' apply false
id 'com.github.spotbugs' version "5.0.14" apply false
}

View File

@@ -1,11 +0,0 @@
**This documentation is for maintainers. If you're a user, please ignore it.**
# When releasing, do the following:
1. Press "Commit" and "Push" on Weblate to ensure all translations are up to date
2. Merge Weblate pull request
3. Update `CHANGELOG.md` with the new version name
4. Update `app/build.gradle` with the new `versionCode` and `versionName`
5. Build a new .apk: `KEYSTORE=/path/to/keystore KEYSTORE_ALIAS=catima ./build.sh`
6. Upload the APK to Google Play Open Testing
7. Push the version update: `git add CHANGELOG.md app/build.gradle && git commit -m "Release Catima <VERSION>" && git push`
8. Create a new release on GitHub and attach the `app-release.apk` and `SHA256SUMS` files

View File

@@ -1,3 +0,0 @@
- Kompletní přepracování hlavní obrazovky a obrazovek věrnostních karet
- Motiv Material You pro obrazovku Nastavení
- Oprava havárie při použití „Pořídit fotografii“ při zakázaném fotoaparátu

View File

@@ -1,3 +0,0 @@
- Complete redesign of main and loyalty card view screens
- Material You design for the settings screen
- Fix crash when using "Take a photo" with disabled camera app

View File

@@ -1 +0,0 @@
- Update used libraries

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 60 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 75 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

@@ -1 +0,0 @@
- Utiliser les couleurs de Material You sur un plus grand nombre d'appareils (mise à jour de la bibliothèque de Google)

View File

@@ -1,3 +0,0 @@
- Refonte complète des écrans de visualisation de la carte principale et de la carte de fidélité
- Design Material You pour l'écran des paramètres
- Correction du crash lors de l'utilisation de "Prendre une photo" avec l'application de caméra désactivée

View File

@@ -1,2 +1,2 @@
- Un clic long sur une carte affiche l'option de copier l'ID de la carte dans le presse-papiers. (pull #49 (https://github.com/brarcher/loyalty-card-locker/issues/49))
- Le bouton Retour de la vue Import/Export fonctionne désormais, déplaçant alors l'utilisateur vers la vue principale
- Le bouton Retour de la vue Entrée/Exportation fonctionne désormais, déplaçant alors l'utilisateur vers la vue principale

View File

@@ -1,22 +0,0 @@
Prestani tražiti plastične kartice tijekom plaćanju u trgovini ili webshopu.
<b>Snimi crtični kod na svoj uređaj pomoću kamere, zaboravi kartice.</b>
Zaboravi novčanik ili ga koristi samo za dragocjenosti.
S ovim osnovnim alatom za svakodnevne potrebe (EDC) možeš zamijeniti beskorisnu plastiku s gotovinom.
- Izbjegni špijuniranja s vrlo malim brojem dozvola. Bez pristupa internetu i bez oglasa.
- Dodaj kartice ili kodove s imenima i prilagodljivim bojama.
- Ručni unos koda ako ne postoji crtični kod za spremanje ili ako se ne može koristiti.
- Uvoz kartica i kodova iz datoteka, Catima, FidMe, Loyalty Card Keychain, Stocard i Vaucher Vault.
- Spremi sigurnosnu kopiju svih tvojih kartica i prenesi ih na novi uređaj ako želiš.
- Dijeli kupone, ekskluzivne ponude, promotivne kodove ili kartice i kodove pomoću bilo koje aplikacije.
- Tamna tema i opcije pristupačnosti za slabovidne korisnike.
- Stvoreno za svakoga od zajednice libre softvera.
- Prevedeno na više od 20 jezika.
- Besplatna aplikacija, podržana doprinosima zajednice.
- Koristi, proučavaj, mijenjaj i dijeli kako želiš; <i>sa svima</i>.
- Ne samo slobodan softver/softver otvorenog koda. <i>Copylefted</i> libre softver (GPLv3+) za upravljanje karticama.
Olakšaj si život i kupovinu te više nikada nemoj izgubiti papirnati račun, darovnu karticu za plaćanje u trgovini ili avionsku kartu.
Ponesi sve svoje nagrade i bonuse sa sobom i uštedi.

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