diff --git a/app.json b/app.json index a4b9e4e..46d6b54 100644 --- a/app.json +++ b/app.json @@ -33,7 +33,8 @@ "resizeMode": "contain", "backgroundColor": "#ffffff" } - ] + ], + "expo-localization" ], "experiments": { "typedRoutes": true diff --git a/components/CurrencySelector.tsx b/components/CurrencySelector.tsx index 22f5b4f..8bc9e05 100644 --- a/components/CurrencySelector.tsx +++ b/components/CurrencySelector.tsx @@ -20,10 +20,10 @@ const CurrencySelector: React.FC = ({ style={styles.picker} testID="currency-picker" // ✅ Add testID here > - - - - + + + + ); diff --git a/i18n/en.json b/i18n/en.json index d5921a2..f671d03 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -2,10 +2,10 @@ "translation": { "poker_chips_helper": "Poker Chips Helper", "select_currency": "Select Currency", - "USD": "USD ($)", - "Euro": "Euro (€)", - "Pound": "Pound (£)", - "INR": "INR (₹)", + "usd": "USD ($)", + "euro": "Euro (€)", + "pound": "Pound (£)", + "inr": "INR (₹)", "select_number_of_players": "Select the Number of Players:", "select_buyin_amount": "Select Buy-in Amount:", "custom_buy_in": "Or enter a custom amount:", diff --git a/i18n/es.json b/i18n/es.json index b9237b0..cff8756 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -2,10 +2,10 @@ "translation": { "poker_chips_helper": "Ayudante de Fichas de Póker", "select_currency": "Seleccionar moneda", - "USD": "USD ($)", - "Euro": "Euro (€)", - "Pound": "Libra (£)", - "INR": "INR (₹)", + "usd": "USD ($)", + "euro": "Euro (€)", + "pound": "Libra (£)", + "inr": "INR (₹)", "select_number_of_players": "Seleccionar número de jugadores:", "select_buyin_amount": "Seleccionar cantidad de buy-in:", "custom_buy_in": "O ingresa una cantidad personalizada:", diff --git a/package-lock.json b/package-lock.json index c350b34..abe86fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,20 +21,22 @@ "expo-haptics": "14.0.1", "expo-image-picker": "16.0.6", "expo-linking": "7.0.5", + "expo-localization": "~16.0.1", "expo-router": "4.0.17", "expo-splash-screen": "0.29.22", "expo-status-bar": "2.0.1", "expo-symbols": "0.2.2", "expo-system-ui": "4.0.8", "expo-web-browser": "14.0.2", + "i18next": "^24.2.2", "react": "18.3.1", "react-dom": "18.3.1", + "react-i18next": "^15.4.1", "react-native": "0.76.7", "react-native-gesture-handler": "2.20.2", "react-native-reanimated": "3.16.7", "react-native-safe-area-context": "4.12.0", "react-native-screens": "4.4.0", - "react-native-vector-icons": "^10.2.0", "react-native-web": "0.19.13", "react-native-webview": "13.12.5" }, @@ -8238,6 +8240,19 @@ "react-native": "*" } }, + "node_modules/expo-localization": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-16.0.1.tgz", + "integrity": "sha512-kUrXiV/Pq9r7cG+TMt+Qa49IUQ9Y/czVwen4hmiboTclTopcWdIeCzYZv6JGtufoPpjEO9vVx1QJrXYl9V2u0Q==", + "license": "MIT", + "dependencies": { + "rtl-detect": "^1.0.2" + }, + "peerDependencies": { + "expo": "*", + "react": "*" + } + }, "node_modules/expo-modules-autolinking": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-2.0.8.tgz", @@ -9337,6 +9352,15 @@ "dev": true, "license": "MIT" }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "license": "MIT", + "dependencies": { + "void-elements": "3.1.0" + } + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -9406,6 +9430,37 @@ "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", "license": "BSD-3-Clause" }, + "node_modules/i18next": { + "version": "24.2.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-24.2.2.tgz", + "integrity": "sha512-NE6i86lBCKRYZa5TaUDkU5S4HFgLIEJRLr3Whf2psgaxBleQ2LC1YW1Vc+SCgkAW7VEzndT6al6+CzegSUHcTQ==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" + }, + "peerDependencies": { + "typescript": "^5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -14291,6 +14346,28 @@ "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-i18next": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.4.1.tgz", + "integrity": "sha512-ahGab+IaSgZmNPYXdV1n+OYky95TGpFwnKRflX/16dY04DsYYKHtVLjeny7sBSCREEcoMbAgSkFiGLF5g5Oofw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "html-parse-stringify": "^3.0.1" + }, + "peerDependencies": { + "i18next": ">= 23.2.3", + "react": ">= 16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -14446,92 +14523,6 @@ "react-native": "*" } }, - "node_modules/react-native-vector-icons": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-10.2.0.tgz", - "integrity": "sha512-n5HGcxUuVaTf9QJPs/W22xQpC2Z9u0nb0KgLPnVltP8vdUvOp6+R26gF55kilP/fV4eL4vsAHUqUjewppJMBOQ==", - "license": "MIT", - "dependencies": { - "prop-types": "^15.7.2", - "yargs": "^16.1.1" - }, - "bin": { - "fa-upgrade.sh": "bin/fa-upgrade.sh", - "fa5-upgrade": "bin/fa5-upgrade.sh", - "fa6-upgrade": "bin/fa6-upgrade.sh", - "generate-icon": "bin/generate-icon.js" - } - }, - "node_modules/react-native-vector-icons/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/react-native-vector-icons/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/react-native-vector-icons/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-native-vector-icons/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-native-vector-icons/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/react-native-vector-icons/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/react-native-web": { "version": "0.19.13", "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.19.13.tgz", @@ -15091,6 +15082,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rtl-detect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", + "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==", + "license": "BSD-3-Clause" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -17220,6 +17217,15 @@ "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", "license": "MIT" }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", diff --git a/package.json b/package.json index db25280..20552fe 100644 --- a/package.json +++ b/package.json @@ -37,15 +37,18 @@ "expo-symbols": "0.2.2", "expo-system-ui": "4.0.8", "expo-web-browser": "14.0.2", + "i18next": "^24.2.2", "react": "18.3.1", "react-dom": "18.3.1", + "react-i18next": "^15.4.1", "react-native": "0.76.7", "react-native-gesture-handler": "2.20.2", "react-native-reanimated": "3.16.7", "react-native-safe-area-context": "4.12.0", "react-native-screens": "4.4.0", "react-native-web": "0.19.13", - "react-native-webview": "13.12.5" + "react-native-webview": "13.12.5", + "expo-localization": "~16.0.1" }, "devDependencies": { "@babel/core": "7.26.9",