New add card workflow (#1512)

This commit is contained in:
Sylvia van Os
2023-09-26 19:30:35 +02:00
committed by GitHub
parent 93d5c5e03e
commit 573da1e4ff
47 changed files with 174 additions and 211 deletions

View File

@@ -16,7 +16,6 @@ import com.google.zxing.BarcodeFormat;
import java.util.ArrayList;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.Toolbar;
import protect.card_locker.databinding.BarcodeSelectorActivityBinding;
@@ -66,10 +65,6 @@ public class BarcodeSelectorActivity extends CatimaAppCompatActivity implements
runOnUiThread(() -> {
generateBarcodes(s.toString());
View noBarcodeButtonView = binding.noBarcode;
setButtonListener(noBarcodeButtonView, s.toString());
noBarcodeButtonView.setEnabled(s.length() > 0);
});
}, INPUT_DELAY);
}
@@ -95,17 +90,6 @@ public class BarcodeSelectorActivity extends CatimaAppCompatActivity implements
mAdapter.setBarcodes(barcodes);
}
private void setButtonListener(final View button, final String cardId) {
button.setOnClickListener(view -> {
Log.d(TAG, "Selected no barcode");
Intent result = new Intent();
result.putExtra(BARCODE_FORMAT, "");
result.putExtra(BARCODE_CONTENTS, cardId);
BarcodeSelectorActivity.this.setResult(RESULT_OK, result);
finish();
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {

View File

@@ -1,5 +1,8 @@
package protect.card_locker;
import static protect.card_locker.BarcodeSelectorActivity.BARCODE_CONTENTS;
import static protect.card_locker.BarcodeSelectorActivity.BARCODE_FORMAT;
import android.Manifest;
import android.app.Activity;
import android.content.ActivityNotFoundException;
@@ -9,6 +12,7 @@ import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.text.InputType;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
@@ -16,15 +20,22 @@ import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.zxing.ResultPoint;
import com.google.zxing.client.android.Intents;
import com.journeyapps.barcodescanner.BarcodeCallback;
@@ -44,7 +55,6 @@ import protect.card_locker.databinding.ScanActivityBinding;
* originally licensed under Apache 2.0
*/
public class ScanActivity extends CatimaAppCompatActivity {
private ScanActivityBinding binding;
private CustomBarcodeScannerBinding customBarcodeScannerBinding;
private static final String TAG = "Catima";
@@ -65,6 +75,9 @@ public class ScanActivity extends CatimaAppCompatActivity {
// can't use the pre-made contract because that launches the file manager for image type instead of gallery
private ActivityResultLauncher<Intent> photoPickerLauncher;
static final String STATE_SCANNER_ACTIVE = "scannerActive";
private boolean mScannerActive = true;
private void extractIntentFields(Intent intent) {
final Bundle b = intent.getExtras();
cardId = b != null ? b.getString(LoyaltyCardEditActivity.BUNDLE_CARDID) : null;
@@ -87,8 +100,36 @@ public class ScanActivity extends CatimaAppCompatActivity {
manualAddLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> handleActivityResult(Utils.SELECT_BARCODE_REQUEST, result.getResultCode(), result.getData()));
photoPickerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> handleActivityResult(Utils.BARCODE_IMPORT_FROM_IMAGE_FILE, result.getResultCode(), result.getData()));
customBarcodeScannerBinding.addFromImage.setOnClickListener(this::addFromImage);
customBarcodeScannerBinding.addManually.setOnClickListener(this::addManually);
customBarcodeScannerBinding.fabOtherOptions.setOnClickListener(view -> {
setScannerActive(false);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(ScanActivity.this);
builder.setTitle(getString(R.string.add_a_card_in_a_different_way));
builder.setItems(
new CharSequence[]{
getString(R.string.addWithoutBarcode),
getString(R.string.addManually),
getString(R.string.addFromImage)
},
(dialogInterface, i) -> {
switch (i) {
case 0:
addWithoutBarcode();
break;
case 1:
addManually();
break;
case 2:
addFromImage();
break;
default:
throw new IllegalArgumentException("Unknown 'Add a card in a different way' dialog option");
}
}
);
builder.setOnCancelListener(dialogInterface -> setScannerActive(true));
builder.show();
});
barcodeScannerView = binding.zxingBarcodeScanner;
@@ -106,8 +147,8 @@ public class ScanActivity extends CatimaAppCompatActivity {
public void barcodeResult(BarcodeResult result) {
Intent scanResult = new Intent();
Bundle scanResultBundle = new Bundle();
scanResultBundle.putString(BarcodeSelectorActivity.BARCODE_CONTENTS, result.getText());
scanResultBundle.putString(BarcodeSelectorActivity.BARCODE_FORMAT, result.getBarcodeFormat().name());
scanResultBundle.putString(BARCODE_CONTENTS, result.getText());
scanResultBundle.putString(BARCODE_FORMAT, result.getBarcodeFormat().name());
if (addGroup != null) {
scanResultBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, addGroup);
}
@@ -126,7 +167,11 @@ public class ScanActivity extends CatimaAppCompatActivity {
@Override
protected void onResume() {
super.onResume();
capture.onResume();
if (mScannerActive) {
capture.onResume();
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
showCameraPermissionMissingText(false);
}
@@ -146,9 +191,18 @@ public class ScanActivity extends CatimaAppCompatActivity {
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
capture.onSaveInstanceState(outState);
protected void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
capture.onSaveInstanceState(savedInstanceState);
savedInstanceState.putBoolean(STATE_SCANNER_ACTIVE, mScannerActive);
}
@Override
public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mScannerActive = savedInstanceState.getBoolean(STATE_SCANNER_ACTIVE);
}
@Override
@@ -190,19 +244,20 @@ public class ScanActivity extends CatimaAppCompatActivity {
return super.onOptionsItemSelected(item);
}
private void handleActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
BarcodeValues barcodeValues = Utils.parseSetBarcodeActivityResult(requestCode, resultCode, intent, this);
if (barcodeValues.isEmpty()) {
return;
private void setScannerActive(boolean isActive) {
if (isActive) {
barcodeScannerView.resume();
} else {
barcodeScannerView.pause();
}
mScannerActive = isActive;
}
private void returnResult(String barcodeContents, String barcodeFormat) {
Intent manualResult = new Intent();
Bundle manualResultBundle = new Bundle();
manualResultBundle.putString(BarcodeSelectorActivity.BARCODE_CONTENTS, barcodeValues.content());
manualResultBundle.putString(BarcodeSelectorActivity.BARCODE_FORMAT, barcodeValues.format());
manualResultBundle.putString(BARCODE_CONTENTS, barcodeContents);
manualResultBundle.putString(BARCODE_FORMAT, barcodeFormat);
if (addGroup != null) {
manualResultBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, addGroup);
}
@@ -211,7 +266,84 @@ public class ScanActivity extends CatimaAppCompatActivity {
finish();
}
public void addManually(View view) {
private void handleActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
BarcodeValues barcodeValues = Utils.parseSetBarcodeActivityResult(requestCode, resultCode, intent, this);
if (barcodeValues.isEmpty()) {
setScannerActive(true);
return;
}
returnResult(barcodeValues.content(), barcodeValues.format());
}
private void addWithoutBarcode() {
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
builder.setOnCancelListener(dialogInterface -> setScannerActive(true));
// Header
builder.setTitle(R.string.addWithoutBarcode);
// Layout
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
int contentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
params.leftMargin = contentPadding;
params.topMargin = contentPadding / 2;
params.rightMargin = contentPadding;
// Description
TextView currentTextview = new TextView(this);
currentTextview.setText(getString(R.string.enter_card_id));
currentTextview.setLayoutParams(params);
layout.addView(currentTextview);
// EditText with spacing
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_TEXT);
input.setLayoutParams(params);
layout.addView(input);
// Set layout
builder.setView(layout);
// Buttons
builder.setPositiveButton(getString(R.string.ok), (dialog, which) -> {
returnResult(input.getText().toString(), "");
});
builder.setNegativeButton(getString(R.string.cancel), (dialog, which) -> dialog.cancel());
AlertDialog dialog = builder.create();
// Now that the dialog exists, we can bind something that affects the OK button
input.addTextChangedListener(new SimpleTextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() == 0) {
input.setError(getString(R.string.card_id_must_not_be_empty));
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
} else {
input.setError(null);
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
}
}
});
dialog.show();
// Disable button (must be done **after** dialog is shown to prevent crash
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
// Set focus on input field
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
input.requestFocus();
}
public void addManually() {
Intent i = new Intent(getApplicationContext(), BarcodeSelectorActivity.class);
if (cardId != null) {
final Bundle b = new Bundle();
@@ -221,7 +353,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
manualAddLauncher.launch(i);
}
public void addFromImage(View view) {
public void addFromImage() {
PermissionUtils.requestStorageReadPermission(this, PERMISSION_SCAN_ADD_FROM_IMAGE);
}
@@ -236,6 +368,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
try {
photoPickerLauncher.launch(chooserIntent);
} catch (ActivityNotFoundException e) {
setScannerActive(true);
Toast.makeText(getApplicationContext(), R.string.failedLaunchingPhotoPicker, Toast.LENGTH_LONG).show();
Log.e(TAG, "No activity found to handle intent", e);
}
@@ -288,6 +421,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
if (granted) {
addFromImageAfterPermission();
} else {
setScannerActive(true);
Toast.makeText(this, R.string.storageReadPermissionRequired, Toast.LENGTH_LONG).show();
}
}

View File

@@ -34,7 +34,7 @@
app:layout_constraintBottom_toTopOf="@+id/barcodeIdLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:text="@string/enterBarcodeInstructions" />
android:text="@string/manually_enter_barcode_instructions" />
<LinearLayout
android:id="@+id/barcodeIdLayout"
android:orientation="horizontal"
@@ -42,7 +42,7 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/explanationText"
app:layout_constraintBottom_toTopOf="@+id/noBarcode"
app:layout_constraintBottom_toTopOf="@+id/barcodes"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView android:textSize="16.0sp"
@@ -65,21 +65,11 @@
android:minHeight="48dp"
tools:ignore="ContentDescription" />
</LinearLayout>
<Button
android:id="@+id/noBarcode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/barcodeIdLayout"
app:layout_constraintBottom_toTopOf="@+id/barcodes"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:text="@string/barcodeNoBarcode"
android:enabled="false" />
<ListView
android:id="@+id/barcodes"
android:layout_width="match_parent"
android:layout_height="fill_parent"
app:layout_constraintTop_toBottomOf="@+id/noBarcode"
app:layout_constraintTop_toBottomOf="@+id/barcodeIdLayout"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -2,6 +2,15 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
android:id="@+id/fabOtherOptions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
app:icon="@drawable/ic_baseline_unfold_more_24"
android:text="@string/action_more_options"
android:layout_margin="16dp" />
<com.journeyapps.barcodescanner.BarcodeView
android:id="@+id/zxing_barcode_surface"
android:layout_width="match_parent"
@@ -33,25 +42,5 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/add_from_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/addFromImage"
app:layout_constraintBottom_toTopOf="@+id/add_manually"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/camera_permission_denied_layout"
app:layout_constraintVertical_bias="1.0" />
<Button
android:id="@+id/add_manually"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/addManually"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</merge>

View File

@@ -8,7 +8,6 @@
<string name="note">مذكرة</string>
<string name="cardId">معرّف البطاقة</string>
<string name="barcodeType">نوع الباركود</string>
<string name="barcodeNoBarcode">لا يوجد باركود</string>
<string name="noBarcode">لا يوجد باركود</string>
<string name="star">أضف الي المفضلة</string>
<string name="unstar">حذف من المفضلة</string>
@@ -48,7 +47,6 @@
<string name="app_license">البرمجيات الحرة متروكة الحقوق, ترخيص +GPLv3</string>
<string name="app_libraries">مكتبات الطرف الثالث الحرة: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="selectBarcodeTitle">اختار الباركود</string>
<string name="enterBarcodeInstructions">أدخل بطاقة هوية ، واختر نوع الباركود أدناه ، أو \"لا يوجد باركود\".</string>
<string name="copy_to_clipboard_toast">تم نسخ بطاقة الهوية إلى الحافظة</string>
<string name="thumbnailDescription">صورة مصغرة</string>
<string name="starImage">نجم مفضل</string>

View File

@@ -21,7 +21,6 @@
</plurals>
<string name="noGiftCards">Calca\'l botón «+» p\'amestar una tarxeta o impórtales dende\'l menú «⋮».</string>
<string name="cardId">ID</string>
<string name="barcodeNoBarcode">Nun hai nengún códigu de barres</string>
<string name="save">Guardar</string>
<string name="edit">Editar</string>
<string name="delete">Desaniciar</string>

View File

@@ -11,7 +11,6 @@
<string name="unstar">Премахва от любими</string>
<string name="star">Добавя към любими</string>
<string name="noBarcode">Липсва щрихкод</string>
<string name="barcodeNoBarcode">Липсва щрихкод</string>
<string name="barcodeType">Вид на щрихкода</string>
<string name="cardId">Номер на карта</string>
<string name="note">Бележка</string>
@@ -91,7 +90,6 @@
<string name="starImage">Звезда за любимо</string>
<string name="thumbnailDescription">Миниатюра</string>
<string name="copy_to_clipboard_toast">Номерът е копиран в междинната памет</string>
<string name="enterBarcodeInstructions">Въведете номер и после или изберете вида на щрихкода, или докоснете бутона „Липсва щрихкод“.</string>
<string name="selectBarcodeTitle">Избиране на щрихкод</string>
<string name="importOptionApplicationButton">Избиране чрез приложение</string>
<string name="importing">Внасяне…</string>

View File

@@ -4,7 +4,6 @@
<string name="cancel">বাতিল</string>
<string name="unstar">তারা মুক্ত</string>
<string name="star">তারা</string>
<string name="barcodeNoBarcode">কোনো বারকোড নেই</string>
<string name="barcodeType">বারকোড ধরন</string>
<string name="note">বিঃদ্রঃ</string>
<string name="storeName">দোকানের নাম</string>
@@ -99,7 +98,6 @@
<string name="importOptionApplicationExplanation">একটি ফাইল খোলার জন্য যেকোনো অ্যাপ বা আপনার প্রিয় ফাইল ম্যানেজারটি ব্যবহার করুন।</string>
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">মেধাস্বত্ব © 2019<xliff:g>%d</xliff:g> Sylvia van Os</string>
<string name="app_license">কপিলেফট দ্বারা রক্ষা করা মুক্ত সফটওয়্যার, লাইসেন্স করা GPLv3+ এর অধীনে</string>
<string name="enterBarcodeInstructions">আইডিটি লিখুন আর নয় নিচ থেকে একটি বারকোডের প্রকার বা \"কোনো বারকোড নেই\", নির্বাচন করুন।</string>
<plurals name="deleteCardsConfirmation">
<item quantity="one">এই <xliff:g>%d</xliff:g>টি কার্ড কি চিরকালের জন্য মুছে দেবো\?</item>
<item quantity="other">এই <xliff:g>%d</xliff:g>টি কার্ড কি চিরকালের জন্য মুছে দেবো\?</item>

View File

@@ -29,7 +29,6 @@
<string name="storeName">নাম</string>
<string name="note">বিঃদ্রঃ</string>
<string name="star">ফেভারিটে যোগ করুন</string>
<string name="barcodeNoBarcode">কোন বারকোড নেই</string>
<string name="noBarcode">বারকোড নেই</string>
<string name="unstar">পছন্দের তালিকা থেকে অপসারণ</string>
<string name="cancel">বাতিল করুন</string>

View File

@@ -4,7 +4,6 @@
<string name="cancel">Odustani</string>
<string name="unstar">Ukloni sve omiljene</string>
<string name="star">Omiljene</string>
<string name="barcodeNoBarcode">Ne postoji barkod</string>
<string name="barcodeType">Barcode tip</string>
<string name="note">Bilježnica</string>
<string name="storeName">Ime</string>

View File

@@ -59,7 +59,6 @@
<string name="unstar">Odebrat z oblíbených</string>
<string name="star">Přidat do oblíbených</string>
<string name="noBarcode">Žádný čárový kód</string>
<string name="barcodeNoBarcode">Tato karta nemá čárový kód</string>
<string name="barcodeType">Typ čárového kódu</string>
<string name="noMatchingGiftCards">Nic nenalezeno. Zkuste zadat jiný výraz.</string>
<string name="action_search">Hledat</string>
@@ -90,7 +89,6 @@
<string name="expiryStateSentence">Platí do: <xliff:g>%s</xliff:g></string>
<string name="moveDown">Přesunout dolů</string>
<string name="moveUp">Přesunout nahoru</string>
<string name="enterBarcodeInstructions">Zadejte ID a níže vyberte typ čárového kódu nebo klikněte na „Tato karta nemá čárový kód“.</string>
<string name="settings_brown_theme">Hnědá</string>
<string name="settings_grey_theme">Šedá</string>
<string name="settings_green_theme">Zelená</string>

View File

@@ -21,7 +21,6 @@
<string name="unstar">Fjern fra favoritter</string>
<string name="star">Føj til favoritter</string>
<string name="noBarcode">Ingen stregkode</string>
<string name="barcodeNoBarcode">Dette kort har ingen stregkode</string>
<string name="barcodeType">Stregkode type</string>
<string name="cardId">Kort ID</string>
<string name="note">Bemærk</string>
@@ -52,7 +51,6 @@
<string name="starImage">Favorit stjerne</string>
<string name="thumbnailDescription">Miniaturebillede til kort</string>
<string name="copy_to_clipboard_toast">Kort-ID kopieret til udklipsholderen</string>
<string name="enterBarcodeInstructions">Indtast kortets ID, og vælg enten kortets stregkodetype nedenfor, eller \"Dette kort har ingen stregkode\".</string>
<string name="selectBarcodeTitle">Vælg stregkode</string>
<string name="app_copyright_old">Baseret på Loyalty Card Keychain
\ncopyright © 2016-2020 Branden Archer.</string>

View File

@@ -56,13 +56,11 @@
<string name="settings_light_theme">Hell</string>
<string name="settings_system_theme">System</string>
<string name="settings_theme">Farbschema</string>
<string name="enterBarcodeInstructions">Gib die ID ein und wähle unten entweder einen Barcodetyp oder „Es gibt keinen Barcode“.</string>
<string name="app_copyright_old">Basierend auf Loyalty Card Keychain
\nCopyright © 2016-2020 Branden Archer</string>
<string name="exportOptionExplanation">Die Daten werden an einen Ort deiner Wahl geschrieben.</string>
<string name="failedParsingImportUriError">Die Import-URI konnte nicht verarbeitet werden</string>
<string name="share">Teilen</string>
<string name="barcodeNoBarcode">Es gibt keinen Barcode</string>
<string name="barcodeType">Barcodetyp</string>
<string name="starImage">Favoritenstern</string>
<string name="deleteConfirmationGroup">Gruppe löschen?</string>

View File

@@ -56,7 +56,6 @@
<item quantity="other"><xliff:g>%d</xliff:g> επιλέγχθηκαν</item>
</plurals>
<string name="noGiftCardsGroup">Δημιούργησε κάρτες και βάλτες σε αυτή την ομάδα.</string>
<string name="barcodeNoBarcode">Δεν υπάρχει barcode</string>
<string name="addManually">Χειροκίνητη εισαγωγή κωδικού</string>
<string name="never">Ποτέ</string>
<string name="share">Κοινοποίηση</string>
@@ -177,7 +176,6 @@
</plurals>
<string name="app_copyright_old">Βασισμένο στο Loyalty Card Keychain
\nπνευματικά δικαιώματα © 2016-2020 Branden Archer</string>
<string name="enterBarcodeInstructions">Εισάγετε τον κωδικό και διαλέξτε έναν είδος γραμμοκώδικα από κάτω ή \"Δεν υπάρχει γραμμοκώδικας\".</string>
<string name="settings_follow_system_orientation">Ακολούθηση συστήματος</string>
<string name="settings_card_orientation">Προσανατολισμός γραμμοκώδικα</string>
<string name="settings_portrait_orientation">Πορτραίτο</string>

View File

@@ -1,6 +1,5 @@
<?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="barcodeNoBarcode">Strekokodo mankas al karto</string>
<string name="delete">Forigi</string>
<string name="noBarcode">Sen strekokodo</string>
<string name="barcodeType">Tipo de strekokodo</string>

View File

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

View File

@@ -49,13 +49,11 @@
<string name="settings_light_theme">Claro</string>
<string name="settings_system_theme">Sistema</string>
<string name="settings_theme">Tema</string>
<string name="enterBarcodeInstructions">Introduzca el código, y elija un tipo de código de barras a continuación, o «No hay código de barras».</string>
<string name="app_copyright_old">Basado en Loyalty Card Keychain
\nderechos de autor © 2016-2020 de Branden Archer</string>
<string name="exportOptionExplanation">Los datos se guardarán en la ubicación que elija.</string>
<string name="failedParsingImportUriError">No se pudo procesar el URI de importación</string>
<string name="share">Compartir</string>
<string name="barcodeNoBarcode">No hay código de barras</string>
<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>

View File

@@ -75,7 +75,6 @@
<string name="starImage">Suosikkitähti</string>
<string name="thumbnailDescription">Pienoiskuva</string>
<string name="copy_to_clipboard_toast">ID-tunnus kopioitu leikepöydälle</string>
<string name="enterBarcodeInstructions">Syötä ID-tunnus ja valitse sen viivakoodityyppi, tai valitse \"Ei viivakoodia\".</string>
<string name="selectBarcodeTitle">Valitse viivakoodi</string>
<string name="app_resources">Vapaat kolmannen osapuolen resurssit: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_libraries">Vapaat kolmannen osapuolen kirjastot: <xliff:g id="app_libraries_list">%s</xliff:g></string>
@@ -124,7 +123,6 @@
<string name="unstar">Poista suosikeista</string>
<string name="star">Lisää suosikkeihin</string>
<string name="noBarcode">Ei viivakoodia</string>
<string name="barcodeNoBarcode">Viivakoodia ei ole</string>
<string name="barcodeType">Viivakoodin tyyppi</string>
<string name="cardId">Kortin ID-tunnus</string>
<string name="note">Lisätieto</string>

View File

@@ -52,13 +52,11 @@
<string name="settings_light_theme">Clair</string>
<string name="settings_system_theme">Système</string>
<string name="settings_theme">Thème</string>
<string name="enterBarcodeInstructions">Entrez lidentifiant, et choisissez un type de code-barres ci-dessous, ou « Il ny a pas de code-barres ».</string>
<string name="app_copyright_old">Basé sur Loyalty Card Keychain
\ncopyright © 2016-2020 Branden Archer</string>
<string name="exportOptionExplanation">Les données seront exportées vers lemplacement de votre choix.</string>
<string name="failedParsingImportUriError">Impossible danalyser lURI dimportation</string>
<string name="share">Partager</string>
<string name="barcodeNoBarcode">Il ny a pas de code-barres</string>
<string name="barcodeType">Type de code-barres</string>
<string name="noMatchingGiftCards">Aucun résultat. Essayez de modifier votre recherche.</string>
<string name="action_search">Rechercher</string>

View File

@@ -27,7 +27,6 @@
<string name="failedParsingImportUriError">נתיב לא נמצא</string>
<string name="noMatchingGiftCards">אין תוצאות. נסה חיפוש אחר.</string>
<string name="storeName">שם חנות</string>
<string name="barcodeNoBarcode">אין ברקוד</string>
<string name="delete">מחיקה</string>
<string name="confirm">אישור</string>
<string name="deleteTitle">מחק כרטיס</string>

View File

@@ -68,7 +68,6 @@
<string name="importOptionApplicationExplanation">फाइल खोलने के लिए कोई भी ऐप या अपना पसंदिता फाइल मैनेजर का इस्तेमाल करे।</string>
<string name="settings_theme">विषय</string>
<string name="barcodeType">बारकोड का प्रकार</string>
<string name="barcodeNoBarcode">कोई बारकोड नहीं है</string>
<string name="noBarcode">बारकोड नहीं है</string>
<string name="copy_to_clipboard">पहचान पत्र(आई डी) को क्लिपबोर्ड में कॉपी करें</string>
<string name="scanCardBarcode">बारकोड स्कैन करें</string>
@@ -77,7 +76,6 @@
<string name="importExportHelp">तथ्य (डाटा) को बैकअप करना हमें उसे दूसरे डिवाइस में भेजने देता है|</string>
<string name="barcodeImageDescriptionWithType"><xliff:g>%s</xliff:g> का बारकोड</string>
<string name="settings_disable_lockscreen_while_viewing_card">स्क्रीन को लॉक होने से रोकें</string>
<string name="enterBarcodeInstructions">अपनी आई डी लिखें तथा या तो बारकोड प्रकार चुनें, या फिर कोई बारकोड नहीं है चुनें|</string>
<string name="settings_lock_on_opening_orientation">कार्ड खोलते समय प्रयोग करि गयी अवस्था को प्रतिबन्ध करें</string>
<string name="intent_import_card_from_url_share_text">मैं तुम्हें एक कार्ड भेजना चाहता हूँ</string>
<string name="selectBarcodeTitle">बारकोड चुनें</string>

View File

@@ -25,7 +25,6 @@
<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="noCardExistsError">Nije bilo moguće pronaći tu karticu</string>
@@ -134,7 +133,6 @@
<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>

View File

@@ -14,7 +14,6 @@
<string name="note">Feljegyzés</string>
<string name="cardId">Kártyaazonosító</string>
<string name="barcodeType">Vonalkód típusa</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 kedvencekből</string>
@@ -87,7 +86,6 @@
<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="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="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>

View File

@@ -26,7 +26,6 @@
<string name="editCardTitle">Ubah Kartu</string>
<string name="addCardTitle">Tambah Kartu</string>
<string name="scanCardBarcode">Pindai Barcode</string>
<string name="barcodeNoBarcode">Tidak ada barcode</string>
<string name="cancel">Batalkan</string>
<string name="importExport">Impor/Ekspor</string>
<string name="settings_theme">Tema</string>
@@ -106,7 +105,6 @@
<string name="debug_version_fmt">Versi: <xliff:g id="version">%s</xliff:g></string>
<string name="app_libraries">Pustaka pihak ketiga gratis: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_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>
<string name="copy_to_clipboard_toast">ID disalin ke papan klip</string>
<string name="thumbnailDescription">Gambar tampilan</string>
<string name="starImage">Favorit</string>

View File

@@ -10,7 +10,6 @@
<string name="cancel">Hætta</string>
<string name="noMatchingGiftCards">Engar niðurstöður. Prófaðu að breyta leitarorði.</string>
<string name="storeName">Nafnið</string>
<string name="barcodeNoBarcode">Þetta kort hefur ekki strikamerkið</string>
<string name="star">Bæta við eftirlæti</string>
<string name="unstar">Fjarlægja frá eftirlæti</string>
<string name="save">Sparaðu</string>

View File

@@ -7,7 +7,6 @@
<string name="storeName">Nome</string>
<string name="note">Note</string>
<string name="cardId">Codice</string>
<string name="barcodeNoBarcode">Non c\'è un codice a barre</string>
<string name="cancel">Annulla</string>
<string name="save">Salva</string>
<string name="edit">Modifica</string>
@@ -46,7 +45,6 @@
<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="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>
<string name="thumbnailDescription">Miniatura</string>
<string name="settings">Impostazioni</string>

View File

@@ -63,7 +63,6 @@
<string name="starImage">お気に入りのスター</string>
<string name="thumbnailDescription">サムネイル</string>
<string name="copy_to_clipboard_toast">カード番号をクリップボードにコピーしました</string>
<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="debug_version_fmt">Version: <xliff:g id="version">%s</xliff:g></string>
@@ -115,7 +114,6 @@
<string name="unstar">お気に入りから削除</string>
<string name="star">お気に入りに追加</string>
<string name="noBarcode">バーコードなし</string>
<string name="barcodeNoBarcode">バーコードなし</string>
<string name="barcodeType">バーコード形式</string>
<string name="cardId">カード番号</string>
<string name="note">メモ</string>

View File

@@ -12,7 +12,6 @@
<string name="settings_system_theme">시스템</string>
<string name="settings_theme">테마</string>
<string name="settings">설정</string>
<string name="enterBarcodeInstructions">ID를 입력하고 아래에서 바코드 유형을 선택하거나 \"바코드가 없습니다\"를 선택하십시오.</string>
<string name="selectBarcodeTitle">바코드 선택</string>
<string name="about">정보</string>
<string name="exporting">내보내는 중…</string>
@@ -36,7 +35,6 @@
<string name="unstar">즐겨찾기에서 제거</string>
<string name="star">즐겨찾기에 추가</string>
<string name="noBarcode">바코드 없음</string>
<string name="barcodeNoBarcode">바코드가 없습니다</string>
<string name="barcodeType">바코드 형식</string>
<string name="cardId">카드 ID</string>
<string name="note">노트</string>

View File

@@ -46,7 +46,6 @@
<string name="exportPasswordHint">Passwuert aginn</string>
<string name="noMatchingGiftCards">Ech hunn näischt fonnt. Probéieren Iech, Är Sich ze änneren.</string>
<string name="note">Beuechten</string>
<string name="barcodeNoBarcode">Dës Kaart huet kee Barcode</string>
<string name="importExportHelp">Wann Dir Är Kaarten sécheren, kënnen Si se op een anert Instrument réckelen.</string>
<string name="about">Iwwer</string>
<string name="selectBarcodeTitle">Wielt Barcode</string>
@@ -63,7 +62,6 @@
<string name="importOptionApplicationExplanation">Benotzen Se eng beliebige App oder Hire bevorzugten Dateimanager, fir eng Datei ze opmaachen.</string>
<string name="accept">Averstane</string>
<string name="settings_display_barcode_max_brightness">Erhellen barcode-Usiicht</string>
<string name="enterBarcodeInstructions">Gitt d \' Kaarten-ID en an wielen Se entweder den Barcode-Typ ënnen oder \"Dës Kaart huet kee Barcode\".</string>
<string name="importStocard">Importéieren vun Stocard</string>
<string name="importLoyaltyCardKeychain">Import vun Loyalty Card Keychain</string>
<string name="setBarcodeId">Leeë Si barcode-Wäert</string>

View File

@@ -33,7 +33,6 @@
<string name="unstar">Pašalinti iš mėgstamiausių</string>
<string name="star">Pridėti prie mėgstamiausių</string>
<string name="noBarcode">Nėra brūkšninio kodo</string>
<string name="barcodeNoBarcode">Brūkšninio kodo nėra</string>
<string name="barcodeType">Brūkšninio kodo tipas</string>
<string name="noMatchingGiftCards">Rezultatų nėra. Pabandykite pakeisti paiešką.</string>
<string name="action_search">Ieškoti</string>
@@ -128,7 +127,6 @@
<string name="settings">Nustatymai</string>
<string name="starImage">Mėgstamiausia žvaigždė</string>
<string name="thumbnailDescription">Miniatiūra</string>
<string name="enterBarcodeInstructions">Įveskite ID ir toliau pasirinkite brūkšninio kodo tipą arba \"Nėra brūkšninio kodo\".</string>
<string name="app_resources">Laisvosios trečiųjų šalių ištekliai: <xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_libraries">Laisvosios trečiųjų šalių bibliotekos: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_copyright_old">Paremta Loyalty Card Keychain

View File

@@ -7,7 +7,6 @@
<string name="storeName">Nosaukums</string>
<string name="note">Piezīme</string>
<string name="barcodeType">Svītrkoda tips</string>
<string name="barcodeNoBarcode">Bez svītrkoda</string>
<string name="noBarcode">Nav svītrkoda</string>
<string name="star">Pievienot izlasei</string>
<string name="unstar">Noņemt no izlases</string>
@@ -95,7 +94,6 @@
<string name="translate_platform">vietnē Weblate</string>
<string name="starred">Izlase</string>
<string name="cardId">Kartes numurs</string>
<string name="enterBarcodeInstructions">Ievadiet kartes numuru un izvēlieties svītrkoda tipu (vai izvēlieties \"bez svītrkoda\").</string>
<plurals name="deleteCardsConfirmation">
<item quantity="zero">Neatgriezeniski dzēst šīs <xliff:g>%d</xliff:g> kartes\?</item>
<item quantity="one">Neatgriezeniski dzēst šo <xliff:g>%d</xliff:g> karti\?</item>

View File

@@ -43,7 +43,6 @@
<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="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>
<string name="thumbnailDescription">Miniatyrbilde</string>
<string name="settings">Innstillinger</string>
@@ -59,7 +58,6 @@
\nopphavsrett 20162020 Branden Archer</string>
<string name="failedParsingImportUriError">Kunne ikke tolke importerings-URI</string>
<string name="share">Del</string>
<string name="barcodeNoBarcode">Det er ingen strekkode</string>
<string name="noMatchingGiftCards">Ingen resultater. Prøv å endre søket.</string>
<string name="action_search">Søk</string>
<string name="starImage">Favorittstjerne</string>

View File

@@ -8,7 +8,6 @@
<string name="note">Aantekening</string>
<string name="cardId">Kaartnummer</string>
<string name="barcodeType">Soort barcode</string>
<string name="barcodeNoBarcode">Er is geen barcode</string>
<string name="cancel">Annuleren</string>
<string name="save">Opslaan</string>
<string name="edit">Bewerken</string>
@@ -48,7 +47,6 @@
<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="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>
<string name="thumbnailDescription">Miniatuurvoorbeeld</string>
<string name="settings">Instellingen</string>

View File

@@ -41,7 +41,6 @@
</plurals>
<string name="deleteTitle">Suprimir la carta</string>
<string name="noBarcode">Cap de còdi de barras</string>
<string name="barcodeNoBarcode">Cap de còdi de barras</string>
<plurals name="selectedCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> seleccionada</item>
<item quantity="other"><xliff:g>%d</xliff:g> seleccionadas</item>

View File

@@ -7,7 +7,6 @@
<string name="storeName">Nazwa</string>
<string name="note">Notatka</string>
<string name="cardId">Identyfikator karty</string>
<string name="barcodeNoBarcode">Bez kodu kreskowego</string>
<string name="cancel">Anuluj</string>
<string name="save">Zapisz</string>
<string name="edit">Edytuj</string>
@@ -46,7 +45,6 @@
<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="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>
<string name="thumbnailDescription">Miniaturka</string>
<string name="settings">Ustawienia</string>

View File

@@ -8,7 +8,6 @@
<string name="storeName">Nome</string>
<string name="note">Nota</string>
<string name="barcodeType">Tipo de código de barras</string>
<string name="barcodeNoBarcode">Não há código de barras</string>
<string name="cancel">Cancelar</string>
<string name="save">Guardar</string>
<string name="edit">Editar</string>
@@ -61,7 +60,6 @@
<string name="settings_light_theme">Claro</string>
<string name="settings_dark_theme">Escuro</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>
<string name="thumbnailDescription">Miniatura</string>
<string name="starImage">Favorito</string>

View File

@@ -21,7 +21,6 @@
<string name="unstar">Eliminați din favorite</string>
<string name="star">Adaugă la favorite</string>
<string name="noBarcode">Fără cod de bare</string>
<string name="barcodeNoBarcode">Nu există cod de bare</string>
<string name="moveDown">Mutarea în jos</string>
<string name="card">Cardul</string>
<string name="settings_theme">Tema</string>
@@ -50,7 +49,6 @@
<string name="importOptionApplicationExplanation">Utilizați orice aplicație sau managerul de fișiere preferat pentru a deschide un fișier.</string>
<string name="about">Despre</string>
<string name="app_license">Software liber cu copyleft, licențiat GPLv3+</string>
<string name="enterBarcodeInstructions">Introduceți ID-ul cardului și alegeți fie tipul de cod de bare de mai jos, fie \"Acest card nu are cod de bare\".</string>
<string name="settings_system_theme">Sistemul</string>
<string name="settings_light_theme">Lumină</string>
<string name="settings_dark_theme">Întuneric</string>

View File

@@ -8,7 +8,6 @@
<string name="note">Примечание</string>
<string name="cardId">Номер карты</string>
<string name="barcodeType">Тип штрих-кода</string>
<string name="barcodeNoBarcode">Нет штрих-кода</string>
<string name="cancel">Отмена</string>
<string name="save">Сохранить</string>
<string name="edit">Изменить</string>
@@ -48,7 +47,6 @@
<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="selectBarcodeTitle">Выбор штрих-кода</string>
<string name="enterBarcodeInstructions">Введите номер и выберите тип штрих-кода (или выберите \"Нет штрих-кода\").</string>
<string name="copy_to_clipboard_toast">Номер скопирован в буфер обмена</string>
<string name="thumbnailDescription">Логотип</string>
<string name="settings">Настройки</string>

View File

@@ -49,7 +49,6 @@
<string name="deleteConfirmation">Naozaj chcete túto kartu odstrániť?</string>
<string name="star">Pridať k obľúbeným</string>
<string name="noBarcode">Žiadny čiarový kód</string>
<string name="barcodeNoBarcode">Čiarový kód nie je k dispozícii</string>
<string name="barcodeType">Typ čiarových kódov</string>
<string name="noMatchingGiftCards">Žiadne výsledky. Skúste zmeniť vyhľadávanie.</string>
<string name="action_search">Vyhľadávanie</string>
@@ -87,7 +86,6 @@
<string name="settings_system_theme">Systém</string>
<string name="settings_theme">Téma</string>
<string name="starImage">Obľúbená hviezda</string>
<string name="enterBarcodeInstructions">Zadajte ID a vyberte typ čiarového kódu nižšie alebo \"Nie je tu žiadny čiarový kód\".</string>
<string name="exportOptionExplanation">Údaje sa zapíšu na vami zvolené miesto.</string>
<string name="failedParsingImportUriError">Nepodarilo sa analyzovať import URI</string>
<string name="share">Zdieľať</string>

View File

@@ -66,7 +66,6 @@
<string name="intent_import_card_from_url_share_text">Z vami želim deliti kartico</string>
<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_dark_theme">Temno</string>
<string name="settings_light_theme">Svetlo</string>
<string name="settings_system_theme">Sistem</string>
@@ -81,7 +80,6 @@
<string name="unstar">Odstrani iz priljubljenih</string>
<string name="star">Dodaj med priljubljene</string>
<string name="noBarcode">Brez črtne kode</string>
<string name="barcodeNoBarcode">Ni črtne kode</string>
<string name="barcodeType">Vrsta črtne kode</string>
<string name="noMatchingGiftCards">Brez rezultata iskanja. Poskusite spremeniti iskalni niz.</string>
<string name="action_search">Iskanje</string>

View File

@@ -2,7 +2,6 @@
<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_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.
\nSkapa den från din FidMe-profil först genom att välja \"Data Protection\" och sen trycka på \"Extract my data\".</string>
<string name="importOptionApplicationExplanation">Använd vilken app som helst eller den filhanterare du föredrar för att öppna en fil.</string>
@@ -125,7 +124,6 @@
<string name="unstar">Ta bort från favoriter</string>
<string name="star">Lägg till i favoriter</string>
<string name="noBarcode">Ingen streckkod</string>
<string name="barcodeNoBarcode">Det finns ingen streckkod</string>
<string name="barcodeType">Streckkodstyp</string>
<string name="cardId">Kort-ID</string>
<string name="storeName">Namn</string>

View File

@@ -103,7 +103,6 @@
<string name="starImage">Sık kullanılan yıldız</string>
<string name="thumbnailDescription">Küçük resim</string>
<string name="copy_to_clipboard_toast">Numara panoya kopyalandı</string>
<string name="enterBarcodeInstructions">Numarasını girin ve aşağıdan barkod türünü veya “Barkod yok” seçeneğini seçin.</string>
<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>
@@ -164,7 +163,6 @@
<string name="unstar">Sık kullanılanlardan kaldır</string>
<string name="star">Sık kullanılanlara ekle</string>
<string name="noBarcode">Barkod yok</string>
<string name="barcodeNoBarcode">Barkod yok</string>
<string name="barcodeType">Barkod türü</string>
<string name="note">Not</string>
<string name="storeName">Ad</string>

View File

@@ -5,11 +5,9 @@
\nЖОДНОЇ ІНФОРМАЦІЇ НЕ ЗБИРАЄТЬСЯ, що може підтвердити будь-хто, адже наш застосунок це вільне програмне забезпечення.</string>
<string name="noGiftCards">Натисніть кнопку +, щоб додати картку, або ⋮ для імпорту з меню.</string>
<string name="settings_display_barcode_max_brightness">Яскравіший штрих-код</string>
<string name="enterBarcodeInstructions">Введіть ID та оберіть тип штрих-коду чи \"Штрих-код відсутній\".</string>
<string name="selectBarcodeTitle">Оберіть штрих-код</string>
<string name="scanCardBarcode">Відсканувати штрих-код</string>
<string name="noBarcode">Без штрих-коду</string>
<string name="barcodeNoBarcode">Штрих-код відсутній</string>
<string name="barcodeType">Тип штрих-коду</string>
<plurals name="groupCardCount">
<item quantity="one"><xliff:g>%d</xliff:g> картка</item>

View File

@@ -75,7 +75,6 @@
<string name="settings">设置</string>
<string name="thumbnailDescription">缩略图</string>
<string name="copy_to_clipboard_toast">已复制卡号到剪贴板</string>
<string name="enterBarcodeInstructions">输入卡号,并从下面选择其条码类型,或选择“无条码”。</string>
<string name="selectBarcodeTitle">选择条码</string>
<string name="app_resources">第三方自由资源:<xliff:g id="app_resources_list">%s</xliff:g></string>
<string name="app_license">本软件为自由软件,使用 GPLv3+ 许可证</string>
@@ -119,7 +118,6 @@
<string name="cancel">取消</string>
<string name="star">添加到收藏</string>
<string name="noBarcode">无条形码</string>
<string name="barcodeNoBarcode">无可用条形码</string>
<string name="barcodeType">条形码类型</string>
<string name="cardId">卡号</string>
<string name="note">备注</string>

View File

@@ -8,7 +8,6 @@
<string name="note">註記</string>
<string name="cardId">卡片 ID</string>
<string name="barcodeType">條碼種類</string>
<string name="barcodeNoBarcode">沒有可用的條碼</string>
<string name="noBarcode">無條碼</string>
<string name="privacy_policy_popup_text">隱私權政策(某些應用程式商店需要此條目):
\n
@@ -50,7 +49,6 @@
<string name="editBarcode">編輯條碼</string>
<string name="editCardTitle">編輯圖片</string>
<string name="enter_group_name">輸入群組名稱</string>
<string name="enterBarcodeInstructions">輸入 ID、選擇條碼種類、或選擇「此卡片沒有可用的條碼」。</string>
<string name="errorReadingImage">無法讀取此圖片</string>
<string name="expiryDate">逾期日期</string>
<string name="expiryStateSentence">逾期於:<xliff:g>%s</xliff:g></string>

View File

@@ -13,7 +13,6 @@
<string name="note">Note</string>
<string name="cardId">Card ID</string>
<string name="barcodeType">Barcode type</string>
<string name="barcodeNoBarcode">There is no barcode</string>
<string name="noBarcode">No barcode</string>
<string name="star">Add to favorites</string>
<string name="unstar">Remove from favorites</string>
@@ -86,7 +85,6 @@
<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>
<string name="enterBarcodeInstructions">Enter the ID, and either pick a barcode type below, or “There is no barcode”.</string>
<string name="copy_to_clipboard_toast">ID copied to clipboard</string>
<string name="thumbnailDescription">Thumbnail</string>
<string name="starImage">Favorite star</string>
@@ -157,8 +155,8 @@
<string name="moveDown">Move downwards</string>
<string name="leaveWithoutSaveTitle">Exit</string>
<string name="leaveWithoutSaveConfirmation">Leave without saving?</string>
<string name="addManually">Manually enter ID</string>
<string name="addFromImage">Select image from gallery</string>
<string name="addManually">Enter the barcode manually</string>
<string name="addFromImage">Select an image from gallery</string>
<string name="groupsList">Groups: <xliff:g>%s</xliff:g></string>
<string name="editGroup">Editing Group: <xliff:g>%s</xliff:g></string>
<string name="expiryStateSentence">Expires: <xliff:g>%s</xliff:g></string>
@@ -331,5 +329,11 @@
<string name="action_display_options">Display options</string>
<string name="show_archived_cards">Show archived cards</string>
<string name="view_online">View online</string>
<string name="action_more_options">More options</string>
<string name="addWithoutBarcode">Add a card with no barcode</string>
<string name="enter_card_id">Enter the ID number or text on your card</string>
<string name="card_id_must_not_be_empty">Card ID must not be empty</string>
<string name="add_a_card_in_a_different_way">Add a card in a different way</string>
<string name="field_must_not_be_empty">Field must not be empty</string>
<string name="manually_enter_barcode_instructions">Enter the ID number or text on your card and press the barcode that looks like the one on your card.</string>
</resources>

View File

@@ -30,72 +30,8 @@ public class BarcodeSelectorActivityTest {
Activity activity = (Activity) activityController.get();
final TextView cardId = activity.findViewById(R.id.cardId);
final Button noBarcodeButton = activity.findViewById(R.id.noBarcode);
// No card ID by default
assertEquals(cardId.getText().toString(), "");
// Button should be visible but disabled
assertEquals(View.VISIBLE, noBarcodeButton.getVisibility());
assertEquals(false, noBarcodeButton.isEnabled());
}
@Test
public void nonEmptyStateTest() throws InterruptedException {
ActivityController activityController = Robolectric.buildActivity(BarcodeSelectorActivity.class).create();
activityController.start();
activityController.resume();
Activity activity = (Activity) activityController.get();
final TextView cardId = activity.findViewById(R.id.cardId);
final Button noBarcodeButton = activity.findViewById(R.id.noBarcode);
cardId.setText("abcdefg");
// Run the delayed Handler
ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
// Button should be visible and enabled
assertEquals(View.VISIBLE, noBarcodeButton.getVisibility());
assertTrue(noBarcodeButton.isEnabled());
// Clicking button should create "empty" barcode
activity.findViewById(R.id.noBarcode).performClick();
Intent resultIntent = shadowOf(activity).getResultIntent();
// The BarcodeSelectorActivity should return an empty string
assertEquals("", resultIntent.getStringExtra(BarcodeSelectorActivity.BARCODE_FORMAT));
assertEquals("abcdefg", resultIntent.getStringExtra(BarcodeSelectorActivity.BARCODE_CONTENTS));
}
@Test
public void nonEmptyToEmptyStateTest() throws InterruptedException {
ActivityController activityController = Robolectric.buildActivity(BarcodeSelectorActivity.class).create();
activityController.start();
activityController.resume();
Activity activity = (Activity) activityController.get();
final TextView cardId = activity.findViewById(R.id.cardId);
final Button noBarcodeButton = activity.findViewById(R.id.noBarcode);
cardId.setText("abcdefg");
// Run the delayed Handler
ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
// Button should be visible and enabled
assertEquals(View.VISIBLE, noBarcodeButton.getVisibility());
assertTrue(noBarcodeButton.isEnabled());
cardId.setText("");
// Run the delayed Handler
ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
// Button should be visible but disabled
assertEquals(View.VISIBLE, noBarcodeButton.getVisibility());
assertFalse(noBarcodeButton.isEnabled());
}
}