mirror of
https://github.com/m2049r/xmrwallet
synced 2025-09-03 08:23:04 +02:00
Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
0712efec78 | ||
![]() |
341df6c6a3 | ||
![]() |
ab8fb82c1b | ||
![]() |
22d9173cea |
@@ -8,8 +8,8 @@ android {
|
||||
applicationId "com.m2049r.xmrwallet"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 30
|
||||
versionCode 1201
|
||||
versionName "2.2.1 'René'"
|
||||
versionCode 1301
|
||||
versionName "2.3.1 'Doménikos'"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
|
@@ -229,7 +229,7 @@ std::vector<std::string> java2cpp(JNIEnv *env, jobject arrayList) {
|
||||
return result;
|
||||
}
|
||||
|
||||
jobject cpp2java(JNIEnv *env, const std::vector<std::string>& vector) {
|
||||
jobject cpp2java(JNIEnv *env, const std::vector<std::string> &vector) {
|
||||
|
||||
jmethodID java_util_ArrayList_ = env->GetMethodID(class_ArrayList, "<init>", "(I)V");
|
||||
jmethodID java_util_ArrayList_add = env->GetMethodID(class_ArrayList, "add",
|
||||
@@ -301,12 +301,13 @@ Java_com_m2049r_xmrwallet_model_WalletManager_openWalletJ(JNIEnv *env, jobject i
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_recoveryWalletJ(JNIEnv *env, jobject instance,
|
||||
jstring path, jstring password,
|
||||
jstring mnemonic,
|
||||
jstring mnemonic, jstring offset,
|
||||
jint networkType,
|
||||
jlong restoreHeight) {
|
||||
const char *_path = env->GetStringUTFChars(path, nullptr);
|
||||
const char *_password = env->GetStringUTFChars(password, nullptr);
|
||||
const char *_mnemonic = env->GetStringUTFChars(mnemonic, nullptr);
|
||||
const char *_offset = env->GetStringUTFChars(offset, nullptr);
|
||||
Monero::NetworkType _networkType = static_cast<Monero::NetworkType>(networkType);
|
||||
|
||||
Bitmonero::Wallet *wallet =
|
||||
@@ -315,11 +316,14 @@ Java_com_m2049r_xmrwallet_model_WalletManager_recoveryWalletJ(JNIEnv *env, jobje
|
||||
std::string(_password),
|
||||
std::string(_mnemonic),
|
||||
_networkType,
|
||||
(uint64_t) restoreHeight);
|
||||
(uint64_t) restoreHeight,
|
||||
1, // kdf_rounds
|
||||
std::string(_offset));
|
||||
|
||||
env->ReleaseStringUTFChars(path, _path);
|
||||
env->ReleaseStringUTFChars(password, _password);
|
||||
env->ReleaseStringUTFChars(mnemonic, _mnemonic);
|
||||
env->ReleaseStringUTFChars(offset, _offset);
|
||||
return reinterpret_cast<jlong>(wallet);
|
||||
}
|
||||
|
||||
@@ -533,7 +537,7 @@ Java_com_m2049r_xmrwallet_model_WalletManager_resolveOpenAlias(JNIEnv *env, jobj
|
||||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_setProxy(JNIEnv *env, jobject instance,
|
||||
jstring address) {
|
||||
jstring address) {
|
||||
const char *_address = env->GetStringUTFChars(address, nullptr);
|
||||
bool rc =
|
||||
Bitmonero::WalletManagerFactory::getWalletManager()->setProxy(std::string(_address));
|
||||
@@ -570,9 +574,12 @@ Java_com_m2049r_xmrwallet_model_WalletManager_closeJ(JNIEnv *env, jobject instan
|
||||
/**********************************/
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getSeed(JNIEnv *env, jobject instance) {
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getSeed(JNIEnv *env, jobject instance, jstring seedOffset) {
|
||||
const char *_seedOffset = env->GetStringUTFChars(seedOffset, nullptr);
|
||||
Bitmonero::Wallet *wallet = getHandle<Bitmonero::Wallet>(env, instance);
|
||||
return env->NewStringUTF(wallet->seed().c_str());
|
||||
jstring seed = env->NewStringUTF(wallet->seed(std::string(_seedOffset)).c_str());
|
||||
env->ReleaseStringUTFChars(seedOffset, _seedOffset);
|
||||
return seed;
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
@@ -740,7 +747,7 @@ Java_com_m2049r_xmrwallet_model_Wallet_getConnectionStatusJ(JNIEnv *env, jobject
|
||||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_setProxy(JNIEnv *env, jobject instance,
|
||||
jstring address) {
|
||||
jstring address) {
|
||||
const char *_address = env->GetStringUTFChars(address, nullptr);
|
||||
Bitmonero::Wallet *wallet = getHandle<Bitmonero::Wallet>(env, instance);
|
||||
bool rc = wallet->setProxy(std::string(_address));
|
||||
@@ -1262,7 +1269,7 @@ jobject newTransactionInfo(JNIEnv *env, Bitmonero::TransactionInfo *info) {
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
jobject cpp2java(JNIEnv *env, const std::vector<Bitmonero::TransactionInfo *>& vector) {
|
||||
jobject cpp2java(JNIEnv *env, const std::vector<Bitmonero::TransactionInfo *> &vector) {
|
||||
|
||||
jmethodID java_util_ArrayList_ = env->GetMethodID(class_ArrayList, "<init>", "(I)V");
|
||||
jmethodID java_util_ArrayList_add = env->GetMethodID(class_ArrayList, "add",
|
||||
|
@@ -81,6 +81,9 @@ public class GenerateFragment extends Fragment {
|
||||
private TextInputLayout etWalletRestoreHeight;
|
||||
private Button bGenerate;
|
||||
|
||||
private Button bSeedOffset;
|
||||
private TextInputLayout etSeedOffset;
|
||||
|
||||
private String type = null;
|
||||
|
||||
private void clearErrorOnTextEntry(final TextInputLayout textInputLayout) {
|
||||
@@ -118,6 +121,8 @@ public class GenerateFragment extends Fragment {
|
||||
etWalletSpendKey = view.findViewById(R.id.etWalletSpendKey);
|
||||
etWalletRestoreHeight = view.findViewById(R.id.etWalletRestoreHeight);
|
||||
bGenerate = view.findViewById(R.id.bGenerate);
|
||||
bSeedOffset = view.findViewById(R.id.bSeedOffset);
|
||||
etSeedOffset = view.findViewById(R.id.etSeedOffset);
|
||||
|
||||
etWalletAddress.getEditText().setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
|
||||
etWalletViewKey.getEditText().setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
|
||||
@@ -222,6 +227,8 @@ public class GenerateFragment extends Fragment {
|
||||
}
|
||||
return false;
|
||||
});
|
||||
bSeedOffset.setVisibility(View.VISIBLE);
|
||||
bSeedOffset.setOnClickListener(v -> toggleSeedOffset());
|
||||
break;
|
||||
case TYPE_KEY:
|
||||
case TYPE_VIEWONLY:
|
||||
@@ -288,6 +295,18 @@ public class GenerateFragment extends Fragment {
|
||||
return view;
|
||||
}
|
||||
|
||||
void toggleSeedOffset() {
|
||||
if (etSeedOffset.getVisibility() == View.VISIBLE) {
|
||||
etSeedOffset.getEditText().getText().clear();
|
||||
etSeedOffset.setVisibility(View.GONE);
|
||||
bSeedOffset.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_baseline_keyboard_arrow_down_24, 0, 0, 0);
|
||||
} else {
|
||||
etSeedOffset.setVisibility(View.VISIBLE);
|
||||
bSeedOffset.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_baseline_keyboard_arrow_up_24, 0, 0, 0);
|
||||
etSeedOffset.requestFocusFromTouch();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkName() {
|
||||
String name = etWalletName.getEditText().getText().toString();
|
||||
boolean ok = true;
|
||||
@@ -422,12 +441,13 @@ public class GenerateFragment extends Fragment {
|
||||
break;
|
||||
case TYPE_SEED:
|
||||
if (!checkMnemonic()) return;
|
||||
String seed = etWalletMnemonic.getEditText().getText().toString();
|
||||
final String seed = etWalletMnemonic.getEditText().getText().toString();
|
||||
bGenerate.setEnabled(false);
|
||||
if (fingerprintAuthAllowed) {
|
||||
KeyStoreHelper.saveWalletUserPass(requireActivity(), name, password);
|
||||
}
|
||||
activityCallback.onGenerate(name, crazyPass, seed, height);
|
||||
final String offset = etSeedOffset.getEditText().getText().toString();
|
||||
activityCallback.onGenerate(name, crazyPass, seed, offset, height);
|
||||
break;
|
||||
case TYPE_LEDGER:
|
||||
bGenerate.setEnabled(false);
|
||||
@@ -491,7 +511,7 @@ public class GenerateFragment extends Fragment {
|
||||
public interface Listener {
|
||||
void onGenerate(String name, String password);
|
||||
|
||||
void onGenerate(String name, String password, String seed, long height);
|
||||
void onGenerate(String name, String password, String seed, String offset, long height);
|
||||
|
||||
void onGenerate(String name, String password, String address, String viewKey, String spendKey, long height);
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -929,7 +929,8 @@ public class LoginActivity extends BaseActivity
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGenerate(final String name, final String password, final String seed,
|
||||
public void onGenerate(final String name, final String password,
|
||||
final String seed, final String offset,
|
||||
final long restoreHeight) {
|
||||
createWallet(name, password,
|
||||
new WalletCreator() {
|
||||
@@ -941,7 +942,7 @@ public class LoginActivity extends BaseActivity
|
||||
@Override
|
||||
public boolean createWallet(File aFile, String password) {
|
||||
Wallet newWallet = WalletManager.getInstance()
|
||||
.recoveryWallet(aFile, password, seed, restoreHeight);
|
||||
.recoveryWallet(aFile, password, seed, offset, restoreHeight);
|
||||
return checkAndCloseWallet(newWallet);
|
||||
}
|
||||
});
|
||||
|
@@ -67,6 +67,8 @@ public class SubaddressFragment extends Fragment implements SubaddressInfoAdapte
|
||||
void setToolbarButton(int type);
|
||||
|
||||
void showSubaddress(View view, final int subaddressIndex);
|
||||
|
||||
void saveWallet();
|
||||
}
|
||||
|
||||
public interface ProgressListener {
|
||||
@@ -217,7 +219,9 @@ public class SubaddressFragment extends Fragment implements SubaddressInfoAdapte
|
||||
protected Boolean doInBackground(Void... params) {
|
||||
if (params.length != 0) return false;
|
||||
wallet.getNewSubaddress();
|
||||
wallet.store();
|
||||
if (activityCallback != null) {
|
||||
activityCallback.saveWallet();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -505,6 +505,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
|
||||
Timber.d("onResume()");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveWallet() {
|
||||
if (mIsBound) { // no point in talking to unbound service
|
||||
Intent intent = new Intent(getApplicationContext(), WalletService.class);
|
||||
@@ -609,9 +610,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
|
||||
@Override
|
||||
public void onWalletStored(final boolean success) {
|
||||
runOnUiThread(() -> {
|
||||
if (success) {
|
||||
Toast.makeText(WalletActivity.this, getString(R.string.status_wallet_unloaded), Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
if (!success) {
|
||||
Toast.makeText(WalletActivity.this, getString(R.string.status_wallet_unload_failed), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
|
@@ -129,7 +129,7 @@ public class Wallet {
|
||||
ConnectionStatus_WrongVersion
|
||||
}
|
||||
|
||||
public native String getSeed();
|
||||
public native String getSeed(String offset);
|
||||
|
||||
public native String getSeedLanguage();
|
||||
|
||||
@@ -147,7 +147,7 @@ public class Wallet {
|
||||
|
||||
private native Status statusWithErrorString();
|
||||
|
||||
public native boolean setPassword(String password);
|
||||
public native synchronized boolean setPassword(String password);
|
||||
|
||||
public String getAddress() {
|
||||
return getAddress(accountIndex);
|
||||
@@ -203,12 +203,10 @@ public class Wallet {
|
||||
public native String getSecretSpendKey();
|
||||
|
||||
public boolean store() {
|
||||
final boolean ok = store("");
|
||||
Timber.d("stored");
|
||||
return ok;
|
||||
return store("");
|
||||
}
|
||||
|
||||
public native boolean store(String path);
|
||||
public native synchronized boolean store(String path);
|
||||
|
||||
public boolean close() {
|
||||
disposePendingTransaction();
|
||||
|
@@ -124,19 +124,19 @@ public class WalletManager {
|
||||
|
||||
private native long openWalletJ(String path, String password, int networkType);
|
||||
|
||||
public Wallet recoveryWallet(File aFile, String password, String mnemonic) {
|
||||
return recoveryWallet(aFile, password, mnemonic, 0);
|
||||
}
|
||||
|
||||
public Wallet recoveryWallet(File aFile, String password, String mnemonic, long restoreHeight) {
|
||||
long walletHandle = recoveryWalletJ(aFile.getAbsolutePath(), password, mnemonic,
|
||||
public Wallet recoveryWallet(File aFile, String password,
|
||||
String mnemonic, String offset,
|
||||
long restoreHeight) {
|
||||
long walletHandle = recoveryWalletJ(aFile.getAbsolutePath(), password,
|
||||
mnemonic, offset,
|
||||
getNetworkType().getValue(), restoreHeight);
|
||||
Wallet wallet = new Wallet(walletHandle);
|
||||
manageWallet(wallet);
|
||||
return wallet;
|
||||
}
|
||||
|
||||
private native long recoveryWalletJ(String path, String password, String mnemonic,
|
||||
private native long recoveryWalletJ(String path, String password,
|
||||
String mnemonic, String offset,
|
||||
int networkType, long restoreHeight);
|
||||
|
||||
public Wallet createWalletWithKeys(File aFile, String password, String language, long restoreHeight,
|
||||
|
@@ -323,6 +323,7 @@ public class NetCipherHelper implements StatusCallback {
|
||||
}
|
||||
|
||||
private OkHttpClient getClient() {
|
||||
if (mockClient != null) return mockClient; // Unit-test mode
|
||||
final OkHttpClient client = getInstance().client;
|
||||
if ((username != null) && (!username.isEmpty())) {
|
||||
final DigestAuthenticator authenticator = new DigestAuthenticator(new Credentials(username, password));
|
||||
@@ -349,6 +350,9 @@ public class NetCipherHelper implements StatusCallback {
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
// for unit tests only
|
||||
static public OkHttpClient mockClient = null;
|
||||
}
|
||||
|
||||
private static final String PREFS_NAME = "tor";
|
||||
|
10
app/src/main/res/drawable/ic_baseline_cancel_24.xml
Normal file
10
app/src/main/res/drawable/ic_baseline_cancel_24.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="?colorPrimaryVariant"
|
||||
android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2zM17,15.59L15.59,17 12,13.41 8.41,17 7,15.59 10.59,12 7,8.41 8.41,7 12,10.59 15.59,7 17,8.41 13.41,12 17,15.59z" />
|
||||
</vector>
|
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?colorPrimaryVariant"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="?colorPrimaryVariant"
|
||||
android:pathData="M7.41,8.59L12,13.17l4.59,-4.58L18,10l-6,6 -6,-6 1.41,-1.41z" />
|
||||
</vector>
|
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?colorPrimaryVariant"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="?colorPrimaryVariant"
|
||||
android:pathData="M7.41,15.41L12,10.83l4.59,4.58L18,14l-6,-6 -6,6z" />
|
||||
</vector>
|
@@ -15,7 +15,6 @@
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/header_top_first"
|
||||
app:errorEnabled="true">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
@@ -34,7 +33,7 @@
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/header_top_first"
|
||||
android:layout_marginTop="@dimen/header_top_first"
|
||||
app:boxStrokeErrorColor="@color/monerujoPrimary"
|
||||
app:errorEnabled="true"
|
||||
app:errorIconDrawable="@drawable/ic_smiley_gunther_filled"
|
||||
@@ -78,7 +77,7 @@
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/header_top_first"
|
||||
android:layout_marginTop="@dimen/header_top_first"
|
||||
android:visibility="gone"
|
||||
app:errorEnabled="true">
|
||||
|
||||
@@ -92,12 +91,41 @@
|
||||
android:textAlignment="textStart" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/bSeedOffset"
|
||||
style="@style/MoneroIconButton.Small"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:visibility="gone"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:text="@string/label_seed_offset_encrypt"
|
||||
app:icon="@drawable/ic_baseline_keyboard_arrow_down_24" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/etSeedOffset"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/header_top_first"
|
||||
android:visibility="gone">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
style="@style/MoneroEdit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/seed_offset_hint"
|
||||
android:inputType="textVisiblePassword"
|
||||
android:maxLines="1"
|
||||
android:textAlignment="textStart" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/etWalletAddress"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/header_top_first"
|
||||
android:layout_marginTop="@dimen/header_top_first"
|
||||
android:visibility="gone"
|
||||
app:counterEnabled="true"
|
||||
app:counterMaxLength="95"
|
||||
@@ -118,7 +146,7 @@
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/header_top_first"
|
||||
android:layout_marginTop="@dimen/header_top_first"
|
||||
android:visibility="gone"
|
||||
app:counterEnabled="true"
|
||||
app:counterMaxLength="64"
|
||||
@@ -139,7 +167,7 @@
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/header_top_first"
|
||||
android:layout_marginTop="@dimen/header_top_first"
|
||||
android:visibility="gone"
|
||||
app:counterEnabled="true"
|
||||
app:counterMaxLength="64"
|
||||
@@ -160,7 +188,7 @@
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/header_top_first"
|
||||
android:layout_marginTop="@dimen/header_top_first"
|
||||
android:visibility="gone"
|
||||
app:errorEnabled="true">
|
||||
|
||||
@@ -179,7 +207,7 @@
|
||||
style="@style/MoneroButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_marginTop="@dimen/header_top_first"
|
||||
android:text="@string/generate_buttonGenerate" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@@ -18,12 +18,11 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
android:visibility="gone" />
|
||||
android:visibility="invisible" />
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/header_top">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroLabel.Heading"
|
||||
@@ -57,7 +56,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/header_top"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
android:visibility="visible">
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroLabel.Heading"
|
||||
@@ -66,15 +65,49 @@
|
||||
android:layout_gravity="center"
|
||||
android:text="@string/generate_mnemonic_label" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvWalletMnemonic"
|
||||
style="@style/MoneroText.Monospace.Mnemonic"
|
||||
<FrameLayout
|
||||
android:id="@+id/flWalletMnemonic"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/data_top"
|
||||
android:background="@drawable/backgound_seed"
|
||||
android:textAlignment="center"
|
||||
tools:text="tucks slackens vehicle doctor oaks aloof balding knife rays wise haggled cuisine navy ladder suitcase dusted last thorn pixels karate ticket nibs violin zapped slackens" />
|
||||
android:layout_marginTop="@dimen/data_top">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvWalletMnemonic"
|
||||
style="@style/MoneroText.Monospace.Mnemonic"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/backgound_seed"
|
||||
android:textAlignment="center"
|
||||
tools:text="tucks slackens vehicle doctor oaks aloof balding knife rays wise haggled cuisine navy ladder suitcase dusted last thorn pixels karate ticket nibs violin zapped slackens" />
|
||||
</FrameLayout>
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/bSeedOffset"
|
||||
style="@style/MoneroIconButton.Small"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:text="@string/label_seed_offset_encrypt"
|
||||
app:icon="@drawable/ic_baseline_keyboard_arrow_down_24" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/etSeedOffset"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/header_top_first"
|
||||
android:visibility="gone">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
style="@style/MoneroEdit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/seed_offset_hint"
|
||||
android:inputType="textVisiblePassword"
|
||||
android:maxLines="1"
|
||||
android:textAlignment="textStart" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
@@ -148,7 +181,7 @@
|
||||
android:drawablePadding="4dp"
|
||||
android:text="@string/label_wallet_advanced_details"
|
||||
android:visibility="gone"
|
||||
app:icon="@drawable/ic_add_circle_outline" />
|
||||
app:icon="@drawable/ic_baseline_keyboard_arrow_down_24" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/llAdvancedInfo"
|
||||
@@ -163,7 +196,6 @@
|
||||
android:id="@+id/llViewKey"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/header_top"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<string name="label_ok">D\'acord</string>
|
||||
<string name="label_cancel">Cancel·lar</string>
|
||||
<string name="label_close">Tancar</string>
|
||||
<string name="label_wallet_advanced_details">Premi aquí per informació més detallada</string>
|
||||
<string name="label_wallet_advanced_details">Informació més detallada</string>
|
||||
|
||||
<string name="label_send_success">Enviat correctament!</string>
|
||||
<string name="label_send_done">Fet</string>
|
||||
@@ -431,4 +431,7 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -24,7 +24,7 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">Abbrechen</string>
|
||||
<string name="label_close">Schließen</string>
|
||||
<string name="label_wallet_advanced_details">Berühren für Detailinfos</string>
|
||||
<string name="label_wallet_advanced_details">Detailinfos</string>
|
||||
|
||||
<string name="label_send_success">Erfolgreich gesendet</string>
|
||||
<string name="label_send_done">Fertig</string>
|
||||
@@ -432,4 +432,7 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -22,7 +22,7 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">Άκυρο</string>
|
||||
<string name="label_close">Κλείσιμο</string>
|
||||
<string name="label_wallet_advanced_details">Πάτησε για λεπτομερείς πληροφορίες</string>
|
||||
<string name="label_wallet_advanced_details">Λεπτομερείς πληροφορίες</string>
|
||||
|
||||
<string name="label_send_success">Αποστολή με επιτυχία</string>
|
||||
<string name="label_send_done">Έγινε</string>
|
||||
@@ -433,4 +433,7 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">Nuligi</string>
|
||||
<string name="label_close">Fermi</string>
|
||||
<string name="label_wallet_advanced_details">Tuŝi por pli detalaj informoj.</string>
|
||||
<string name="label_wallet_advanced_details">Detalaj informoj</string>
|
||||
|
||||
<string name="label_send_success">Sukcese sendis</string>
|
||||
<string name="label_send_done">Farite</string>
|
||||
@@ -433,4 +433,7 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<string name="label_ok">Aceptar</string>
|
||||
<string name="label_cancel">Cancelar</string>
|
||||
<string name="label_close">Cerrar</string>
|
||||
<string name="label_wallet_advanced_details">Toca para información más detallada</string>
|
||||
<string name="label_wallet_advanced_details">Información más detallada</string>
|
||||
|
||||
<string name="label_send_success">¡Éxito!</string>
|
||||
<string name="label_send_done">Hecho</string>
|
||||
@@ -424,4 +424,7 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">Katkesta</string>
|
||||
<string name="label_close">Sulge</string>
|
||||
<string name="label_wallet_advanced_details">Puuduta lisainfo saamiseks</string>
|
||||
<string name="label_wallet_advanced_details">Lisainfo</string>
|
||||
|
||||
<string name="label_send_success">Edukalt saadetud</string>
|
||||
<string name="label_send_done">Tehtud</string>
|
||||
@@ -431,4 +431,7 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">Annuler</string>
|
||||
<string name="label_close">Fermer</string>
|
||||
<string name="label_wallet_advanced_details">Toucher pour plus d\'infos</string>
|
||||
<string name="label_wallet_advanced_details">Plus d\'infos</string>
|
||||
|
||||
<string name="label_send_success">Envoi réussi</string>
|
||||
<string name="label_send_done">Fait</string>
|
||||
@@ -437,4 +437,7 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">Mégsem</string>
|
||||
<string name="label_close">Bezárás</string>
|
||||
<string name="label_wallet_advanced_details">Koppints a részletes informcáióért</string>
|
||||
<string name="label_wallet_advanced_details">Részletes információk</string>
|
||||
|
||||
<string name="label_send_success">Sikeresen elküldve</string>
|
||||
<string name="label_send_done">Kész</string>
|
||||
@@ -435,4 +435,7 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">Cancella</string>
|
||||
<string name="label_close">Chiudi</string>
|
||||
<string name="label_wallet_advanced_details">Tocca per informazioni dettagliate</string>
|
||||
<string name="label_wallet_advanced_details">Informazioni dettagliate</string>
|
||||
|
||||
<string name="label_send_success">Invio riuscito</string>
|
||||
<string name="label_send_done">Fatto</string>
|
||||
@@ -430,10 +430,13 @@
|
||||
<string name="restore_failed">Importazione fallita!</string>
|
||||
|
||||
<string name="menu_deletecache">Resetta portafogli!</string>
|
||||
<string name="deletecache_alert_message">Il reset del portafogli cancellerà tutte le informazioni locali (note, nomi di account & sottoindirizzi, chiavi di transazione private, ...)! Procedi solo se il portafogli è corrotto e non si carica!</string>
|
||||
<string name="deletecache_alert_message"><![CDATA[Il reset del portafogli cancellerà tutte le informazioni locali (note, nomi di account & sottoindirizzi, chiavi di transazione private, …)! Procedi solo se il portafogli è corrotto e non si carica!]]></string>
|
||||
|
||||
<string name="node_tor_error">Tor required</string>
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -23,7 +23,6 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">キャンセル</string>
|
||||
<string name="label_close">閉じる</string>
|
||||
<string name="label_wallet_advanced_details">タッチして詳細情報を見る</string>
|
||||
|
||||
<string name="label_send_success">送金成功</string>
|
||||
<string name="label_send_done">完了</string>
|
||||
@@ -436,4 +435,8 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_wallet_advanced_details">タッチして詳細情報を見る</string> <!-- Please chnage to "Detailed information" -->
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">Avbryt</string>
|
||||
<string name="label_close">Lukk</string>
|
||||
<string name="label_wallet_advanced_details">Trykk for detaljert informasjon</string>
|
||||
<string name="label_wallet_advanced_details">Detaljert informasjon</string>
|
||||
|
||||
<string name="label_send_success">Sendt suksessfullt!</string>
|
||||
<string name="label_send_done">Ferdig</string>
|
||||
@@ -433,4 +433,7 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">Annuleren</string>
|
||||
<string name="label_close">Sluiten</string>
|
||||
<string name="label_wallet_advanced_details">Tik voor meer informatie</string>
|
||||
<string name="label_wallet_advanced_details">Meer informatie</string>
|
||||
|
||||
<string name="label_send_success">Verzonden</string>
|
||||
<string name="label_send_done">Klaar</string>
|
||||
@@ -433,4 +433,7 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">Cancelar</string>
|
||||
<string name="label_close">Fechar</string>
|
||||
<string name="label_wallet_advanced_details">Toque para mais detalhes</string>
|
||||
<string name="label_wallet_advanced_details">Mais detalhes</string>
|
||||
|
||||
<string name="label_send_success">Enviado com sucesso</string>
|
||||
<string name="label_send_done">Concluído</string>
|
||||
@@ -420,10 +420,13 @@ aqui.</string>
|
||||
<string name="restore_failed">Importação falhou!</string>
|
||||
|
||||
<string name="menu_deletecache">Resetar carteira!</string>
|
||||
<string name="deletecache_alert_message">Esta carteira será resetada, perdendo todos os dados "off-chain" (como notas, contas & nomes de subendereços, chaves de transações privadas, ...)! Use isso SOMENTE se esta carteira estiver corrompida e não carrega!</string>
|
||||
<string name="deletecache_alert_message"><![CDATA[Esta carteira será resetada, perdendo todos os dados "off-chain" (como notas, contas & nomes de subendereços, chaves de transações privadas, …)! Use isso SOMENTE se esta carteira estiver corrompida e não carrega!]]></string>
|
||||
|
||||
<string name="node_tor_error">Tor required</string>
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">Cancelar</string>
|
||||
<string name="label_close">Fechar</string>
|
||||
<string name="label_wallet_advanced_details">Toca para informação detalhada</string>
|
||||
<string name="label_wallet_advanced_details">Informação detalhada</string>
|
||||
|
||||
<string name="label_send_success">Enviado com sucesso</string>
|
||||
<string name="label_send_done">Feito</string>
|
||||
@@ -437,4 +437,7 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -22,7 +22,7 @@
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_cancel">Anulează</string>
|
||||
<string name="label_close">Închide</string>
|
||||
<string name="label_wallet_advanced_details">Atinge pentru informații detaliate</string>
|
||||
<string name="label_wallet_advanced_details">Informații detaliate</string>
|
||||
|
||||
<string name="label_send_success">Trimis cu succes</string>
|
||||
<string name="label_send_done">Gata</string>
|
||||
@@ -433,4 +433,7 @@
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
@@ -298,24 +298,22 @@
|
||||
|
||||
<string name="help_ok">Я понял!</string> <!-- Note: "Got it" as in "I understand this" -->
|
||||
|
||||
<string name="help_nok">Nah…</string> <!-- Note: "Nah..." as in "I don't want this" -->
|
||||
<string name="help_getorbot">Get Orbot!</string>
|
||||
<string name="help_nok">Не…</string> <!-- Note: "Nah..." as in "I don't want this" -->
|
||||
<string name="help_getorbot">Скачать Orbot!</string>
|
||||
<string name="help_tor"><![CDATA[
|
||||
<h1>Tor</h1>
|
||||
<p>Tor, short for The Onion Router, is free and open-source software for enabling anonymous
|
||||
communication.</p>
|
||||
<p>Enabling Tor will route your connection through several relays and hide your IP address
|
||||
from the node. Keep in mind this is more private but also <b>slower</b>.</p>
|
||||
<p>In order to use Tor with Monerujo, you\'ll need Orbot installed on your phone. After
|
||||
installing Orbot, make sure to enable it by clicking the network icon on the wallet list
|
||||
screen.</p>
|
||||
<p>If you have issues connecting with Tor, try to get a new Identity in the Orbot App (icon
|
||||
on the top right).</p>
|
||||
<p>Tor, сокр. от The Onion Router, бесплатное и программное обеспечение с открытым исходным кодом для обеспечения анонимного общения.</p>
|
||||
<p>Включение Tor перенаправит подключение к нескольким узлам и скроет IP-адрес от узла.
|
||||
Имейте в виду, что это более приватно, но и <b>медленнее</b>.</p>
|
||||
<p>Для того, чтобы использовать Tor с Monerujo, вам понадобится Orbot на вашем телефоне. После установки Orbot убедитесь,
|
||||
что вы включили его, нажав значок сети на экране списка кошельков.</p>
|
||||
<p>Если у вас есть проблемы с подключением к Tor, попробуйте получить новую идентичность в приложении Orbot (значок
|
||||
в правом верхнем углу).</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_tor_enable"><![CDATA[
|
||||
<h1>Tor Node</h1>
|
||||
<p>This is an .onion node. In order to use it, you must enable Tor mode by touching the
|
||||
<img src="ic_network_clearnet"/> icon near the top of the Wallet List page.</p>
|
||||
<h1>Tor узел</h1>
|
||||
<p>Это .onion узел. Для того, чтобы использовать его, вы должны включить Tor, нажав
|
||||
<img src="ic_network_clearnet"/> значок в верхней части страницы списка кошельков.</p>
|
||||
]]></string>
|
||||
</resources>
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<string name="label_ok">Ок</string>
|
||||
<string name="label_cancel">Отмена</string>
|
||||
<string name="label_close">Закрыть</string>
|
||||
<string name="label_wallet_advanced_details">Нажмите для доп. информации</string>
|
||||
<string name="label_wallet_advanced_details">Дополнительная информация</string>
|
||||
|
||||
<string name="label_send_success">Успешно отправлено</string>
|
||||
<string name="label_send_done">Готово</string>
|
||||
@@ -431,10 +431,13 @@
|
||||
<string name="restore_failed">Ошибка импорта!</string>
|
||||
|
||||
<string name="menu_deletecache">Сбросить кошелек</string>
|
||||
<string name="deletecache_alert_message">This wallet will be reset, losing all off-chain data (like notes, account & subaddress names, private transaction keys, …)! Use this ONLY if this wallet is corrupt and does not load!</string>
|
||||
<string name="deletecache_alert_message">Этот кошелек будет сброшен, потеряв всю локальную информацию (например: заметки, имена адресов, приватные ключи транзакций, …)! Используйте это ТОЛЬКО если кошелек поврежден и не загружается!</string>
|
||||
|
||||
<string name="node_tor_error">Tor required</string>
|
||||
<string name="node_waiting">\u00A0WAITING FOR NODE\u00A0</string>
|
||||
<string name="tor_enable_background">"Allow Background Starts" in Orbot Settings to use Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai doesn\'t support Tor.\nDisable Tor to swap XMR.</string>
|
||||
<string name="node_tor_error">Необходим Tor</string>
|
||||
<string name="node_waiting">\u00A0ОЖИДАНИЕ УЗЛА\u00A0</string>
|
||||
<string name="tor_enable_background">Необходимо выбрать "Allow Background Starts" в настройках Orbot для использования Tor!</string>
|
||||
<string name="tor_noshift">SideShift.ai не поддерживает Tor.\nОтключите Tor для обмена XMR.</string>
|
||||
|
||||
<string name="label_seed_offset_encrypt">Seed encryption (EXPERIMENTAL)</string>
|
||||
<string name="seed_offset_hint">Seed Offset Phrase (optional)</string>
|
||||
</resources>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user