Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .changeset/olive-books-fly.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
"@thirdweb-dev/react-native": patch
---

Adds support for Japanese and Spanish

You can now pass 'ja' or 'es' to our ThirdwebProvider:

```
import { ThirdwebProvider } from '@thirdweb-dev/react-native';

<ThirdwebProvider locale={'ja'}>
<App />
</ ThirdwebProvider>
```
107 changes: 107 additions & 0 deletions packages/react-native/src/evm/i18n/en.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
export const _en = {
connect_wallet: {
label: "Connect Wallet",
},
connect_wallet_details: {
additional_actions: "Additional Actions",
address_copied_clipboard: "Address copied to clipboard",
backup_wallet: "Backup Wallet",
backup_personal_wallet: "Backup personal wallet",
import_wallet: "Import Wallet",
connected_to_smart_wallet: "Connected to a Smart Wallet",
current_network: "Current Network",
backup: "Backup",
connect_to_app: "Connect to App",
guest: "Guest",
connect: "Connect",
new_to_wallets: "New to wallets?",
view_transaction_history: "View Transaction History",
get_started: "Get started",
receive_funds: "Receive Funds",
search_or_paste_token: "Search or paste token address",
connect_a_wallet: "Connect a wallet",
continue_as_guest: "Continue as guest",
tos: "Terms of Service",
privacy_policy: "Privacy Policy",
by_connecting_you_agree: "By connecting, you agree to the",
copy_address_or_scan:
"Copy the wallet address or scan the QR code to send funds to this wallet.",
request_testnet_funds: "Request Testnet Funds",
your_address: "Your address",
qr_code: "QR Code",
select_token: "Select Token",
send_to: "Send to",
send_funds: "Send Funds",
no_tokens_found: "No Tokens found",
confirm_in_wallet: "Confirm in your wallet",
select_network: "Select Network",
switch_to: "Switch to",
no_supported_chains_detected: "No supported chains detected",
recommended: "Recommended",
network_mismatch:
"There's a network mismatch between your contract and your wallet",
},
connecting_wallet: {
creating_encrypting:
"Creating, encrypting and securing your device wallet.",
connecting_your_wallet: "Connecting your wallet",
connecting_through_pop_up:
"Login and connect your app through the wallet pop-up",
},
local_wallet: {
guest_wallet: "Guest Wallet",
backup_your_wallet: "Backup your wallet",
create_new_wallet: "Create new wallet",
private_key_mnemonic: "Or Private key or Mnemonic",
private_key_mnemonic_placeholder: "Private key / Mnemonic",
application_can_authorize_transactions:
"The application can authorize any transactions on behalf of the wallet without any approvals. We recommend only connecting to trusted applications.",
double_check_password: "Please, double check your password or private key.",
error_accessing_file: "Error accessing the file. Please try again.",
wallet_address: "Wallet Address",
this_will_download_json:
"This will download a JSON file containing your wallet information onto your device encrypted with the password.",
this_is_a_temporary_wallet:
"This is a temporary guest wallet. Download a backup if you don't want to loose access to it.",
},
smart_wallet: {
switch_to_smart: "Switch to Smart Wallet",
switch_to_personal: "Switch to Personal Wallet",
network_mismatch: "Network Mismatch",
connecting: "Connecting",
},
embedded_wallet: {
request_new_code: "Request new code",
sign_in: "Sign In",
sign_in_google: "Sign in with Google",
enter_your_email: "Enter your email address",
forgot_password: "Forgot password",
enter_account_recovery_code: "Enter account recovery code",
backup_your_account: "Backup your account",
},
wallet_connect: {
no_results_found: "No results found",
search_wallets: "Search Wallets",
},
common: {
connect_app: "Connect app",
unknown_network: "Unknown Network",
fetching: "Fetching...",
password: "Password",
reject: "Reject",
approve: "Approve",
switch_network: "Switch Network",
import: "Import",
username: "Username",
amount: "Amount",
send: "Send",
receive: "Receive",
continue: "Continue",
error_switching_network: "Error switching network",
or: "OR",
from: "from",
to: "from",
next: "Next",
learn_more: "Learn More",
},
};
113 changes: 113 additions & 0 deletions packages/react-native/src/evm/i18n/es.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
export const _es = {
connect_wallet: {
label: "Conectar Cartera",
},
connect_wallet_details: {
additional_actions: "Acciones Adicionales",
address_copied_clipboard: "Dirección copiada al portapapeles",
backup_wallet: "Respaldar Cartera",
backup_personal_wallet: "Respaldar cartera personal",
import_wallet: "Importar Cartera",
connected_to_smart_wallet: "Conectado a una Cartera Inteligente",
current_network: "Red Actual",
backup: "Respaldar",
connect_to_app: "Conectar a la Aplicación",
guest: "Invitado",
connect: "Conectar",
new_to_wallets: "¿Nuevo en billeteras?",
view_transaction_history: "Ver Historial de Transacciones",
get_started: "Comenzar",
receive_funds: "Recibir Fondos",
search_or_paste_token: "Buscar o pegar dirección del token",
connect_a_wallet: "Conectar una cartera",
continue_as_guest: "Continuar como invitado",
tos: "Términos de Servicio",
privacy_policy: "Política de Privacidad",
by_connecting_you_agree: "Al conectar, aceptas los",
copy_address_or_scan:
"Copia la dirección de la cartera o escanea el código QR para enviar fondos a esta cartera.",
request_testnet_funds: "Solicitar Fondos de Testnet",
your_address: "Tu dirección",
qr_code: "Código QR",
select_token: "Seleccionar Token",
send_to: "Enviar a",
send_funds: "Enviar Fondos",
no_tokens_found: "No se encontraron tokens",
confirm_in_wallet: "Confirma en tu cartera",
select_network: "Seleccionar Red",
switch_to: "Cambiar a",
no_supported_chains_detected: "No se detectaron cadenas compatibles",
recommended: "Recomendado",
network_mismatch: "Hay un desajuste de red entre tu contrato y tu cartera",
},
connecting_wallet: {
creating_encrypting:
"Creando, cifrando y asegurando tu cartera de dispositivo.",
connecting_your_wallet: "Conectando tu cartera",
connecting_through_pop_up:
"Iniciar sesión y conectar tu aplicación a través del pop-up de la cartera",
},
local_wallet: {
guest_wallet: "Cartera de Invitado",
backup_your_wallet: "Haz un respaldo de tu cartera",
create_new_wallet: "Crear nueva cartera",
private_key_mnemonic: "O clave privada o frase mnemotécnica",
private_key_mnemonic_placeholder: "Clave privada / Frase mnemotécnica",
application_can_authorize_transactions:
"La aplicación puede autorizar cualquier transacción en nombre de la cartera sin aprobaciones. Recomendamos conectar solo a aplicaciones de confianza.",
double_check_password: "Por favor, verifica tu contraseña o clave privada.",
error_accessing_file:
"Error al acceder al archivo. Por favor, inténtalo de nuevo.",
wallet_address: "Dirección de la Cartera",
this_will_download_json:
"Esto descargará un archivo JSON que contiene la información de tu cartera en tu dispositivo cifrada con la contraseña.",
this_is_a_temporary_wallet:
"Esta es una cartera de invitado temporal. Descarga un respaldo si no quieres perder el acceso a ella.",
},
smart_wallet: {
switch_to_smart: "Cambiar a Cartera Inteligente",
switch_to_personal: "Cambiar a Cartera Personal",
network_mismatch: "Desajuste de Red",
connecting: "Conectando",
},
embedded_wallet: {
request_new_code: "Solicitar nuevo código",
sign_in: "Iniciar Sesión",
sign_in_google: "Iniciar sesión con Google",
enter_your_email: "Ingresa tu dirección de correo electrónico",
forgot_password: "Olvidé mi contraseña",
enter_account_recovery_code: "Ingresa el código de recuperación de cuenta",
backup_your_account: "Haz un respaldo de tu cuenta",
enter_password: "Introduce contraseña",
create_password: "Crear contraseña",
set_password_message:
"Establece una contraseña para tu cuenta. Necesitarás esta contraseña cuando te conectes desde un nuevo dispositivo.",
enter_password_for_email: "Ingresa la contraseña del correo electrónico",
make_sure_you_save_it: "Asegúrate de guardarlo",
},
wallet_connect: {
no_results_found: "No se encontraron resultados",
search_wallets: "Buscar Billeteras",
},
common: {
connect_app: "Conectar aplicación",
unknown_network: "Red Desconocida",
fetching: "Recuperando...",
password: "Contraseña",
reject: "Rechazar",
approve: "Aprobar",
switch_network: "Cambiar Red",
import: "Importar",
username: "Nombre de usuario",
amount: "Cantidad",
send: "Enviar",
receive: "Recibir",
continue: "Continuar",
error_switching_network: "Error al cambiar de red",
or: "O",
from: "de",
to: "a",
next: "Siguiente",
learn_more: "Saber más",
},
};
109 changes: 109 additions & 0 deletions packages/react-native/src/evm/i18n/ja.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
export const _ja = {
connect_wallet: {
label: "ウォレットを接続",
},
connect_wallet_details: {
additional_actions: "追加のアクション",
address_copied_clipboard: "アドレスがクリップボードにコピーされました",
backup_wallet: "ウォレットのバックアップ",
backup_personal_wallet: "個人のウォレットのバックアップ",
import_wallet: "ウォレットのインポート",
connected_to_smart_wallet: "スマートウォレットに接続されています",
current_network: "現在のネットワーク",
backup: "バックアップ",
connect_to_app: "アプリに接続",
guest: "ゲスト",
connect: "接続",
kpepe: "KPEPE",
new_to_wallets: "ウォレットは初めてですか?",
view_transaction_history: "取引履歴を見る",
get_started: "開始する",
receive_funds: "資金を受け取る",
search_or_paste_token: "トークンのアドレスを検索または貼り付け",
connect_a_wallet: "ウォレットを接続",
continue_as_guest: "ゲストとして続行",
tos: "利用規約",
privacy_policy: "プライバシーポリシー",
by_connecting_you_agree: "接続することで、あなたは以下に同意します",
copy_address_or_scan:
"ウォレットのアドレスをコピーするか、QRコードをスキャンして資金をこのウォレットに送信します",
request_testnet_funds: "テストネットの資金をリクエスト",
your_address: "あなたのアドレス",
qr_code: "QRコード",
select_token: "トークンを選択",
send_to: "送信先",
send_funds: "資金を送る",
no_tokens_found: "トークンが見つかりません",
confirm_in_wallet: "ウォレットで確認",
select_network: "ネットワークを選択",
switch_to: "に切り替える",
no_supported_chains_detected:
"サポートされているチェーンが検出されませんでした",
recommended: "推奨",
network_mismatch:
"あなたのコントラクトとウォレットの間にネットワークの不一致があります",
},
connecting_wallet: {
creating_encrypting: "デバイスのウォレットを作成、暗号化、保護しています",
connecting_your_wallet: "ウォレットを接続しています",
connecting_through_pop_up:
"ウォレットのポップアップを通じてアプリにログインして接続します",
},
local_wallet: {
guest_wallet: "ゲストウォレット",
backup_your_wallet: "ウォレットをバックアップ",
create_new_wallet: "新しいウォレットを作成",
private_key_mnemonic: "または、秘密鍵またはニーモニック",
private_key_mnemonic_placeholder: "秘密鍵 / ニーモニック",
application_can_authorize_transactions:
"アプリケーションは、承認なしにウォレットを代わりにトランザクションを許可することができます 信頼できるアプリケーションのみに接続することをおすすめします",
double_check_password: "パスワードまたは秘密鍵を再度確認してください",
error_accessing_file:
"ファイルにアクセスできませんでしたもう一度試してください",
wallet_address: "ウォレットのアドレス",
this_will_download_json:
"これにより、パスワードで暗号化されたウォレット情報を含むJSONファイルがデバイスにダウンロードされます",
this_is_a_temporary_wallet:
"これは一時的なゲストウォレットです アクセスを失わないようにバックアップをダウンロードしてください",
},
smart_wallet: {
switch_to_smart: "スマートウォレットに切り替え",
switch_to_personal: "個人のウォレットに切り替え",
network_mismatch: "ネットワークの不一致",
connecting: "接続中",
},
embedded_wallet: {
request_new_code: "新しいコードをリクエスト",
sign_in: "サインイン",
sign_in_google: "Googleでサインイン",
enter_your_email: "メールアドレスを入力",
forgot_password: "パスワードを忘れた",
enter_account_recovery_code: "アカウント回復コードを入力",
backup_your_account: "アカウントのバックアップ",
},
wallet_connect: {
no_results_found: "結果が見つかりません",
search_wallets: "ウォレットを検索",
},
common: {
connect_app: "アプリに接続",
unknown_network: "不明なネットワーク",
fetching: "取得中...",
password: "パスワード",
reject: "拒否",
approve: "承認",
switch_network: "ネットワークの切り替え",
import: "インポート",
username: "ユーザー名",
amount: "金額",
send: "送信",
receive: "受け取り",
continue: "続行",
error_switching_network: "ネットワークの切り替えエラー",
or: "または",
from: "から",
to: "まで",
next: "次へ",
learn_more: "もっと詳しく",
},
};
32 changes: 27 additions & 5 deletions packages/react-native/src/evm/i18n/strings.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
import { DeepPartial, deepMerge } from "../types/deepPartial";
import { Locale, LocaleType, _en } from "./types";
import { _en } from "./en";
import { _es } from "./es";
import { _ja } from "./ja";
import { Locale, LocaleType } from "./types";

export const setLocale = (locale: Locale): LocaleType => {
if (typeof locale === "string") {
if (locale === "en") {
return en();
switch (locale) {
case "en":
return _en;
case "es":
return _es;
case "ja":
return _ja;
default:
throw new Error(`Locale ${locale} not supported`);
}

throw new Error(`Locale ${locale} not supported`);
}
return locale;
};
Expand All @@ -18,3 +26,17 @@ export const en = (locale?: DeepPartial<LocaleType>): LocaleType => {
}
return deepMerge(_en, locale);
};

export const ja = (locale?: DeepPartial<LocaleType>): LocaleType => {
if (!locale) {
return _ja;
}
return deepMerge(_ja, locale);
};

export const es = (locale?: DeepPartial<LocaleType>): LocaleType => {
if (!locale) {
return _es;
}
return deepMerge(_es, locale);
};
Loading