mirror of
https://github.com/CatimaLoyalty/Android.git
synced 2025-12-24 15:47:53 -05:00
Compare commits
62 Commits
group_db_i
...
v2.22.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
510995a5c5 | ||
|
|
a039d5de9e | ||
|
|
df11bd8f69 | ||
|
|
17c80573bd | ||
|
|
bc71c02e87 | ||
|
|
d892fe40ba | ||
|
|
06839f6ddb | ||
|
|
ee57703ffc | ||
|
|
e780f5fb87 | ||
|
|
6b9a0a0696 | ||
|
|
6653a940ed | ||
|
|
47821752f0 | ||
|
|
bf05bd7e56 | ||
|
|
2dd622b9c4 | ||
|
|
643527a7fb | ||
|
|
0aae4c9c64 | ||
|
|
14c5b756f7 | ||
|
|
ded3c63ec5 | ||
|
|
e3a22e425b | ||
|
|
275d387f3c | ||
|
|
fbbad75c15 | ||
|
|
a55e9da067 | ||
|
|
a5116395c8 | ||
|
|
5cf41ed664 | ||
|
|
bbde3ec3b8 | ||
|
|
db56d56e3b | ||
|
|
f4c0628366 | ||
|
|
1e6641a884 | ||
|
|
b9bd3f5967 | ||
|
|
28eaac0c67 | ||
|
|
5690ca03e7 | ||
|
|
71f7b21112 | ||
|
|
f9ece83f2b | ||
|
|
3bab0f43eb | ||
|
|
941fa929dd | ||
|
|
46846d2448 | ||
|
|
7b7c1b88b9 | ||
|
|
0926bb71e1 | ||
|
|
cfc4ce7c3c | ||
|
|
1f217dd846 | ||
|
|
6c74b95e90 | ||
|
|
9fca77d561 | ||
|
|
1f0873aab4 | ||
|
|
ca3a09740a | ||
|
|
c104de839e | ||
|
|
0f4380c1e2 | ||
|
|
64e3b047d9 | ||
|
|
729639e0e6 | ||
|
|
3e79147673 | ||
|
|
59a656c422 | ||
|
|
bdf8994fed | ||
|
|
3aa595083b | ||
|
|
37f1183208 | ||
|
|
839496aa04 | ||
|
|
4a7a6b109c | ||
|
|
2b2d5ca7cf | ||
|
|
463af746fa | ||
|
|
d75b79fce4 | ||
|
|
2ec29da6b1 | ||
|
|
e80bebe887 | ||
|
|
1555b3b24b | ||
|
|
12f42f86a5 |
@@ -1,8 +1,13 @@
|
||||
# Changelog
|
||||
|
||||
## Unreleased - 118
|
||||
## v2.22.1 - 119
|
||||
|
||||
- Use Material You colours on more devices (Google library update)
|
||||
|
||||
## v2.22.0 - 118
|
||||
|
||||
- Support setting start of card validity
|
||||
- Fix Stocard import (Stocard's export format changed)
|
||||
|
||||
## v2.21.2 - 117
|
||||
|
||||
|
||||
@@ -19,8 +19,8 @@ android {
|
||||
applicationId "me.hackerchick.catima"
|
||||
minSdk 21
|
||||
targetSdk 33
|
||||
versionCode 117
|
||||
versionName "2.21.2"
|
||||
versionCode 119
|
||||
versionName "2.22.1"
|
||||
|
||||
vectorDrawables.useSupportLibrary true
|
||||
multiDexEnabled true
|
||||
@@ -58,9 +58,6 @@ android {
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
lintConfig file("lint.xml")
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
test {
|
||||
@@ -80,18 +77,22 @@ android {
|
||||
includeAndroidResources true
|
||||
}
|
||||
}
|
||||
lint {
|
||||
lintConfig file('lint.xml')
|
||||
}
|
||||
namespace 'protect.card_locker'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// AndroidX
|
||||
implementation 'androidx.appcompat:appcompat:1.6.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.6.1'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||
implementation 'androidx.exifinterface:exifinterface:1.3.5'
|
||||
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.6.1'
|
||||
implementation 'com.google.android.material:material:1.8.0'
|
||||
implementation 'com.github.yalantis:ucrop:2.2.8'
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.6'
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
|
||||
|
||||
// Splash Screen
|
||||
implementation 'androidx.core:core-splashscreen:1.0.0'
|
||||
@@ -110,7 +111,7 @@ dependencies {
|
||||
// Testing
|
||||
testImplementation 'androidx.test:core:1.5.0'
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
testImplementation 'org.robolectric:robolectric:4.9.2'
|
||||
testImplementation 'org.robolectric:robolectric:4.10'
|
||||
}
|
||||
|
||||
tasks.withType(SpotBugsTask) {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="protect.card_locker">
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<uses-sdk tools:overrideLibrary="com.google.zxing.client.android" />
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package protect.card_locker;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -69,10 +68,9 @@ public class CardsOnPowerScreenService extends ControlsProviderService {
|
||||
subscriber.onSubscribe(new NoOpSubscription());
|
||||
for (String controlId : controlIds) {
|
||||
Control control;
|
||||
|
||||
try {
|
||||
Integer cardId = this.controlIdToCardId(controlId);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, cardId);
|
||||
Integer cardId = this.controlIdToCardId(controlId);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, cardId);
|
||||
if (card != null) {
|
||||
Intent openIntent = new Intent(this, LoyaltyCardViewActivity.class)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
.putExtra("id", card.id);
|
||||
@@ -85,7 +83,7 @@ public class CardsOnPowerScreenService extends ControlsProviderService {
|
||||
.setControlTemplate(new StatelessTemplate(controlId))
|
||||
.setCustomIcon(Icon.createWithBitmap(getIcon(this, card)))
|
||||
.build();
|
||||
} catch (NullPointerException ignored) {
|
||||
} else {
|
||||
Intent mainScreenIntent = new Intent(this, MainActivity.class)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), -1, mainScreenIntent, PendingIntent.FLAG_IMMUTABLE);
|
||||
|
||||
@@ -123,7 +123,7 @@ public class ImportURIHelper {
|
||||
}
|
||||
|
||||
return new LoyaltyCard(-1, store, note, validFrom, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, 0, Utils.getUnixTime(), 100, 0);
|
||||
} catch (NullPointerException | NumberFormatException | UnsupportedEncodingException | ArrayIndexOutOfBoundsException ex) {
|
||||
} catch (NumberFormatException | UnsupportedEncodingException | ArrayIndexOutOfBoundsException ex) {
|
||||
throw new InvalidObjectException("Not a valid import URI");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -375,18 +375,28 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
// Start of active tab logic
|
||||
updateTabGroups(groupsTabLayout);
|
||||
|
||||
// Restore settings from Shared Preference
|
||||
// Restore selected tab from Shared Preference
|
||||
SharedPreferences activeTabPref = getApplicationContext().getSharedPreferences(
|
||||
getString(R.string.sharedpreference_active_tab),
|
||||
Context.MODE_PRIVATE);
|
||||
selectedTab = activeTabPref.getInt(getString(R.string.sharedpreference_active_tab), 0);
|
||||
|
||||
// Restore sort preferences from Shared Preferences
|
||||
// If one of the sorting prefererences has never been set or is set to an invalid value,
|
||||
// stick to the defaults.
|
||||
SharedPreferences sortPref = getApplicationContext().getSharedPreferences(
|
||||
getString(R.string.sharedpreference_sort),
|
||||
Context.MODE_PRIVATE);
|
||||
try {
|
||||
mOrder = DBHelper.LoyaltyCardOrder.valueOf(sortPref.getString(getString(R.string.sharedpreference_sort_order), null));
|
||||
mOrderDirection = DBHelper.LoyaltyCardOrderDirection.valueOf(sortPref.getString(getString(R.string.sharedpreference_sort_direction), null));
|
||||
} catch (IllegalArgumentException | NullPointerException ignored) {
|
||||
|
||||
String orderString = sortPref.getString(getString(R.string.sharedpreference_sort_order), null);
|
||||
String orderDirectionString = sortPref.getString(getString(R.string.sharedpreference_sort_direction), null);
|
||||
|
||||
if (orderString != null && orderDirectionString != null) {
|
||||
try {
|
||||
mOrder = DBHelper.LoyaltyCardOrder.valueOf(orderString);
|
||||
mOrderDirection = DBHelper.LoyaltyCardOrderDirection.valueOf(orderDirectionString);
|
||||
} catch (IllegalArgumentException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
mGroup = null;
|
||||
@@ -520,38 +530,41 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
|
||||
// Check if an image was shared to us
|
||||
if (Intent.ACTION_SEND.equals(receivedAction)) {
|
||||
if (receivedType.startsWith("image/")) {
|
||||
BarcodeValues barcodeValues;
|
||||
try {
|
||||
Bitmap bitmap;
|
||||
try {
|
||||
Uri data = intent.getParcelableExtra(Intent.EXTRA_STREAM);
|
||||
bitmap = Utils.retrieveImageFromUri(this, data);
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "Error getting data from image file");
|
||||
e.printStackTrace();
|
||||
Toast.makeText(this, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
barcodeValues = Utils.getBarcodeFromBitmap(bitmap);
|
||||
|
||||
if (barcodeValues.isEmpty()) {
|
||||
Log.i(TAG, "No barcode found in image file");
|
||||
Toast.makeText(this, R.string.noBarcodeFound, Toast.LENGTH_LONG).show();
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
} catch (NullPointerException e) {
|
||||
Toast.makeText(this, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
processBarcodeValues(barcodeValues, null);
|
||||
} else {
|
||||
if (!receivedType.startsWith("image/")) {
|
||||
Log.e(TAG, "Wrong mime-type");
|
||||
return;
|
||||
}
|
||||
|
||||
BarcodeValues barcodeValues;
|
||||
Bitmap bitmap;
|
||||
|
||||
Uri data = intent.getParcelableExtra(Intent.EXTRA_STREAM);
|
||||
if (data == null) {
|
||||
Toast.makeText(this, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
bitmap = Utils.retrieveImageFromUri(this, data);
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "Error getting data from image file");
|
||||
e.printStackTrace();
|
||||
Toast.makeText(this, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
barcodeValues = Utils.getBarcodeFromBitmap(bitmap);
|
||||
|
||||
if (barcodeValues.isEmpty()) {
|
||||
Log.i(TAG, "No barcode found in image file");
|
||||
Toast.makeText(this, R.string.noBarcodeFound, Toast.LENGTH_LONG).show();
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
processBarcodeValues(barcodeValues, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -194,27 +194,22 @@ public class ScanActivity extends CatimaAppCompatActivity {
|
||||
private void handleActivityResult(int requestCode, int resultCode, Intent intent) {
|
||||
super.onActivityResult(requestCode, resultCode, intent);
|
||||
|
||||
BarcodeValues barcodeValues;
|
||||
BarcodeValues barcodeValues = Utils.parseSetBarcodeActivityResult(requestCode, resultCode, intent, this);
|
||||
|
||||
try {
|
||||
barcodeValues = Utils.parseSetBarcodeActivityResult(requestCode, resultCode, intent, this);
|
||||
} catch (NullPointerException e) {
|
||||
Toast.makeText(this, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
|
||||
if (barcodeValues.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!barcodeValues.isEmpty()) {
|
||||
Intent manualResult = new Intent();
|
||||
Bundle manualResultBundle = new Bundle();
|
||||
manualResultBundle.putString(BarcodeSelectorActivity.BARCODE_CONTENTS, barcodeValues.content());
|
||||
manualResultBundle.putString(BarcodeSelectorActivity.BARCODE_FORMAT, barcodeValues.format());
|
||||
if (addGroup != null) {
|
||||
manualResultBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, addGroup);
|
||||
}
|
||||
manualResult.putExtras(manualResultBundle);
|
||||
ScanActivity.this.setResult(RESULT_OK, manualResult);
|
||||
finish();
|
||||
Intent manualResult = new Intent();
|
||||
Bundle manualResultBundle = new Bundle();
|
||||
manualResultBundle.putString(BarcodeSelectorActivity.BARCODE_CONTENTS, barcodeValues.content());
|
||||
manualResultBundle.putString(BarcodeSelectorActivity.BARCODE_FORMAT, barcodeValues.format());
|
||||
if (addGroup != null) {
|
||||
manualResultBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, addGroup);
|
||||
}
|
||||
manualResult.putExtras(manualResultBundle);
|
||||
ScanActivity.this.setResult(RESULT_OK, manualResult);
|
||||
finish();
|
||||
}
|
||||
|
||||
public void addManually(View view) {
|
||||
|
||||
@@ -114,6 +114,17 @@ public class Utils {
|
||||
return ColorUtils.calculateLuminance(backgroundColor) > LUMINANCE_MIDPOINT;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Barcode format and content based on the result of an activity.
|
||||
* It shows toasts to notify the end-user as needed itself and will return an empty
|
||||
* BarcodeValues object if the activity was cancelled or nothing could be found.
|
||||
*
|
||||
* @param requestCode
|
||||
* @param resultCode
|
||||
* @param intent
|
||||
* @param context
|
||||
* @return BarcodeValues
|
||||
*/
|
||||
static public BarcodeValues parseSetBarcodeActivityResult(int requestCode, int resultCode, Intent intent, Context context) {
|
||||
String contents;
|
||||
String format;
|
||||
@@ -125,9 +136,15 @@ public class Utils {
|
||||
if (requestCode == Utils.BARCODE_IMPORT_FROM_IMAGE_FILE) {
|
||||
Log.i(TAG, "Received image file with possible barcode");
|
||||
|
||||
Uri data = intent.getData();
|
||||
if (data == null) {
|
||||
Log.e(TAG, "Intent did not contain any data");
|
||||
Toast.makeText(context, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
|
||||
return new BarcodeValues(null, null);
|
||||
}
|
||||
|
||||
Bitmap bitmap;
|
||||
try {
|
||||
Uri data = intent.getData();
|
||||
bitmap = retrieveImageFromUri(context, data);
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "Error getting data from image file");
|
||||
|
||||
@@ -8,22 +8,14 @@ public class CSVHelpers {
|
||||
/**
|
||||
* Extract a string from the items array. The index into the array
|
||||
* is determined by looking up the index in the fields map using the
|
||||
* "key" as the key. If no such key exists, defaultValue is returned
|
||||
* if it is not null. Otherwise, a FormatException is thrown.
|
||||
* "key" as the key. If no such key exists, defaultValue is returned.
|
||||
*/
|
||||
static String extractString(String key, CSVRecord record, String defaultValue)
|
||||
throws FormatException {
|
||||
String toReturn = defaultValue;
|
||||
|
||||
static String extractString(String key, CSVRecord record, String defaultValue) {
|
||||
if (record.isMapped(key)) {
|
||||
toReturn = record.get(key);
|
||||
} else {
|
||||
if (defaultValue == null) {
|
||||
throw new FormatException("Field not used but expected: " + key);
|
||||
}
|
||||
return record.get(key);
|
||||
}
|
||||
|
||||
return toReturn;
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -32,15 +24,15 @@ public class CSVHelpers {
|
||||
* "key" as the key. If no such key exists, or the data is not a valid
|
||||
* int, a FormatException is thrown.
|
||||
*/
|
||||
static Integer extractInt(String key, CSVRecord record, boolean nullIsOk)
|
||||
static Integer extractInt(String key, CSVRecord record)
|
||||
throws FormatException {
|
||||
if (record.isMapped(key) == false) {
|
||||
if (!record.isMapped(key)) {
|
||||
throw new FormatException("Field not used but expected: " + key);
|
||||
}
|
||||
|
||||
String value = record.get(key);
|
||||
if (value.isEmpty() && nullIsOk) {
|
||||
return null;
|
||||
if (value.isEmpty()) {
|
||||
throw new FormatException("Field is empty: " + key);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -56,15 +48,15 @@ public class CSVHelpers {
|
||||
* "key" as the key. If no such key exists, or the data is not a valid
|
||||
* int, a FormatException is thrown.
|
||||
*/
|
||||
static Long extractLong(String key, CSVRecord record, boolean nullIsOk)
|
||||
static Long extractLong(String key, CSVRecord record)
|
||||
throws FormatException {
|
||||
if (record.isMapped(key) == false) {
|
||||
if (!record.isMapped(key)) {
|
||||
throw new FormatException("Field not used but expected: " + key);
|
||||
}
|
||||
|
||||
String value = record.get(key);
|
||||
if (value.isEmpty() && nullIsOk) {
|
||||
return null;
|
||||
if (value.isEmpty()) {
|
||||
throw new FormatException("Field is empty: " + key);
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
@@ -77,7 +77,7 @@ public class CatimaImporter implements Importer {
|
||||
int version = parseVersion(bufferedReader);
|
||||
switch (version) {
|
||||
case 1:
|
||||
parseV1(context, database, bufferedReader);
|
||||
parseV1(database, bufferedReader);
|
||||
break;
|
||||
case 2:
|
||||
parseV2(context, database, bufferedReader);
|
||||
@@ -87,12 +87,12 @@ public class CatimaImporter implements Importer {
|
||||
}
|
||||
}
|
||||
|
||||
public void parseV1(Context context, SQLiteDatabase database, BufferedReader input) throws IOException, FormatException, InterruptedException {
|
||||
public void parseV1(SQLiteDatabase database, BufferedReader input) throws IOException, FormatException, InterruptedException {
|
||||
final CSVParser parser = new CSVParser(input, CSVFormat.RFC4180.builder().setHeader().build());
|
||||
|
||||
try {
|
||||
for (CSVRecord record : parser) {
|
||||
importLoyaltyCard(context, database, record);
|
||||
importLoyaltyCard(database, record);
|
||||
|
||||
if (Thread.currentThread().isInterrupted()) {
|
||||
throw new InterruptedException();
|
||||
@@ -214,7 +214,7 @@ public class CatimaImporter implements Importer {
|
||||
}
|
||||
|
||||
for (CSVRecord record : records) {
|
||||
importLoyaltyCard(context, database, record);
|
||||
importLoyaltyCard(database, record);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -276,9 +276,9 @@ public class CatimaImporter implements Importer {
|
||||
* Import a single loyalty card into the database using the given
|
||||
* session.
|
||||
*/
|
||||
private void importLoyaltyCard(Context context, SQLiteDatabase database, CSVRecord record)
|
||||
throws IOException, FormatException {
|
||||
int id = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.ID, record, false);
|
||||
private void importLoyaltyCard(SQLiteDatabase database, CSVRecord record)
|
||||
throws FormatException {
|
||||
int id = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.ID, record);
|
||||
|
||||
String store = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.STORE, record, "");
|
||||
if (store.isEmpty()) {
|
||||
@@ -286,25 +286,38 @@ public class CatimaImporter implements Importer {
|
||||
}
|
||||
|
||||
String note = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.NOTE, record, "");
|
||||
|
||||
Date validFrom = null;
|
||||
Long validFromLong;
|
||||
try {
|
||||
validFrom = new Date(CSVHelpers.extractLong(DBHelper.LoyaltyCardDbIds.VALID_FROM, record, true));
|
||||
} catch (NullPointerException | FormatException e) {
|
||||
validFromLong = CSVHelpers.extractLong(DBHelper.LoyaltyCardDbIds.VALID_FROM, record);
|
||||
} catch (FormatException ignored) {
|
||||
validFromLong = null;
|
||||
}
|
||||
if (validFromLong != null) {
|
||||
validFrom = new Date(validFromLong);
|
||||
}
|
||||
|
||||
Date expiry = null;
|
||||
Long expiryLong;
|
||||
try {
|
||||
expiry = new Date(CSVHelpers.extractLong(DBHelper.LoyaltyCardDbIds.EXPIRY, record, true));
|
||||
} catch (NullPointerException | FormatException e) {
|
||||
expiryLong = CSVHelpers.extractLong(DBHelper.LoyaltyCardDbIds.EXPIRY, record);
|
||||
} catch (FormatException ignored) {
|
||||
expiryLong = null;
|
||||
}
|
||||
if (expiryLong != null) {
|
||||
expiry = new Date(expiryLong);
|
||||
}
|
||||
|
||||
BigDecimal balance;
|
||||
try {
|
||||
balance = new BigDecimal(CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.BALANCE, record, null));
|
||||
} catch (FormatException _e) {
|
||||
// These fields did not exist in versions 1.8.1 and before
|
||||
// We catch this exception so we can still import old backups
|
||||
balance = new BigDecimal("0");
|
||||
// These fields did not exist in versions 1.8.1 and before
|
||||
// We default to 0 so we can still import old backups
|
||||
BigDecimal balance = new BigDecimal("0");
|
||||
String balanceString = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.BALANCE, record, null);
|
||||
if (balanceString != null) {
|
||||
try {
|
||||
balance = new BigDecimal(CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.BALANCE, record, null));
|
||||
} catch (NumberFormatException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
Currency balanceType = null;
|
||||
@@ -330,14 +343,14 @@ public class CatimaImporter implements Importer {
|
||||
}
|
||||
|
||||
Integer headerColor = null;
|
||||
|
||||
if (record.isMapped(DBHelper.LoyaltyCardDbIds.HEADER_COLOR)) {
|
||||
headerColor = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.HEADER_COLOR, record, true);
|
||||
try {
|
||||
headerColor = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.HEADER_COLOR, record);
|
||||
} catch (FormatException ignored) {
|
||||
}
|
||||
|
||||
int starStatus = 0;
|
||||
try {
|
||||
starStatus = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.STAR_STATUS, record, false);
|
||||
starStatus = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.STAR_STATUS, record);
|
||||
} catch (FormatException _e) {
|
||||
// This field did not exist in versions 0.28 and before
|
||||
// We catch this exception so we can still import old backups
|
||||
@@ -346,7 +359,7 @@ public class CatimaImporter implements Importer {
|
||||
|
||||
int archiveStatus = 0;
|
||||
try {
|
||||
archiveStatus = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.ARCHIVE_STATUS, record, false);
|
||||
archiveStatus = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.ARCHIVE_STATUS, record);
|
||||
} catch (FormatException _e) {
|
||||
// This field did not exist in versions 2.16.3 and before
|
||||
// We catch this exception so we can still import old backups
|
||||
@@ -355,7 +368,7 @@ public class CatimaImporter implements Importer {
|
||||
|
||||
Long lastUsed = 0L;
|
||||
try {
|
||||
lastUsed = CSVHelpers.extractLong(DBHelper.LoyaltyCardDbIds.LAST_USED, record, false);
|
||||
lastUsed = CSVHelpers.extractLong(DBHelper.LoyaltyCardDbIds.LAST_USED, record);
|
||||
} catch (FormatException _e) {
|
||||
// This field did not exist in versions 2.5.0 and before
|
||||
// We catch this exception so we can still import old backups
|
||||
@@ -371,6 +384,10 @@ public class CatimaImporter implements Importer {
|
||||
private void importGroup(SQLiteDatabase database, CSVRecord record) throws FormatException {
|
||||
String id = CSVHelpers.extractString(DBHelper.LoyaltyCardDbGroups.ID, record, null);
|
||||
|
||||
if (id == null) {
|
||||
throw new FormatException("Group has no ID: " + record);
|
||||
}
|
||||
|
||||
DBHelper.insertGroup(database, id);
|
||||
}
|
||||
|
||||
@@ -379,9 +396,13 @@ public class CatimaImporter implements Importer {
|
||||
* session.
|
||||
*/
|
||||
private void importCardGroupMapping(SQLiteDatabase database, CSVRecord record) throws FormatException {
|
||||
Integer cardId = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIdsGroups.cardID, record, false);
|
||||
int cardId = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIdsGroups.cardID, record);
|
||||
String groupId = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIdsGroups.groupID, record, null);
|
||||
|
||||
if (groupId == null) {
|
||||
throw new FormatException("Group has no ID: " + record);
|
||||
}
|
||||
|
||||
List<Group> cardGroups = DBHelper.getLoyaltyCardGroups(database, cardId);
|
||||
cardGroups.add(DBHelper.getGroup(database, groupId));
|
||||
DBHelper.setLoyaltyCardGroups(database, cardId, cardGroups);
|
||||
|
||||
@@ -74,29 +74,31 @@ public class StocardImporter implements Importer {
|
||||
String fileName = localFileHeader.getFileName();
|
||||
String[] nameParts = fileName.split("/");
|
||||
|
||||
if (nameParts.length < 2) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (providersFileName == null) {
|
||||
providersFileName = new String[]{
|
||||
nameParts[0],
|
||||
"sync",
|
||||
"data",
|
||||
"extracts",
|
||||
nameParts[1],
|
||||
"users",
|
||||
nameParts[0],
|
||||
"analytics-properties.json"
|
||||
nameParts[1],
|
||||
"analytics-properties",
|
||||
"content.json"
|
||||
};
|
||||
customProvidersBaseName = new String[]{
|
||||
nameParts[0],
|
||||
"sync",
|
||||
"data",
|
||||
"extracts",
|
||||
nameParts[1],
|
||||
"users",
|
||||
nameParts[0],
|
||||
nameParts[1],
|
||||
"loyalty-card-custom-providers"
|
||||
};
|
||||
cardBaseName = new String[]{
|
||||
nameParts[0],
|
||||
"sync",
|
||||
"data",
|
||||
"extracts",
|
||||
nameParts[1],
|
||||
"users",
|
||||
nameParts[0],
|
||||
nameParts[1],
|
||||
"loyalty-cards"
|
||||
};
|
||||
}
|
||||
@@ -106,18 +108,15 @@ public class StocardImporter implements Importer {
|
||||
customProviderId = nameParts[customProvidersBaseName.length].split("\\.", 2)[0];
|
||||
|
||||
// Name file
|
||||
if (nameParts.length == customProvidersBaseName.length + 1) {
|
||||
// Ignore the .txt file
|
||||
if (fileName.endsWith(".json")) {
|
||||
JSONObject jsonObject = ZipUtils.readJSON(zipInputStream);
|
||||
if (fileName.endsWith(customProviderId + "/content.json")) {
|
||||
JSONObject jsonObject = ZipUtils.readJSON(zipInputStream);
|
||||
|
||||
providers = appendToHashMap(
|
||||
providers,
|
||||
customProviderId,
|
||||
"name",
|
||||
jsonObject.getString("name")
|
||||
);
|
||||
}
|
||||
providers = appendToHashMap(
|
||||
providers,
|
||||
customProviderId,
|
||||
"name",
|
||||
jsonObject.getString("name")
|
||||
);
|
||||
} else if (fileName.endsWith("logo.png")) {
|
||||
providers = appendToHashMap(
|
||||
providers,
|
||||
@@ -133,46 +132,43 @@ public class StocardImporter implements Importer {
|
||||
cardName = nameParts[cardBaseName.length].split("\\.", 2)[0];
|
||||
|
||||
// This is the card itself
|
||||
if (nameParts.length == cardBaseName.length + 1) {
|
||||
// Ignore the .txt file
|
||||
if (fileName.endsWith(".json")) {
|
||||
JSONObject jsonObject = ZipUtils.readJSON(zipInputStream);
|
||||
if (fileName.endsWith(cardName + "/content.json")) {
|
||||
JSONObject jsonObject = ZipUtils.readJSON(zipInputStream);
|
||||
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
"cardId",
|
||||
jsonObject.getString("input_id")
|
||||
);
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
"cardId",
|
||||
jsonObject.getString("input_id")
|
||||
);
|
||||
|
||||
// Provider ID can be either custom or not, extract whatever version is relevant
|
||||
String customProviderPrefix = "/users/" + nameParts[0] + "/loyalty-card-custom-providers/";
|
||||
String providerId = jsonObject
|
||||
.getJSONObject("input_provider_reference")
|
||||
.getString("identifier");
|
||||
if (providerId.startsWith(customProviderPrefix)) {
|
||||
providerId = providerId.substring(customProviderPrefix.length());
|
||||
} else {
|
||||
providerId = providerId.substring("/loyalty-card-providers/".length());
|
||||
}
|
||||
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
"_providerId",
|
||||
providerId
|
||||
);
|
||||
|
||||
if (jsonObject.has("input_barcode_format")) {
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
"barcodeType",
|
||||
jsonObject.getString("input_barcode_format")
|
||||
);
|
||||
}
|
||||
// Provider ID can be either custom or not, extract whatever version is relevant
|
||||
String customProviderPrefix = "/users/" + nameParts[1] + "/loyalty-card-custom-providers/";
|
||||
String providerId = jsonObject
|
||||
.getJSONObject("input_provider_reference")
|
||||
.getString("identifier");
|
||||
if (providerId.startsWith(customProviderPrefix)) {
|
||||
providerId = providerId.substring(customProviderPrefix.length());
|
||||
} else {
|
||||
providerId = providerId.substring("/loyalty-card-providers/".length());
|
||||
}
|
||||
} else if (fileName.endsWith("notes/default.json")) {
|
||||
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
"_providerId",
|
||||
providerId
|
||||
);
|
||||
|
||||
if (jsonObject.has("input_barcode_format")) {
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
"barcodeType",
|
||||
jsonObject.getString("input_barcode_format")
|
||||
);
|
||||
}
|
||||
} else if (fileName.endsWith("notes/default/content.json")) {
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
|
||||
@@ -30,10 +30,11 @@ huuhaa
|
||||
Quentin PAGÈS
|
||||
Alexander Ivanov
|
||||
arshbeerSingh
|
||||
Denis Shilin
|
||||
Freddo espresso
|
||||
Silvério Santos
|
||||
Miha Frangež
|
||||
Arnis Jaundzeikars
|
||||
Arnis Jaundžeikars
|
||||
Kefir2105
|
||||
sr093906
|
||||
Giovanni Donisi
|
||||
@@ -107,6 +108,7 @@ BmBKun
|
||||
Aditya Das
|
||||
Kevin Sicong Jiang
|
||||
Tomer Ben-Rachel
|
||||
Tom Sawyer
|
||||
tfuxu
|
||||
Ahmed Saleh
|
||||
Airat
|
||||
@@ -139,7 +141,7 @@ Jacopo Gennaro Esposito
|
||||
Jasielprogramador
|
||||
Jean Mareilles
|
||||
Jean-Baptiste
|
||||
人工知能
|
||||
Kung-chih
|
||||
Karvjorm
|
||||
krkk
|
||||
Laura Ferraz
|
||||
@@ -155,6 +157,7 @@ Moi Toi
|
||||
DivideEtImpera
|
||||
Nicolas
|
||||
Nosnahc
|
||||
pa4k
|
||||
pbeckmann
|
||||
Peer Beckmann
|
||||
Piotr Strebski
|
||||
@@ -171,15 +174,16 @@ Samarth Asthan
|
||||
Shailendra Maurya
|
||||
Simone Dotto
|
||||
Subhashish Anand
|
||||
SziaTomi
|
||||
TenTraicion
|
||||
Titas Pažereckas
|
||||
Tom Sawyer
|
||||
atakujonc
|
||||
Tony C
|
||||
Tymofii Lytvynenko
|
||||
Vancha March
|
||||
Yevgeny M
|
||||
Yusril A
|
||||
ahmed-awad26
|
||||
Avik Kundu
|
||||
diksha-2911
|
||||
gbonaspetti
|
||||
|
||||
@@ -2,6 +2,18 @@
|
||||
|
||||
stocard_stores.csv was created by extracting /data/data/de.stocard/de.stocard.stocard/databases/stores on a rooted devices and running the following command over it:
|
||||
|
||||
sqlite3 -header -csv stores "select _id,name,barcodeFormat from stores" > stocard_stores.csv
|
||||
```
|
||||
sqlite3 -header -csv sync_db "select id,content from synced_resources where collection = '/loyalty-card-providers/'" > stocard_providers.csv
|
||||
while IFS= read -r line; do
|
||||
if [ "$line" = "id,content" ]; then
|
||||
echo "_id,name,barcodeFormat" > stocard_stores.csv
|
||||
else
|
||||
id="$(echo "$line" | cut -d ',' -f1)"
|
||||
name="$(echo "$line" | cut -d ',' -f2- | sed 's/""/"/g' | sed 's/^"//g' | sed 's/"$//g' | jq -r .name)"
|
||||
barcodeFormat="$(echo "$line" | cut -d ',' -f2- | sed 's/""/"/g' | sed 's/^"//g' | sed 's/"$//g' | jq -r .default_barcode_format)"
|
||||
echo "$id,\"$name\",$barcodeFormat" >> stocard_stores.csv
|
||||
fi
|
||||
done < stocard_providers.csv
|
||||
```
|
||||
|
||||
Only used for data portability reasons (ensuring importing works). Do NOT copy this anywhere else or use it for any purpose other than ensuring we can import a GDPR-provided export. We want to make sure this stays under fair use.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -93,7 +93,7 @@
|
||||
<string name="importFidme">الاستيراد من FidMe</string>
|
||||
<string name="importFidmeMessage">حدد ملفك <i>fidme-export-request-xxxxxx.zip</i> تصدير من FidMe للاستيراد ، ثم حدد أنواع الباركود يدويًا بعد ذلك.
|
||||
\nقم بإنشائه من ملف تعريف FidMe الخاص بك عن طريق اختيار حماية البيانات ثم الضغط على استخراج بياناتي أولاً.</string>
|
||||
<string name="importStocardMessage">حدد ملفك <i>***-sync.zip</i> تصدير من Stocard للاستيراد.
|
||||
<string name="importStocardMessage">حدد ملفك <i>***.zip</i> تصدير من Stocard للاستيراد.
|
||||
\nاحصل عليه عن طريق إرسال بريد إلكتروني إلى support@stocardapp.com لطلب تصدير بياناتك.</string>
|
||||
<string name="importVoucherVault">الاستيراد من Voucher Vault</string>
|
||||
<string name="importVoucherVaultMessage">حدد ملفك <i>vouchervault.json</i> تصدير من Voucher Vault للاستيراد.
|
||||
@@ -290,4 +290,6 @@
|
||||
<string name="noCameraPermissionDirectToSystemSetting">لمسح الباركود، ستحتاج Catima إلى الوصول إلى الكاميرا. اضغط هنا لتغيير إعدادات الأذونات.</string>
|
||||
<string name="updateBalance">تحديث الرصيد</string>
|
||||
<string name="updateBalanceHint">أدخل المبلغ</string>
|
||||
<string name="storageReadPermissionRequired">الصلاحيه للوصل للتخزين مطلوبة لهذا الاجراء</string>
|
||||
<string name="validFromDate">عربيه</string>
|
||||
</resources>
|
||||
@@ -71,13 +71,13 @@
|
||||
<string name="moveBarcodeToCenterOfScreen">Премества щрихкода в центъра на екрана</string>
|
||||
<string name="moveBarcodeToTopOfScreen">Премества щрихкода най-горе на екрана</string>
|
||||
<string name="never">Не изтича</string>
|
||||
<string name="chooseExpiryDate">Дата на изтичане</string>
|
||||
<string name="expiryDate">Валидност</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>
|
||||
<string name="expiryStateSentence">Валидна до: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Изтекла: <xliff:g>%s</xliff:g></string>
|
||||
<string name="balanceSentence">Наличност: <xliff:g>%s</xliff:g></string>
|
||||
<string name="noGroups">Докоснете бутона +, за да добавите списък.</string>
|
||||
@@ -152,7 +152,7 @@
|
||||
<string name="importVoucherVault">Внасяне от Voucher Vault</string>
|
||||
<string name="importVoucherVaultMessage">Изберете файла <i>vouchervault.json</i>, предварително изнесен от Voucher Vault.
|
||||
\nСъздайте такъв файл от меню „Export“ във Voucher Vault.</string>
|
||||
<string name="importStocardMessage">Изберете файла <i>***-sync.zip</i>, предварително изнесен от Stocard.
|
||||
<string name="importStocardMessage">Изберете файла <i>***.zip</i>, предварително изнесен от Stocard.
|
||||
\nПолучете го като изпратите писмо на support@stocardapp.com с искане за изнасяне вашите данни.</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Изберете файла <i>LoyaltyCardKeychain.csv</i>, предварително изнесен от Loyalty Card Keychain.
|
||||
\nСъздайте такъв файл от меню Внасяне/изнасяне от друго устройство с Loyalty Card Keychain като изберете Изнасяне.</string>
|
||||
@@ -267,5 +267,5 @@
|
||||
<string name="validFromDate">Валидна от</string>
|
||||
<string name="anyDate">Без значение от датата</string>
|
||||
<string name="validFromSentence">Валидна от: <xliff:g>%s</xliff:g></string>
|
||||
<string name="chooseValidFromDate">Изберете датата, от която е валидна</string>
|
||||
<string name="chooseValidFromDate">Определена дата</string>
|
||||
</resources>
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="save">সংরক্ষণ</string>
|
||||
<string name="cancel">বাতিল</string>
|
||||
<string name="unstar">তারা মুক্ত</string>
|
||||
@@ -8,18 +8,18 @@
|
||||
<string name="barcodeType">বারকোড ধরন</string>
|
||||
<string name="note">বিঃদ্রঃ</string>
|
||||
<string name="storeName">দোকানের নাম</string>
|
||||
<string name="noMatchingGiftCards">কোন ম্যাচিং উপহার কার্ড নেই</string>
|
||||
<string name="noGiftCards">উপহার কার্ড নেই</string>
|
||||
<string name="noMatchingGiftCards">কোনো ফলাফল পাওয়া যায়নি। অনুসন্ধানের বাক্যটি বদলে দেখুন।</string>
|
||||
<string name="noGiftCards">প্লাস বোতামটি টিপে একটি কার্ড যোগ করুন বা ⋮ মেনু থেকে কিছু নিয়ে আসুন।</string>
|
||||
<string name="action_add">কর্ম যোগ</string>
|
||||
<string name="all">সব</string>
|
||||
<string name="noGroupCards">গোষ্ঠী কার্ড নেই</string>
|
||||
<string name="noGroups">গোষ্ঠীগুলি নেই</string>
|
||||
<string name="noGroupCards">এই গ্রুপটি খালি</string>
|
||||
<string name="noGroups">+ যোগ বোতামটি টিপে গ্রুপ যোগ করুন যাতে তাদের শ্রেণীকরণ করা যায়।</string>
|
||||
<string name="groups">গোষ্ঠীগুলি</string>
|
||||
<string name="enter_group_name">গোষ্ঠী নাম লিখুন </string>
|
||||
<string name="exportSuccessful">রপ্তানি সফল</string>
|
||||
<string name="importSuccessful">আগম সফল</string>
|
||||
<string name="exportSuccessful">তথ্য রপ্তানি করা শেষ</string>
|
||||
<string name="importSuccessful">তথ্য আনা শেষ</string>
|
||||
<string name="intent_import_card_from_url_share_text">url শেয়ার টেক্সট থেকে ইন্টেন্ট ইম্পোর্ট কার্ড</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card"> কার্ড দেখা কালিন লকস্ক্রিন নিষ্ক্রিয়</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>
|
||||
@@ -34,7 +34,7 @@
|
||||
<string name="barcodeId">বারকোড আইডি</string>
|
||||
<string name="sameAsCardId">কার্ড আইডির মতো</string>
|
||||
<string name="setBarcodeId">বারকোড আইডি সেট করুন</string>
|
||||
<string name="unsupportedBarcodeType">অসমর্থিত বারকোড টাইপ</string>
|
||||
<string name="unsupportedBarcodeType">এই বারকোডের টাইপটি এখন দেখানো যাচ্ছে না। অ্যাপের পরের সংস্করণে হয়ত এটি সমর্থন করা যেতে পারে।</string>
|
||||
<string name="wrongValueForBarcodeType">বারকোড টাইপের জন্য ভুল মান</string>
|
||||
<string name="copy_to_clipboard_multiple_toast">ক্লিপবোর্ড একাধিক টোস্টে অনুলিপি করুন</string>
|
||||
<string name="intent_import_card_from_url_share_multiple_text">url থেকে ইন্টেন্ট ইম্পোর্ট কার্ড একাধিক টেক্সট শেয়ার করে</string>
|
||||
@@ -45,12 +45,12 @@
|
||||
<string name="setBackImage">পিছনের ছবি স্থাপন</string>
|
||||
<string name="removeImage">ছবি অপসারণ</string>
|
||||
<string name="takePhoto">ছবি নেত্তয়া</string>
|
||||
<string name="updateBarcodeQuestionTitle">হালনাগাদ বারকোড প্রশ্ন শিরোনাম</string>
|
||||
<string name="updateBarcodeQuestionText">হালনাগাদ বারকোড প্রশ্ন টেক্সট </string>
|
||||
<string name="updateBarcodeQuestionTitle">বারকোডের মানটি আপডেট করবেন\?</string>
|
||||
<string name="updateBarcodeQuestionText">আপনি আইডিটি পাল্টেছেন, এটির কোনো বারকোড দিয়ে কি এখনের বারকোডটি আপডেট করে দেবেন\?</string>
|
||||
<string name="yes">হাঁ</string>
|
||||
<string name="no">না</string>
|
||||
<string name="passwordRequired">পাসওয়ার্ড প্রয়োজন</string>
|
||||
<string name="failedGeneratingShareURL">শেয়ার ইউআরএল তৈরি করতে ব্যর্থ হয়েছে</string>
|
||||
<string name="failedGeneratingShareURL">শেয়ার করার ইউআরএল তৈরি করা গেল না। অনুগ্রহ করে এটিকে রিপোর্ট করে দিন।</string>
|
||||
<string name="turn_flashlight_on">টর্চলাইট চালু করুন</string>
|
||||
<string name="turn_flashlight_off">টর্চলাইট বন্ধ করুন</string>
|
||||
<string name="settings_locale">লোকেল</string>
|
||||
@@ -80,7 +80,7 @@
|
||||
<string name="sendLabel">পাঠান…</string>
|
||||
<string name="share">ভাগ</string>
|
||||
<string name="copy_to_clipboard">নকল করুন ক্লিপবোর্ড এ</string>
|
||||
<string name="deleteConfirmation">নিশ্চিতকরণ মুছে দিন</string>
|
||||
<string name="deleteConfirmation">এই কার্ডটি চিরকালের জন্য মুছে দেবো\?</string>
|
||||
<string name="confirm">নিশ্চিত করুন</string>
|
||||
<string name="delete">মুছে ফেলুন</string>
|
||||
<string name="edit">সম্পাদনা</string>
|
||||
@@ -92,13 +92,98 @@
|
||||
<string name="deleteTitle">কার্ড ডিলিট করুন</string>
|
||||
<string name="ok">ঠিক আছে</string>
|
||||
<string name="about">সম্পর্কিত</string>
|
||||
<string name="debug_version_fmt">সংস্করণ:
|
||||
\n<xliff:g id="version">
|
||||
\n%s</xliff:g></string>
|
||||
<string name="debug_version_fmt">সংস্করণ: <xliff:g id="version">%s</xliff:g></string>
|
||||
<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>
|
||||
<string name="noCameraPermissionDirectToSystemSetting">বারকোড স্ক্যান করার জন্য, কাটিমাকে ফোনের ক্যামেরা ব্যবহার করার অনুমতি দিতে হবে। এইখানে টাচ করে আপনার অনুমতি সেটিংস পালটে নিন।</string>
|
||||
<string name="importOptionApplicationExplanation">আপনার প্রিয় ফাইল ম্যানেজার বা আর যেকোনো অ্যাপ দিয়ে একটি ফাইল খুলুন।</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">মেধাস্বত্ব © ২০১৯-<xliff:g>%d</xliff:g> সিলভিয়া ভান অস</string>
|
||||
<string name="app_license">কপিলেফ্ট করা মুক্ত সফটওয়্যার, জিপিএলের ৩য় এবং তার অধিক সংস্করণে লাইসেন্স করা</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>
|
||||
</plurals>
|
||||
<plurals name="selectedCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> একটি নির্বাচিত</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> টি নির্বাচিত</item>
|
||||
</plurals>
|
||||
<plurals name="deleteCardsTitle">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g>টি কার্ড মুছে ফেলুন</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g>টি কার্ড মুছে ফেলুন</item>
|
||||
</plurals>
|
||||
<string name="cameraPermissionDeniedTitle">ফোনের ক্যামেরা ব্যবহার করা যাচ্ছে না</string>
|
||||
<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>
|
||||
<string name="settings_follow_system_orientation">সিস্টেমের অনুসারে</string>
|
||||
<string name="settings_portrait_orientation">প্রতিকৃতি</string>
|
||||
<string name="barcodeImageDescriptionWithType">ছবি <xliff:g>%s</xliff:g> বারকোড</string>
|
||||
<string name="exportName">রপ্তানি</string>
|
||||
<string name="failedParsingImportUriError">আমদানির ইউআরআই বোঝা যাচ্ছে না</string>
|
||||
<string name="importExport">আমদানি/রপ্তানি</string>
|
||||
<string name="cardShortcut">কার্ড শর্টকাট</string>
|
||||
<string name="exportFailed">বার করা যাচ্ছে না</string>
|
||||
<string name="copy_to_clipboard_toast">আইডি ক্লিপবোর্ডে নকল করা হল</string>
|
||||
<string name="noCardIdError">কোনো আইডি দওয়া হয়নি</string>
|
||||
<string name="importExportHelp">নিজের তথ্য অন্য কোথাও সংরক্ষণ করে রাখলে পরে সেটা অন্য ফোনে আবার নিয়ে নাওয়া যাই।</string>
|
||||
<string name="importFailed">আনা যাচ্ছে না</string>
|
||||
<string name="noGiftCardsGroup">কিছু কার্ড বানান আর এই গ্রুপে স্থির করুন।</string>
|
||||
<string name="scanCardBarcode">বারকোড স্ক্যান করুন</string>
|
||||
<string name="importSuccessfulTitle">আনা শেষ</string>
|
||||
<string name="importFailedTitle">আনা ব্যর্থ</string>
|
||||
<string name="exportSuccessfulTitle">বার করা শেষ</string>
|
||||
<string name="exportFailedTitle">বার করা ব্যর্থ</string>
|
||||
<string name="importing">আনা হচ্ছে…</string>
|
||||
<string name="exporting">বার করা হচ্ছে…</string>
|
||||
<string name="storageReadPermissionRequired">এই কাজটির জন্য ফোনের স্টোরেজ দেখার অনুমতি লাগবে…</string>
|
||||
<string name="exportOptionExplanation">তথ্যটি আপনার পছন্দের জায়গায় রাখা হবে।</string>
|
||||
<string name="importOptionFilesystemTitle">ফোনের স্টোরেজ থেকে আনুন</string>
|
||||
<string name="importOptionFilesystemButton">ফোনের স্টোরেজ থেকে</string>
|
||||
<string name="importOptionApplicationTitle">অন্য অ্যাপ ব্যবহার করুন</string>
|
||||
<string name="app_copyright_old">লয়ালটি কার্ড কিচ্যেনের উপর ভিত্তি করে
|
||||
\nমেধাস্বত্ব © ২০১৬-২০২০ ব্রানডেন আর্চার</string>
|
||||
<string name="selectBarcodeTitle">বারকোড নির্বাচন করুন</string>
|
||||
<string name="settings">সেটিংস</string>
|
||||
<string name="settings_dark_theme">অন্ধকার</string>
|
||||
<string name="settings_landscape_orientation">অনুভূমিক</string>
|
||||
<string name="settings_lock_on_opening_orientation">কার্ড খোলার সময় যে অভিমুখ থাকে সেটিতে লক করে দেবেন</string>
|
||||
<string name="group_name_already_in_use">গ্রুপটির নাম আগে একবার ব্যবহার করে ফেলেছেন</string>
|
||||
<string name="group_edit">গ্রুপ সম্পাদনা করুন</string>
|
||||
<string name="group_updated">গ্রুপটি আপডেট করা হল</string>
|
||||
<string name="group_name_is_empty">গ্রুপের একটি নাম থাকতে হবে</string>
|
||||
<string name="deleteConfirmationGroup">গ্রুপটি মুছে দেবেন\?</string>
|
||||
<string name="failedOpeningFileManager">প্রথমে একটি ফাইল ম্যানেজার ইনস্টল করুন।</string>
|
||||
<string name="leaveWithoutSaveConfirmation">সংরক্ষণ না করেই চলে যাবেন\?</string>
|
||||
<string name="addManually">নিজে হাতে আইডি লিখুন</string>
|
||||
<plurals name="groupCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g>টি কার্ড</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g>টি কার্ড</item>
|
||||
</plurals>
|
||||
<string name="leaveWithoutSaveTitle">প্রস্থান</string>
|
||||
<string name="settings_display_barcode_max_brightness">বারকোড উজ্জ্বল করুন</string>
|
||||
<string name="editGroup">যেই গ্রুপ সম্পাদনা করা হচ্ছে: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">মেয়াদ শেষ হয়ে গিয়েছে: <xliff:g>%s</xliff:g></string>
|
||||
<string name="editBarcode">বারকোড সম্পাদন করুন</string>
|
||||
<string name="never">কখনই না</string>
|
||||
<string name="addFromImage">গ্যালারি থেকে ছবি বাছুন</string>
|
||||
<string name="groupsList">গ্রুপগুলি: <xliff:g>%s</xliff:g></string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> পয়েন্ট</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> পয়েন্ট</item>
|
||||
</plurals>
|
||||
<string name="expiryStateSentence">মেয়াদ শেষ হবে: <xliff:g>%s</xliff:g></string>
|
||||
<string name="balanceSentence">ব্যালেন্স: <xliff:g>%s</xliff:g></string>
|
||||
<string name="chooseExpiryDate">মেয়াদ শেষ হওয়ার তারিখ মনোনীত করুন</string>
|
||||
<string name="moveBarcodeToTopOfScreen">বারকোডটি স্ক্রিনের উপরে উঠিয়ে দিন</string>
|
||||
<string name="moveBarcodeToCenterOfScreen">বারকোডটি স্ক্রিনের কেন্দ্রে সরিয়ে দিন</string>
|
||||
</resources>
|
||||
@@ -52,4 +52,5 @@
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> কার্ডগুলো মুছুন</item>
|
||||
</plurals>
|
||||
<string name="deleteTitle">কার্ড মুছুন</string>
|
||||
</resources>
|
||||
<string name="noGiftCards">একটি কার্ড যোগ করতে + প্লাস বোতামে ক্লিক করুন বা ⋮ মেনু থেকে আমদানি করুন।</string>
|
||||
</resources>
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
<string name="importVoucherVaultMessage">Vyberte k importu svůj <i>vouchervault.json</i> exportovaný z Voucher Vault.
|
||||
\nVytvoříte jej tak, že nejprve stisknete tlačítko Exportovat v aplikaci Voucher Vault.</string>
|
||||
<string name="importVoucherVault">Import z Voucher Vault</string>
|
||||
<string name="importStocardMessage">Vyberte k importu svůj <i>***-sync.zip</i> exportovaný z aplikace Stocard.
|
||||
<string name="importStocardMessage">Vyberte k importu svůj <i>***.zip</i> exportovaný z aplikace Stocard.
|
||||
\nZískejte ji zasláním e-mailu na adresu support@stocardapp.com s žádostí o export vašich dat.</string>
|
||||
<string name="importStocard">Import ze Stocard</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Vyberte k importu <i>LoyaltyCardKeychain.csv</i> exportovaný z Loyalty Card Keychain.
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
<string name="frontImageDescription">Bild auf der Vorseite</string>
|
||||
<string name="backImageDescription">Bild auf der Rückseite</string>
|
||||
<string name="passwordRequired">Bitte gib das Passwort ein</string>
|
||||
<string name="importStocardMessage">Wähle deinen <i>***-sync.zip</i>-Export aus Stocard zum Importieren aus.
|
||||
<string name="importStocardMessage">Wähle deinen <i>***.zip</i>-Export aus Stocard zum Importieren aus.
|
||||
\nSie erhalten ihn, indem du eine E-Mail an support@stocardapp.com sendest und um einen Export deiner Daten bitten.</string>
|
||||
<string name="importStocard">Von Stocard importieren</string>
|
||||
<string name="turn_flashlight_off">Licht ausschalten</string>
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
</plurals>
|
||||
<string name="importCatimaMessage">Επιλέξτε την <i>catima.zip</i> εξαγωγή από το Catima για εισαγωγή
|
||||
\nΔημιουργήστε το από το μενού Εισαγωγής/Εξαγωγής μιας άλλης εφαρμογής Catima κάνοντας εξαγωγή εκεί πρώτα.</string>
|
||||
<string name="importStocardMessage">Επιλέξτε την <i>***-sync.zip</i> εξαγωγή από το Stocard για εισαγωγή.
|
||||
<string name="importStocardMessage">Επιλέξτε την <i>***.zip</i> εξαγωγή από το Stocard για εισαγωγή.
|
||||
\nΠάρτε το στέλνοντας email στο: support@stocardapp.com ζητώντας μια εξαγωγή αρχείων των δεδομένων σας.</string>
|
||||
<string name="intent_import_card_from_url_share_multiple_text">Θέλω να μοιραστώ μερικές κάρτες μαζί σου</string>
|
||||
<string name="editGroup">Επεξεργασία Ομάδας: <xliff:g>%s</xliff:g></string>
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
\nCréalo primero desde tu perfil de FidMe eligiendo Protección de datos y pulsa Extraer mis datos.</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Seleccione su <i>LoyaltyCardKeychain.csv</i> exportado desde Loyalty Card Keychain para importarlo.
|
||||
\nCréalo primero desde el menú Importar/Exportar en Loyalty Card Keychain pulsando Exportar desde allí.</string>
|
||||
<string name="importStocardMessage">Seleccione su exportación <i>*-sync.zip</i> de Stocard para importarla.
|
||||
<string name="importStocardMessage">Seleccione su exportación <i>*.zip</i> de Stocard para importarla.
|
||||
\nConsígalo enviando un correo electrónico a support@stocardapp.com solicitando una exportación de sus datos.</string>
|
||||
<string name="importVoucherVaultMessage">Seleccione su <i>vouchervault.json</i> exportado desde Voucher Vault para importarlo.
|
||||
\nCréalo pulsando primero Exportar en Voucher Vault.</string>
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> valittu</item>
|
||||
</plurals>
|
||||
<string name="importStocard">Tuo Stocardista</string>
|
||||
<string name="importStocardMessage">Valitse tuotava <i>***-sync.zip</i>-vienti Stocardista.
|
||||
<string name="importStocardMessage">Valitse tuotava <i>***.zip</i>-vienti Stocardista.
|
||||
\nHanki se lähettämällä sähköpostia osoitteeseen support@stocardapp.com ja pyytämällä tietojesi vientiä.</string>
|
||||
<string name="passwordRequired">Ole hyvä ja syötä salasana</string>
|
||||
<string name="failedGeneratingShareURL">Jaettavaa URL-osoitetta ei voitu luoda. Ilmoita tästä.</string>
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
<string name="backImageDescription">Image du verso</string>
|
||||
<string name="frontImageDescription">Image du recto</string>
|
||||
<string name="passwordRequired">Veuillez entrer le mot de passe</string>
|
||||
<string name="importStocardMessage">Sélectionnez votre exportation <i>***-sync.zip</i> de Stocard pour l’importer.
|
||||
<string name="importStocardMessage">Sélectionnez votre exportation <i>***.zip</i> de Stocard pour l’importer.
|
||||
\nVous pouvez l’obtenir en envoyant un courriel à support@stocardapp.com pour demander une exportation de vos données.</string>
|
||||
<string name="importStocard">Importer depuis Stocard</string>
|
||||
<string name="turn_flashlight_off">Éteindre la lampe de poche</string>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<string name="save">Mentés</string>
|
||||
<string name="edit">Szerkesztés</string>
|
||||
<string name="delete">Törlés</string>
|
||||
<string name="confirm">Alkalmaz</string>
|
||||
<string name="confirm">Jóváhagy</string>
|
||||
<plurals name="deleteCardsTitle">
|
||||
<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>
|
||||
@@ -55,7 +55,7 @@
|
||||
<string name="barcodeImageDescriptionWithType"><xliff:g>%s</xliff:g> vonalkód képe</string>
|
||||
<string name="noCardIdError">Nincs azonosító megadva</string>
|
||||
<string name="noCardExistsError">Kártya nem található</string>
|
||||
<string name="importStocardMessage">Válassza ki a <i>***-sync.zip</i> Stocard exportot.
|
||||
<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>
|
||||
@@ -262,4 +262,10 @@
|
||||
</plurals>
|
||||
<string name="updateBalance">Egyenleg frissítése</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 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 kamerához való hozzáférés engedélye szükséges ehhez a művelethez…</string>
|
||||
</resources>
|
||||
@@ -161,7 +161,7 @@
|
||||
<string name="importLoyaltyCardKeychainMessage">Pilih ekspor <i>LoyaltyCardKeychain.csv</i> Anda dari Loyalty Card Keychain untuk diimpor.
|
||||
\nBuat dari menu Import/Export di Loyalty Card Keychain dengan menekan Export terlebih dahulu.</string>
|
||||
<string name="importStocard">Impor dari Stocard</string>
|
||||
<string name="importStocardMessage">Pilih ekspor <i>***-sync.zip</i> Anda dari Stocard untuk diimpor.
|
||||
<string name="importStocardMessage">Pilih ekspor <i>***.zip</i> Anda dari Stocard untuk diimpor.
|
||||
\nDapatkan dengan mengirim email ke support@stocardapp.com untuk meminta ekspor data Anda.</string>
|
||||
<string name="importVoucherVault">Impor dari Voucher Vault</string>
|
||||
<string name="importVoucherVaultMessage">Pilih ekspor <i>vouchervault.json</i> Anda dari Vault Voucher untuk diimpor.
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
<string name="backImageDescription">Immagine posteriore</string>
|
||||
<string name="frontImageDescription">Immagine frontale</string>
|
||||
<string name="passwordRequired">Si prega di inserire la password</string>
|
||||
<string name="importStocardMessage">Seleziona il tuo file di esportazione <i>***-sync.zip</i> da Stocard per importarlo.
|
||||
<string name="importStocardMessage">Seleziona il tuo file di esportazione <i>***.zip</i> da Stocard per importarlo.
|
||||
\nOttienilo inviando un\'e-mail a support@stocardapp.com chiedendo un\'esportazione dei tuoi dati.</string>
|
||||
<string name="importStocard">Importa da Stocard</string>
|
||||
<string name="turn_flashlight_off">Spegni la torcia</string>
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
<string name="photos">フォト</string>
|
||||
<string name="backImageDescription">裏</string>
|
||||
<string name="frontImageDescription">表</string>
|
||||
<string name="importStocardMessage">Stocardでエクスポートした<i>***-sync.zip</i>ファイルを選択してください。
|
||||
<string name="importStocardMessage">Stocardでエクスポートした<i>***.zip</i>ファイルを選択してください。
|
||||
\nファイルがない場合、e-mailing support@stocardapp.comにデータのエクスポートを要求してください。</string>
|
||||
<string name="importStocard">Stocardからインポート</string>
|
||||
<plurals name="selectedCardCount">
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
<string name="setBarcodeId">Nustatyti brūkšninio kodo reikšmę</string>
|
||||
<string name="sameAsCardId">Tokia pat kaip ID</string>
|
||||
<string name="barcodeId">Brūkšninio kodo reikšmė</string>
|
||||
<string name="importStocardMessage">Pasirinkite <i>***-sync.zip</i> eksportą iš Stocard, kad galėtumėte importuoti.
|
||||
<string name="importStocardMessage">Pasirinkite <i>***.zip</i> eksportą iš Stocard, kad galėtumėte importuoti.
|
||||
\nGaukite susisiekę el. paštu support@stocardapp.com, prašydami eksportuoti jūsų duomenis.</string>
|
||||
<string name="importStocard">Importuoti iš Stocard</string>
|
||||
<string name="importFidmeMessage">Pasirinkite <i>fidme-export-request-xxxxxx.zip</i> eksportą iš FidMe, kurį norite importuoti, ir po to brūkšninių kodų tipus pasirinkite rankiniu būdu.
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
\nFailu var izveidot Jūsu FidMe profilā, ejot uz \"Data Protection\" un spiežot \"Extract my data\".</string>
|
||||
<string name="importLoyaltyCardKeychain">Importēt no Loyalty Card Keychain</string>
|
||||
<string name="importStocard">Importēt no Stocard</string>
|
||||
<string name="importStocardMessage">Importam izvēlieties Jūsu <i>***-sync.zip</i> eksporta failu no Stocard.
|
||||
<string name="importStocardMessage">Importam izvēlieties Jūsu <i>***.zip</i> eksporta failu no Stocard.
|
||||
\nFailu var iegūt sūtot e-pastu uz support@stocardapp.com ar pieprasījumu eksportēt Jūsu datus.</string>
|
||||
<string name="importVoucherVault">Importēt no Voucher Vault</string>
|
||||
<string name="importVoucherVaultMessage">Importam izvēlieties Jūsu <i>vouchervault.json</i> failu no Voucher Vault.
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
<string name="photos">Bilder</string>
|
||||
<string name="backImageDescription">Baksidebilde</string>
|
||||
<string name="frontImageDescription">Forsidebilde</string>
|
||||
<string name="importStocardMessage">Velg din <i>***-sync.zip</i>-eksport fra Stocard å importere.
|
||||
<string name="importStocardMessage">Velg din <i>***.zip</i>-eksport fra Stocard å importere.
|
||||
\nSkaff den ved å sende e-post til support@stocardapp.com der du etterspør eksport av dataen din.</string>
|
||||
<string name="passwordRequired">Skriv inn passordet</string>
|
||||
<string name="importStocard">Importer fra Stocard</string>
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
<string name="backImageDescription">Achterzijde van kaart</string>
|
||||
<string name="frontImageDescription">Voorzijde van kaart</string>
|
||||
<string name="passwordRequired">Voer het wachtwoord in</string>
|
||||
<string name="importStocardMessage">Kies het te importeren Stocard-exportbestand genaamd <i>***-sync.zip</i>.
|
||||
<string name="importStocardMessage">Kies het te importeren Stocard-exportbestand genaamd <i>***.zip</i>.
|
||||
\nStuur een e-mail naar support@stocardapp.com waarin je vraagt om een exportbestand.</string>
|
||||
<string name="importStocard">Importeren uit Stocard</string>
|
||||
<string name="failedGeneratingShareURL">De te delen link kan niet worden gegenereerd. Meld deze fout.</string>
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
<string name="importVoucherVaultMessage">Wybierz swój <i>vouchervault.json</i> z Voucher Vault, aby zaimportować.
|
||||
\nUtwórz go wpierw klikając Eksportuj w Voucher Vault.</string>
|
||||
<string name="importVoucherVault">Importuj z Voucher Vault</string>
|
||||
<string name="importStocardMessage">Wybierz swój <i>***-sync.zip</i> z Stocard, aby zaimportować.
|
||||
<string name="importStocardMessage">Wybierz swój <i>***.zip</i> z Stocard, aby zaimportować.
|
||||
\nUzyskaj go, wysyłając email na adres support@stocardapp.com, z prośbą o eksport Twoich danych.</string>
|
||||
<string name="importStocard">Importuj z Stocard</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Wybierz swój <i>LoyaltyCardKeychain.csv</i> z Loyalty Card Keychain, aby zaimportować.
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
<string name="sameAsCardId">Igual ao identificador</string>
|
||||
<string name="importFidmeMessage">Selecione a exportação <i>fidme-export-request-xxxxxx.zip</i> do FidMe para importar e depois selecione os tipos de código de barras manualmente.
|
||||
\nPrimeiro crie a exportação no seu perfil do FidMe escolhendo a opção \"Proteção de dados\" e em seguida pressionando \"Extrair os meus dados\".</string>
|
||||
<string name="importStocardMessage">Selecione a exportação <i>***-sync.zip</i> do Stocard para importar.
|
||||
<string name="importStocardMessage">Selecione a exportação <i>***.zip</i> do Stocard para importar.
|
||||
\nObtenha-o através do e-mail support@stocardapp.com solicitando uma exportação dos seus dados.</string>
|
||||
<string name="barcodeId">Valor do código de barras</string>
|
||||
<string name="wrongValueForBarcodeType">O valor não é válido para o tipo de código de barras selecionado</string>
|
||||
|
||||
@@ -94,9 +94,9 @@
|
||||
<string name="moveBarcodeToTopOfScreen">Переместить штрих-код в верхнюю часть экрана</string>
|
||||
<string name="moveBarcodeToCenterOfScreen">Центрировать штрих-код на экране</string>
|
||||
<string name="currency">Валюта</string>
|
||||
<string name="chooseExpiryDate">Указать срок действия</string>
|
||||
<string name="chooseExpiryDate">Выбор срока действия</string>
|
||||
<string name="never">Никогда</string>
|
||||
<string name="expiryDate">Окончание срока действия</string>
|
||||
<string name="expiryDate">Срок действия</string>
|
||||
<string name="editBarcode">Изменить штрих-код</string>
|
||||
<string name="barcode">Штрих-код</string>
|
||||
<string name="card">Карта</string>
|
||||
@@ -150,7 +150,7 @@
|
||||
<string name="backImageDescription">Задняя сторона</string>
|
||||
<string name="frontImageDescription">Лицевая сторона</string>
|
||||
<string name="photos">Фото</string>
|
||||
<string name="importStocardMessage">Выберите для импортирования файл <i>***-sync.zip</i>.
|
||||
<string name="importStocardMessage">Выберите для импортирования файл <i>***.zip</i>.
|
||||
\nЭтот файл можно получить по электронной почте от support@stocardapp.com, предварительно запросив экспорт ваших данных.</string>
|
||||
<string name="passwordRequired">Введите пароль</string>
|
||||
<string name="importStocard">Импорт из Stocard</string>
|
||||
@@ -280,6 +280,6 @@
|
||||
<string name="cameraPermissionRequired">Для этого действия необходимо разрешение на доступ к камере…</string>
|
||||
<string name="validFromDate">Действует с</string>
|
||||
<string name="anyDate">Любая дата</string>
|
||||
<string name="chooseValidFromDate">Выберите дату действия</string>
|
||||
<string name="chooseValidFromDate">Выбор даты действия</string>
|
||||
<string name="validFromSentence">Действует с: <xliff:g>%s</xliff:g></string>
|
||||
</resources>
|
||||
@@ -265,7 +265,7 @@
|
||||
<string name="settings_landscape_orientation">Na šírku</string>
|
||||
<string name="importFidmeMessage">Vyberte svoj <i>fidme-export-request-xxxxxx.zip</i> export zo služby FidMe pre import a potom vyberte typy čiarových kódov ručne.
|
||||
\nVytvorte ho z profilu FidMe tak, že najprv vyberiete položku Ochrana údajov a potom stlačíte tlačidlo Extrahovať moje údaje.</string>
|
||||
<string name="importStocardMessage">Vyberte svoj <i>***-sync.zip</i> export zo Stocard pre import.
|
||||
<string name="importStocardMessage">Vyberte svoj <i>***.zip</i> export zo Stocard pre import.
|
||||
\nZískate ho zaslaním e-mailu na adresu support@stocardapp.com, v ktorom požiadate o export svojich údajov.</string>
|
||||
<string name="currentBalanceSentence">Aktuálny zostatok: <xliff:g>%s</xliff:g></string>
|
||||
<string name="copy_to_clipboard_multiple_toast">ID skopírované do schránky</string>
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
<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>***-sync.zip</i> Stocard izvoz podatkov za uvoz.
|
||||
<string name="importStocardMessage">Izberi svoj <i>***.zip</i> Stocard izvoz podatkov za uvoz.
|
||||
\nIzvoz podatkov dobiš s pošiljanjem elektronske pošte na support@stocardapp.com, kjer povprašaš za izvoz svojih podatkov.</string>
|
||||
<string name="importVoucherVaultMessage">Izberi svoj <i>vouchervault.json</i> Voucher Vault izvoz podatkov za uvoz.
|
||||
\nIzvoz podatkov dobiš s pritiskom na gumb \"Export\" v Voucher Vault first.</string>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
\nSkapa den från Import/Export-menyn i Loyalty Card Keychain först genom att trycka på Exportera.</string>
|
||||
<string name="importVoucherVaultMessage">Välj den exporterade <i>vouchervault.json</i> från Voucher Vault som du vill importera.
|
||||
\nSkapa den först genom att trycka på Exportera i Voucher Vault.</string>
|
||||
<string name="importStocardMessage">Välj den exporterade <i>***-sync.zip</i> från Stocard som du vill importera.
|
||||
<string name="importStocardMessage">Välj den exporterade <i>***.zip</i> från Stocard som du vill importera.
|
||||
\nSkaffa den först genom att skicka e-post till support@stocardapp.com och be om att få dina data exporterade.</string>
|
||||
<string name="enter_group_name">Ange gruppnamn</string>
|
||||
<string name="groups">Grupper</string>
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
<string name="importVoucherVaultMessage">İçe aktarmak için Voucher Vault\'tan dışa aktardığınız <i>vouchervault.json</i> dosyasını seçin.
|
||||
\nÖnce Voucher Vault\'ta \"Dışa aktar\" düğmesine basarak bir tane oluşturun.</string>
|
||||
<string name="importVoucherVault">Voucher Vault\'tan içe aktar</string>
|
||||
<string name="importStocardMessage">İçe aktarmak için Stocard\'dan dışa aktardığınız <i>***-sync.zip</i> dosyasını seçin.
|
||||
<string name="importStocardMessage">İçe aktarmak için Stocard\'dan dışa aktardığınız <i>***.zip</i> dosyasını seçin.
|
||||
\nsupport@stocardapp.com adresine e-posta göndererek verilerinizin dışa aktarılmasını isteyerek edinin.</string>
|
||||
<string name="importStocard">Stocard\'dan içe aktar</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">İçe aktarmak için Loyalty Card Keychain\'den dışa aktardığınız <i>LoyaltyCardKeychain.csv</i> dosyasını seçin.
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
<string name="photos">Світлини</string>
|
||||
<string name="backImageDescription">Тильна сторона</string>
|
||||
<string name="frontImageDescription">Лицьова сторона</string>
|
||||
<string name="importStocardMessage">Виберіть експорт <i> ***-sync.zip </i> зі Stocard для імпорту.
|
||||
<string name="importStocardMessage">Виберіть експорт <i> ***.zip </i> зі Stocard для імпорту.
|
||||
\nОтримайте його, надіславши електронного листа support@stocardapp.com з проханням експортувати ваші дані.</string>
|
||||
<string name="importStocard">Імпорт із Stocard</string>
|
||||
<plurals name="selectedCardCount">
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
<string name="deleteConfirmation">删除此卡?</string>
|
||||
<string name="deleteTitle">移除卡片</string>
|
||||
<string name="starImage">最喜欢的星星</string>
|
||||
<string name="importStocardMessage">选择 Stocard 导出文件 <i>****-sync.zip</i>来导入。
|
||||
<string name="importStocardMessage">选择 Stocard 导出文件 <i>****.zip</i>来导入。
|
||||
\n发电子邮件给 support@stocardapp.com 请求获得数据导出文件。</string>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
<item quantity="other">确定永久删除 <xliff:g>%d</xliff:g> 这些卡片?</item>
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
<string name="importVoucherVaultMessage">選取您自 Voucher Vault 匯出的 <i>vouchervault.json</i> 檔案以進行匯入。
|
||||
\n請您先透過 Voucher Vault 進行匯出。</string>
|
||||
<string name="importStocard">自 Stocard 中匯入</string>
|
||||
<string name="importStocardMessage">>選取您自 Stocard 匯出的 <i>***-sync.zip</i> 檔案以進行匯入。
|
||||
<string name="importStocardMessage">>選取您自 Stocard 匯出的 <i>***.zip</i> 檔案以進行匯入。
|
||||
\n請您寫封 Email 至 support@stocardapp.com 索取您的資料。</string>
|
||||
<string name="importLoyaltyCardKeychain">自 Loyalty Card Keychain 中匯入</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">選取您自 Loyalty Card Keychain <i>LoyaltyCardKeychain.csv</i> 檔案以進行匯入。
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
<string name="importLoyaltyCardKeychainMessage">Select your <i>LoyaltyCardKeychain.csv</i> export from Loyalty Card Keychain to import.
|
||||
\nCreate it from the Import/Export menu in Loyalty Card Keychain by pressing Export there first.</string>
|
||||
<string name="importStocard">Import from Stocard</string>
|
||||
<string name="importStocardMessage">Select your <i>***-sync.zip</i> export from Stocard to import.
|
||||
<string name="importStocardMessage">Select your <i>***.zip</i> export from Stocard to import.
|
||||
\nGet it by e-mailing support@stocardapp.com asking for an export of your data.</string>
|
||||
<string name="importVoucherVault">Import from Voucher Vault</string>
|
||||
<string name="importVoucherVaultMessage">Select your <i>vouchervault.json</i> export from Voucher Vault to import.
|
||||
|
||||
@@ -1222,6 +1222,10 @@ public class ImportExportTest {
|
||||
|
||||
@Test
|
||||
public void importStocard() throws IOException {
|
||||
// FIXME: The provided stocard.zip is a very old export (8 July 2021) manually edited to
|
||||
// look more like the Stocard files provided by users for #1242. It is not an up-to-date
|
||||
// export and the test is possibly unreliable. This should be replaced by an up-to-date
|
||||
// export.
|
||||
InputStream inputStream = getClass().getResourceAsStream("stocard.zip");
|
||||
|
||||
// Import the Stocard data
|
||||
@@ -1271,8 +1275,7 @@ public class ImportExportTest {
|
||||
|
||||
card = DBHelper.getLoyaltyCard(mDatabase, 3);
|
||||
|
||||
// I don't think we can know this one, but falling back to an unique store name is at least something
|
||||
assertEquals("63536738-d64b-48ae-aeb8-82761523fa67", card.store);
|
||||
assertEquals("jö", card.store);
|
||||
assertEquals("", card.note);
|
||||
assertEquals(null, card.validFrom);
|
||||
assertEquals(null, card.expiry);
|
||||
|
||||
@@ -111,10 +111,11 @@ public class ImportURITest {
|
||||
|
||||
@Test
|
||||
public void failToParseBadData() {
|
||||
String[] urls = new String[3];
|
||||
String[] urls = new String[4];
|
||||
urls[0] = "https://brarcher.github.io/loyalty-card-locker/share?stare=store¬e=note&cardid=12345&barcodetype=ITF&headercolor=-416706";
|
||||
urls[1] = "https://thelastproject.github.io/Catima/share#stare%3Dstore%26note%3Dnote%26balance%3D0%26cardid%3D12345%26barcodetype%3DITF%26headercolor%3D-416706";
|
||||
urls[2] = "https://catima.app/share#stare%3Dstore%26note%3Dnote%26balance%3D0%26cardid%3D12345%26barcodetype%3DITF%26headercolor%3D-416706";
|
||||
urls[3] = "https://catima.app/share#";
|
||||
|
||||
for (String url : urls) {
|
||||
try {
|
||||
|
||||
Binary file not shown.
@@ -1,8 +1,8 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
plugins {
|
||||
id 'com.android.application' version '7.0.4' apply false
|
||||
id 'com.github.spotbugs' version "4.7.5" apply false
|
||||
id 'com.android.application' version '7.4.2' apply false
|
||||
id 'com.github.spotbugs' version "5.0.14" apply false
|
||||
}
|
||||
|
||||
allprojects {
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
- Podpora nastavení začátku platnosti karty
|
||||
- Oprava importu Stocard (změnil se formát exportu Stocard)
|
||||
|
||||
1
fastlane/metadata/android/cs-CZ/changelogs/119.txt
Normal file
1
fastlane/metadata/android/cs-CZ/changelogs/119.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Použít barvy motivu Material You na více zařízeních (aktualizace knihovny Google)
|
||||
@@ -1,2 +1,2 @@
|
||||
- Dlouhé kliknutí na kartu vyvolá možnost zkopírovat ID karty do schránky. (pull #49 (https://github.com/brarcher/loyalty-card-locker/issues/49))
|
||||
- Tlačítko Zpět v zobrazení Vstup/Export nyní funguje a přesune uživatele do hlavního zobrazení
|
||||
- Tlačítko Zpět v zobrazení Import/Export nyní funguje a přesune uživatele do hlavního zobrazení
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
- Support setting start of card validity
|
||||
- Support setting start of card validity
|
||||
- Fix Stocard import (Stocard's export format changed)
|
||||
1
fastlane/metadata/android/en-US/changelogs/119.txt
Normal file
1
fastlane/metadata/android/en-US/changelogs/119.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Use Material You colours on more devices (Google library update)
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 59 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 56 KiB |
2
fastlane/metadata/android/fr-FR/changelogs/116.txt
Normal file
2
fastlane/metadata/android/fr-FR/changelogs/116.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Correction de la boîte de dialogue de dépense rapide qui ne permettait pas l'utilisation de la virgule comme séparateur
|
||||
- Prise en charge du chargement d'images à partir du gestionnaire de fichiers
|
||||
@@ -1 +1,2 @@
|
||||
-Prise en charge du début de la validité de la carte
|
||||
- Prise en charge du début de la validité de la carte
|
||||
- Correction de l'importation Stocard (le format d'exportation de Stocard a changé)
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
- Supporto alla validità della carta
|
||||
- Sistemata l'importazione da Stocard (è cambiato il formato di esportazione di Stocard)
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
- Suporte a configuração da data de início de validade
|
||||
- Correção na importação Stocard (o formato de exportação Stocard foi alterado)
|
||||
|
||||
1
fastlane/metadata/android/pt-PT/changelogs/119.txt
Normal file
1
fastlane/metadata/android/pt-PT/changelogs/119.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Usar cores Material You em mais dispositivos (atualização da biblioteca Google)
|
||||
@@ -1,2 +1,2 @@
|
||||
- Clique longo em um cartão faz com que apareça uma opção para copiar o ID do card para a área de transferência. (pull #49 (https://github.com/brarcher/loyalty-card-locker/issues/49))
|
||||
- O botão de voltar agora funciona quando na tela de importar/exportar, levando a usuária para a tela principal
|
||||
- Clique longo num cartão faz com que apareça uma opção para copiar o ID do cartão para a área de transferência. (pull #49 (https://github.com/brarcher/loyalty-card-locker/issues/49))
|
||||
- O botão de voltar agora funciona no ecrã de importar/exportar, levando ao ecrã principal
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
- При редактировании номера карты, поле предварительно заполняется текущим номером. (запрос №94 (https://github.com/brarcher/loyalty-card-locker/pull/94))
|
||||
- Ширина формируемых штрихкодов ограничена для уменьшения потребления памяти и ошибок её нехватки. (запрос №103 (https://github.com/brarcher/loyalty-card-locker/pull/103))
|
||||
- При редактировании карты кнопка ввода карты меняется на кнопку редактирования, если указанный номер уже используется. (запрос №104 (https://github.com/brarcher/loyalty-card-locker/pull/104))
|
||||
- Цветовая гамма изменена на более мягкую и сочетающуюся с значком приложения, упрощена страница просмотра карты. (запрос №107 (https://github.com/brarcher/loyalty-card-locker/pull/107))
|
||||
- Добавлен вводный мастер, включающийся при первом запуске приложения. (запрос №108 (https://github.com/brarcher/loyalty-card-locker/pull/108))
|
||||
- При редактировании номера, поле предварительно заполняется текущим. (№94)
|
||||
- Ограничена ширина формируемых штрих-кодов для уменьшения потребления памяти. (№103)
|
||||
- Кнопка «Ввести карту» меняется на «Изменить карту», если указанный номер уже используется. (№104)
|
||||
- Цветовая гамма смягчена и сочетается со значком приложения, упрощена страница просмотра карты. (№107)
|
||||
- Сделан вводный мастер для первого запуска приложения. (№108)
|
||||
Все запросы см. в https://github.com/brarcher/loyalty-card-locker/pulls
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
- Добавлена возможность указания даты начала действия карты
|
||||
- Исправлен импорт из Stocard (в Stocard изменился формат выгрузки)
|
||||
|
||||
1
fastlane/metadata/android/ru-RU/changelogs/119.txt
Normal file
1
fastlane/metadata/android/ru-RU/changelogs/119.txt
Normal file
@@ -0,0 +1 @@
|
||||
- На большинстве устройств используются цвета Material You (обновлена библиотека Google)
|
||||
@@ -1,3 +1,4 @@
|
||||
- Добавлена возможность блокировки поворота экрана в меню показа карты. Если заблокирован, экран перейдёт в "обычную" ориентацию и дальше поворачиваться не будет. (запрос №128 (https://github.com/brarcher/loyalty-card-locker/pull/128))
|
||||
- Устранён сбой при выборе на главном экране карты, которая не может быть открыта: приложение корректно сообщает об ошибке. (запрос №132 (https://github.com/brarcher/loyalty-card-locker/pull/132))
|
||||
- Исправлена проблема с нехваткой идентификаторов компоновки для вводного мастера. (запрос №128 (https://github.com/brarcher/loyalty-card-locker/pull/128))
|
||||
- Добавлена возможность блокировки поворота экрана в меню показа карты. Если заблокирован, экран перейдёт в "обычную" ориентацию и дальше поворачиваться не будет. (запрос №128)
|
||||
- Устранён сбой при выборе на главном экране карты, которая не может быть открыта: приложение корректно сообщает об ошибке. (запрос №132)
|
||||
- Исправлена проблема с нехваткой идентификаторов компоновки для вводного мастера. (запрос №128)
|
||||
Все запросы см. в https://github.com/brarcher/loyalty-card-locker/pulls
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
- Добавлена возможность создания ярлыков на домашнем экране при создании или редактировании карты. (запрос №155 (https://github.com/brarcher/loyalty-card-locker/pull/155))
|
||||
- Виджет удалён, поскольку был плохой заменой ярлыкам. (запрос №155 (https://github.com/brarcher/loyalty-card-locker/pull/155))
|
||||
- Исправлена выгрузка резервных копий для Android 7+. (запрос №153 (https://github.com/brarcher/loyalty-card-locker/pull/153))
|
||||
- Уточнён MIME-тип при выгрузке резервных копий. (запрос №156 (https://github.com/brarcher/loyalty-card-locker/pull/156))
|
||||
- Исправлена ошибка, из-за которой карту нельзя было редактировать. (запрос №155 (https://github.com/brarcher/loyalty-card-locker/pull/155))
|
||||
- Добавлена возможность создания ярлыков на домашнем экране при создании или редактировании карты. (запрос №155)
|
||||
- Виджет удалён, поскольку был плохой заменой ярлыкам. (запрос №155)
|
||||
- Исправлена выгрузка резервных копий для Android 7+. (запрос №153)
|
||||
- Уточнён MIME-тип при выгрузке резервных копий. (запрос №156)
|
||||
- Исправлена ошибка, из-за которой карту нельзя было редактировать. (запрос №155)
|
||||
Все запросы см. в https://github.com/brarcher/loyalty-card-locker/pulls
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
- Добавлена возможость поиска карты (запрос №320 (https://github.com/brarcher/loyalty-card-locker/pull/320))
|
||||
- Добавлена возможность отправки и получения карт (запрос №321 (https://github.com/brarcher/loyalty-card-locker/pull/321))
|
||||
- Добавлена поддержка тёмного режима (запрос №322 (https://github.com/brarcher/loyalty-card-locker/pull/322))
|
||||
- Карты лояльности теперь могут быть без штрихкодов (запрос №324 (https://github.com/brarcher/loyalty-card-locker/pull/324))
|
||||
- Примечания могут отображаться в несколько строк (запрос №326 (https://github.com/brarcher/loyalty-card-locker/pull/326))
|
||||
- Улучшено масштабирование примечаний (запрос №319 (https://github.com/brarcher/loyalty-card-locker/pull/319))
|
||||
- Улучшена видимость уведомлений и значка приложения (запрос №330 (https://github.com/brarcher/loyalty-card-locker/pull/330))
|
||||
- Возможность поиска карты (№320)
|
||||
- Возможность отправки и получения карт (№321)
|
||||
- Поддержка тёмного режима (№322)
|
||||
- Поддержка карт без штрих-кодов (№324)
|
||||
- Примечания могут отображаться в несколько строк (№326)
|
||||
- Улучшено масштабирование примечаний (№319)
|
||||
- Улучшена видимость уведомлений и значка приложения (№330)
|
||||
- Целевой SDK обновлён до Android 10
|
||||
- Улучшены следующие переводы:
|
||||
- немецкий
|
||||
- итальянский
|
||||
- нидерладский
|
||||
- польский
|
||||
- русский
|
||||
- Улучшены переводы: немецкий, итальянский, нидерландский, польский, русский.
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
- СУЩЕСТВЕННОЕ ИЗМЕНЕНИЕ: Изменён формат резервного копирования, смотри https://github.com/TheLastProject/Catima/wiki/Export-format
|
||||
- СУЩЕСТВЕННОЕ ИЗМЕНЕНИЕ: Изменён формат URL отправки карты, смотри https://github.com/TheLastProject/Catima/wiki/Card-sharing-URL-format
|
||||
- Добавлена возможность использования подсветки при сканировании
|
||||
- Добавлена поддержка штрихкодов формата UPC-E
|
||||
- Добавлена возможность сохранения фотографий лицевой и тыльной стороны карты
|
||||
- Добавлена возможность загрузки из ZIP-архивов, защищённых паролем
|
||||
- Добавлена возможность импорта из Stocard (бета)
|
||||
- Устранены бесполезные пробелы в загруженных из FidMe примечаниях
|
||||
- Добавлена поддержка нового формата выгрузки Voucher Vault
|
||||
- Устранено перекртие плавающих кнопок действий другими элементами интерфейса на Android 4
|
||||
- Исправлено верхнее поле панели приложения при просмотре карты
|
||||
- ВАЖНО: Изменён формат резервирования (ссылка устарела)
|
||||
- ВАЖНО: Изменён формат URL отправки карты (ссылка устарела)
|
||||
- Возможность включения подсветки при сканировании
|
||||
- Поддержка штрихкодов UPC-E
|
||||
- Хранение фото лицевой и тыльной стороны карты
|
||||
- Импорт из ZIP с паролем
|
||||
- Импорт из Stocard (бета)
|
||||
- Устранены лишние пробелы в примечаниях из FidMe
|
||||
- Поддержка нового формата Voucher Vault
|
||||
- Устранено перекрытие кнопок в Android 4
|
||||
- Исправлено верхнее поле панели при просмотре карты
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
- Яркость экрана увеличена до максимальной при отображении карты, чтобы улучшить считывание штрихкода сканерами. (запрос №54 (https://github.com/brarcher/loyalty-card-locker/pull/54))
|
||||
- Добавлен запрос подтверждения удаления карты. (запрос №55 (https://github.com/brarcher/loyalty-card-locker/pull/55))
|
||||
- Добавлены переводы на немецкий (запрос №57 (https://github.com/brarcher/loyalty-card-locker/pull/57)) и чешский (запрос №58 (https://github.com/brarcher/loyalty-card-locker/pull/58)).
|
||||
- Уточнён перевод на итальянский. (запрос №66 (https://github.com/brarcher/loyalty-card-locker/pull/66))
|
||||
- Яркость экрана увеличена до максимальной при отображении карты, чтобы улучшить считывание штрих-кода сканерами (запрос №54).
|
||||
- Добавлен запрос подтверждения удаления карты (запрос №55).
|
||||
- Добавлены переводы на немецкий (запрос №57) и чешский (запрос №58).
|
||||
- Уточнён перевод на итальянский (запрос №66).
|
||||
Все запросы см. в https://github.com/brarcher/loyalty-card-locker/pulls
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
«Шкафчик» в названии не был интуитивно понятным. Чтобы устранить это, betsythefc создал новый значок приложения, который лучше отражает назначение приложения: хранить использующие штрихкоды карты лояльности. Одовременно со значком и название приложения изменилось на «Брелок для карт лояльности».
|
||||
«Шкафчик» в названии не был интуитивно понятным. Поэтому betsythefc создал новый значок приложения, который лучше отражает его назначение: хранить карты лояльности со штрих-кодами. Одновременно изменилось и название приложения на «Брелок для карт лояльности».
|
||||
|
||||
Дополнительные улучшения:
|
||||
|
||||
- Загрузка и выгрузка карт изменена для большей гибкости. (запрос №76 (https://github.com/brarcher/loyalty-card-locker/pull/76))
|
||||
- Добавлен литовский перевод. (запрос №62 (https://github.com/brarcher/loyalty-card-locker/pull/62))
|
||||
- Добавлен французский перевод. (запрос №80 (https://github.com/brarcher/loyalty-card-locker/pull/80))
|
||||
Дополнительно (все запросы см. в https://github.com/brarcher/loyalty-card-locker/pulls):
|
||||
- Более гибкая загрузка и выгрузка карт (запрос №76).
|
||||
- Добавлен литовский перевод (запрос №62).
|
||||
- Добавлен французский перевод (запрос №80).
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
- Förbättrat stöd för skärmläsare
|
||||
- Kraschar inte när den försöker öppna en video från galleriet
|
||||
- Kraschar inte vid försök att öppna en video från galleriet
|
||||
- Svepstöd på lojalitetskortets översiktssida
|
||||
- Nollställ inte grupp vid klickning på tillbakaknappen
|
||||
|
||||
@@ -16,5 +16,4 @@
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|
||||
android.enableJetifier=true
|
||||
android.useAndroidX=true
|
||||
|
||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,6 @@
|
||||
#Sun Jul 25 20:59:51 CEST 2021
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
|
||||
distributionPath=wrapper/dists
|
||||
zipStorePath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
Reference in New Issue
Block a user