diff --git a/android/app/build.gradle b/android/app/build.gradle index e5aec80..399cfd1 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -172,6 +172,7 @@ android { } dependencies { + implementation project(':react-native-localize') implementation project(':react-native-gesture-handler') implementation project(':react-native-vector-icons') implementation project(':react-native-login-with-amazon') diff --git a/android/app/src/main/java/com/error/amazonhandmadern/MainApplication.java b/android/app/src/main/java/com/error/amazonhandmadern/MainApplication.java index 088ca83..31b2a29 100644 --- a/android/app/src/main/java/com/error/amazonhandmadern/MainApplication.java +++ b/android/app/src/main/java/com/error/amazonhandmadern/MainApplication.java @@ -4,6 +4,7 @@ import android.app.Application; import com.facebook.react.ReactApplication; +import com.reactcommunity.rnlocalize.RNLocalizePackage; import com.swmansion.gesturehandler.react.RNGestureHandlerPackage; import com.reactlibrary.RNLoginWithAmazonPackage; import com.oblador.vectoricons.VectorIconsPackage; @@ -49,6 +50,7 @@ public boolean getUseDeveloperSupport() { protected List getPackages() { return Arrays.asList( new MainReactPackage(), + new RNLocalizePackage(), new RNGestureHandlerPackage(), new RNLoginWithAmazonPackage(), new VectorIconsPackage(), diff --git a/android/settings.gradle b/android/settings.gradle index 2db91f6..d204993 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,4 +1,6 @@ rootProject.name = 'AmazonHandmadeRN' +include ':react-native-localize' +project(':react-native-localize').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-localize/android') include ':react-native-gesture-handler' project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android') include ':react-native-vector-icons' diff --git a/ios/AmazonHandmadeRN.xcodeproj/project.pbxproj b/ios/AmazonHandmadeRN.xcodeproj/project.pbxproj index fa74db8..80433d1 100644 --- a/ios/AmazonHandmadeRN.xcodeproj/project.pbxproj +++ b/ios/AmazonHandmadeRN.xcodeproj/project.pbxproj @@ -26,6 +26,7 @@ 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 13B2DDDF229E64D700903596 /* libRNLocalize.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 13B2DDDB229E648400903596 /* libRNLocalize.a */; }; 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 2107522A99AE4FC6825D560C /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 46FB1083A2894CB8A86E57F7 /* Octicons.ttf */; }; @@ -152,6 +153,48 @@ remoteGlobalIDString = 3C86DF461ADF2C930047B81A; remoteInfo = RCTWebSocket; }; + 13B2DDCF229E648400903596 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EDEBC6D6214B3E7000DD5AC8; + remoteInfo = jsi; + }; + 13B2DDD1229E648400903596 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EDEBC73B214B45A300DD5AC8; + remoteInfo = jsiexecutor; + }; + 13B2DDD3229E648400903596 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = ED296FB6214C9A0900B7C4FE; + remoteInfo = "jsi-tvOS"; + }; + 13B2DDD5229E648400903596 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = ED296FEE214C9CF800B7C4FE; + remoteInfo = "jsiexecutor-tvOS"; + }; + 13B2DDDA229E648400903596 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 13B2DDA7229E648400903596 /* RNLocalize.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RNLocalize; + }; + 13B2DDDC229E648400903596 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 13B2DDA7229E648400903596 /* RNLocalize.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28471D9B043800D4039D; + remoteInfo = "RNLocalize-tvOS"; + }; 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; @@ -257,20 +300,6 @@ remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4; remoteInfo = "cxxreact-tvOS"; }; - 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4; - remoteInfo = jschelpers; - }; - 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4; - remoteInfo = "jschelpers-tvOS"; - }; 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; @@ -341,20 +370,6 @@ remoteGlobalIDString = 3D383D621EBD27B9005632C8; remoteInfo = "double-conversion-tvOS"; }; - 83B7621B1FE42BDD00F21A7A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 9936F3131F5F2E4B0010BF04; - remoteInfo = privatedata; - }; - 83B7621D1FE42BDD00F21A7A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 9936F32F1F5F2E5B0010BF04; - remoteInfo = "privatedata-tvOS"; - }; 8E7D4B011F8AFD6F00699FE4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; @@ -403,6 +418,7 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = AmazonHandmadeRN/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = AmazonHandmadeRN/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = AmazonHandmadeRN/main.m; sourceTree = ""; }; + 13B2DDA7229E648400903596 /* RNLocalize.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNLocalize.xcodeproj; path = "../node_modules/react-native-localize/ios/RNLocalize.xcodeproj"; sourceTree = ""; }; 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; 1C347B193AC84C1392129B44 /* HandmadeLogo@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "HandmadeLogo@2x.png"; path = "../assets/images/2x/HandmadeLogo@2x.png"; sourceTree = ""; }; 1C71F371E58D444E80827434 /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = ""; }; @@ -481,6 +497,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 13B2DDDF229E64D700903596 /* libRNLocalize.a in Frameworks */, 130A3DAA21ED97270020C367 /* SafariServices.framework in Frameworks */, 130A3DA821ED97130020C367 /* Security.framework in Frameworks */, ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */, @@ -628,6 +645,15 @@ name = AmazonHandmadeRN; sourceTree = ""; }; + 13B2DDA8229E648400903596 /* Products */ = { + isa = PBXGroup; + children = ( + 13B2DDDB229E648400903596 /* libRNLocalize.a */, + 13B2DDDD229E648400903596 /* libRNLocalize-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; 146834001AC3E56700842450 /* Products */ = { isa = PBXGroup; children = ( @@ -637,16 +663,16 @@ 3DAD3EA71DF850E9000B6D8A /* libyoga.a */, 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */, 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */, - 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */, - 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */, 21BD0A8E216B7CEC00CE6C8C /* libjsinspector.a */, 21BD0A90216B7CEC00CE6C8C /* libjsinspector-tvOS.a */, 836AA8EA1FACD2AC0010E64B /* libthird-party.a */, 836AA8EC1FACD2AC0010E64B /* libthird-party.a */, 836AA8EE1FACD2AC0010E64B /* libdouble-conversion.a */, 836AA8F01FACD2AC0010E64B /* libdouble-conversion.a */, - 83B7621C1FE42BDD00F21A7A /* libprivatedata.a */, - 83B7621E1FE42BDD00F21A7A /* libprivatedata-tvOS.a */, + 13B2DDD0229E648400903596 /* libjsi.a */, + 13B2DDD2229E648400903596 /* libjsiexecutor.a */, + 13B2DDD4229E648400903596 /* libjsi-tvOS.a */, + 13B2DDD6229E648400903596 /* libjsiexecutor-tvOS.a */, ); name = Products; sourceTree = ""; @@ -681,6 +707,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( + 13B2DDA7229E648400903596 /* RNLocalize.xcodeproj */, 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */, 146833FF1AC3E56700842450 /* React.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, @@ -939,6 +966,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, ); @@ -998,6 +1026,10 @@ ProductGroup = 8E7D4B111F8AFD6F00699FE4 /* Products */; ProjectRef = ADF4CB3C3BF44D3EBA8B78C4 /* RNFirebase.xcodeproj */; }, + { + ProductGroup = 13B2DDA8229E648400903596 /* Products */; + ProjectRef = 13B2DDA7229E648400903596 /* RNLocalize.xcodeproj */; + }, { ProductGroup = 130A3F7F21F019170020C367 /* Products */; ProjectRef = FCAB855C8303479185DDE00C /* RNLoginWithAmazon.xcodeproj */; @@ -1070,6 +1102,48 @@ remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B2DDD0229E648400903596 /* libjsi.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjsi.a; + remoteRef = 13B2DDCF229E648400903596 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 13B2DDD2229E648400903596 /* libjsiexecutor.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjsiexecutor.a; + remoteRef = 13B2DDD1229E648400903596 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 13B2DDD4229E648400903596 /* libjsi-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libjsi-tvOS.a"; + remoteRef = 13B2DDD3229E648400903596 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 13B2DDD6229E648400903596 /* libjsiexecutor-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libjsiexecutor-tvOS.a"; + remoteRef = 13B2DDD5229E648400903596 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 13B2DDDB229E648400903596 /* libRNLocalize.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNLocalize.a; + remoteRef = 13B2DDDA229E648400903596 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 13B2DDDD229E648400903596 /* libRNLocalize-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRNLocalize-tvOS.a"; + remoteRef = 13B2DDDC229E648400903596 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 146834041AC3E56700842450 /* libReact.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1168,20 +1242,6 @@ remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libjschelpers.a; - remoteRef = 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libjschelpers.a; - remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1252,20 +1312,6 @@ remoteRef = 836AA8EF1FACD2AC0010E64B /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 83B7621C1FE42BDD00F21A7A /* libprivatedata.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libprivatedata.a; - remoteRef = 83B7621B1FE42BDD00F21A7A /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 83B7621E1FE42BDD00F21A7A /* libprivatedata-tvOS.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libprivatedata-tvOS.a"; - remoteRef = 83B7621D1FE42BDD00F21A7A /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 8E7D4B021F8AFD6F00699FE4 /* libRCTBlob-tvOS.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; diff --git a/ios/Podfile b/ios/Podfile index f919b9a..be5c0c1 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -39,6 +39,8 @@ target 'AmazonHandmadeRN' do pod 'RNLoginWithAmazon', :path => '../node_modules/react-native-login-with-amazon' pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler' + pod 'RNLocalize', :path => '../node_modules/react-native-localize' + end post_install do |installer| diff --git a/package.json b/package.json index 9db54f6..046b695 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ } }, "dependencies": { + "i18n-js": "^3.2.1", "native-base": "^2.12.1", "react": "16.8.4", "react-native": "0.59.4", @@ -73,6 +74,7 @@ "react-native-keyboard-aware-scrollview": "^2.0.0", "react-native-linear-gradient": "^2.5.4", "react-native-login-with-amazon": "^1.1.8", + "react-native-localize": "^1.1.2", "react-native-motion": "^1.0.2", "react-native-side-drawer": "^1.0.9", "react-native-simple-radio-button": "^2.7.3", diff --git a/src/components/AddImage/index.js b/src/components/AddImage/index.js index 706cfc8..982f381 100644 --- a/src/components/AddImage/index.js +++ b/src/components/AddImage/index.js @@ -17,7 +17,7 @@ export default class AddImage extends Component { /> : - Add Image + {this.props.text? this.props.text: "Add Image"} {this.getTranslation(this.props.transString)} + ) + } +} + +function mapStateToProps(state) { + return { + Errors: state.Errors, + Settings: state.Settings + } +} + +const styles = { + containerStyle: {} +} + +export default connect(mapStateToProps)(Translate) \ No newline at end of file diff --git a/src/reducers/Settings.js b/src/reducers/Settings.js new file mode 100644 index 0000000..b73f5f4 --- /dev/null +++ b/src/reducers/Settings.js @@ -0,0 +1,15 @@ +import * as RNLocalize from "react-native-localize" + +const initLanguage = RNLocalize.getLocales()[0].languageTag + +export default function Settings(state = {language: initLanguage}, action) { + console.log("Settings reducing action " + action.type) + switch (action.type) { + case 'SET_LANGUAGE': + return Object.assign({}, state, { + language: action.language + }) + default: + return state + } +} \ No newline at end of file diff --git a/src/reducers/index.js b/src/reducers/index.js index 04f6e0d..1b0bd40 100644 --- a/src/reducers/index.js +++ b/src/reducers/index.js @@ -8,9 +8,10 @@ import Artisans from './Artisans' import Products from './Products' import Payouts from './Payouts' import Conversations from './Conversations' +import Settings from './Settings' //Then combine them all here -const appReducer = combineReducers({ User, Errors, Artisans, Products, Payouts, Conversations }) +const appReducer = combineReducers({ User, Errors, Artisans, Products, Payouts, Conversations, Settings }) const rootReducer = (state, action) => { if(action.type == 'RESET_STORE' || (__DEV__ && action.type == 'LOGOUT')) { diff --git a/src/screens/ActionCenter/ActionCenter.js b/src/screens/ActionCenter/ActionCenter.js index 7410ed0..b9b92df 100644 --- a/src/screens/ActionCenter/ActionCenter.js +++ b/src/screens/ActionCenter/ActionCenter.js @@ -13,11 +13,12 @@ import { } from 'react-native' import { ProfilePicture } from '../../components' import { View } from 'native-base'; +import I18n, {setLocale} from "../../utils/i18n" export default class ActionCenter extends Component { - static navigationOptions = () => { + static navigationOptions = ({navigation}) => { return { - title: 'Action Center' + title: navigation.getParam('Title', 'Default Title') } } @@ -34,10 +35,13 @@ export default class ActionCenter extends Component { onPress: () => this.navigateToEditCGA() }*/, { - title: 'Settings', + title: I18n.t("ActionCenter.settings", {locale: this.props.Settings.language}), onPress: () => this.navigateToSettings() } ] + + this.props.navigation.setParams({Title: I18n.t("ActionCenter.title", {locale: this.props.Settings.language})}) + this.navigateToEditCGA = this.navigateToEditCGA.bind(this) this.navigateToSettings = this.navigateToSettings.bind(this) this.getTotalListings = this.getTotalListings.bind(this) @@ -68,7 +72,7 @@ export default class ActionCenter extends Component { @@ -77,36 +81,36 @@ export default class ActionCenter extends Component { source={{uri: this.props.User.photoURL}} style={styles.image} />*/} - Name: {this.props.User.displayName} - Email: {this.props.User.email} + {I18n.t("ActionCenter.name", {locale: this.props.Settings.language})}: {this.props.User.displayName} + {I18n.t("ActionCenter.email", {locale: this.props.Settings.language})}: {this.props.User.email} - Number of Artisans: {this.props.Artisans.length} - Total Artisan Listings: {this.getTotalListings()} + {I18n.t("ActionCenter.numberOf", {locale: this.props.Settings.language})}: {this.props.Artisans.length} + {I18n.t("ActionCenter.totalArtisans", {locale: this.props.Settings.language})}: {this.getTotalListings()} Linking.openURL('https://error404.gitbook.io/project/')}> - Application Documentation + {I18n.t("ActionCenter.wiki", {locale: this.props.Settings.language})} Linking.openURL('https://sellercentral.amazon.com/')}> - Seller Central + {I18n.t("ActionCenter.sellerCentral", {locale: this.props.Settings.language})} Linking.openURL('https://sellercentral.amazon.com/forums/')}> - Seller Forums + {I18n.t("ActionCenter.sellerForum", {locale: this.props.Settings.language})} Linking.openURL('https://www.amazon.com/ap/signin?openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fhz%2Fcontact-us%3Ffrom%3Dgp%26*entries*%3D0%26_encoding%3DUTF8%26*Version*%3D1&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=amzn_contactus_desktop_us&openid.mode=checkid_setup&marketPlaceId=ATVPDKIKX0DER&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&pageId=Amazon&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.pape.max_auth_age=3600&siteState=clientContext%3D133-3534273-1927417%2CsourceUrl%3Dhttps%253A%252F%252Fwww.amazon.com%252Fhz%252Fcontact-us%253Ffrom%253Dgp%2526*entries*%253D0%2526_encoding%253DUTF8%2526*Version*%253D1%2Csignature%3DroWGPjqxWUoNNtMkFrBDZBSTH0Yj3D')}> - Contact Support + {I18n.t("ActionCenter.contact", {locale: this.props.Settings.language})} diff --git a/src/screens/ActionCenter/index.js b/src/screens/ActionCenter/index.js index ebdd789..259ebe7 100644 --- a/src/screens/ActionCenter/index.js +++ b/src/screens/ActionCenter/index.js @@ -9,7 +9,8 @@ function mapStateToProps(state) { Artisans: state.Artisans, Errors: state.Errors, ActionCenter: state.ActionCenter, - Conversations: state.Conversations + Conversations: state.Conversations, + Settings: state.Settings } } diff --git a/src/screens/ArtisanHub/AddArtisan.js b/src/screens/ArtisanHub/AddArtisan.js index 37f8977..c53aa8d 100644 --- a/src/screens/ArtisanHub/AddArtisan.js +++ b/src/screens/ArtisanHub/AddArtisan.js @@ -3,10 +3,11 @@ import React, { Component } from 'react' import { StyleSheet, View } from 'react-native' import ImagePicker from 'react-native-image-crop-picker' import { isValidPhoneNumber } from 'react-phone-number-input' +import I18n, {setLocale} from "../../utils/i18n" export default class AddArtisan extends Component { - static navigationOptions = { - title: 'Add Artisan' + static navigationOptions = ({navigation}) => { + title: navigation.getParam('Title', 'Add Artisan') } constructor(props) { @@ -22,6 +23,8 @@ export default class AddArtisan extends Component { focusedInputs: { name: false, phoneNumber: false, location: false, description: false } } + + this.props.navigation.setParams({Title: I18n.t("AddArtisan.title", {locale: this.props.Settings.language})}) this.pickImage = this.pickImage.bind(this) this.createArtisan = this.createArtisan.bind(this) @@ -126,6 +129,7 @@ export default class AddArtisan extends Component { this.pickImage()} style={styles.image} @@ -134,7 +138,7 @@ export default class AddArtisan extends Component { this.setState({ name: newText })} onFocus={() => this.setState({ focusedInputs: { ...this.state.focusedInputs, name: true } })} @@ -145,7 +149,7 @@ export default class AddArtisan extends Component { this.setState({ focusedInputs: { ...this.state.focusedInputs, phoneNumber: true } })} @@ -160,7 +164,7 @@ export default class AddArtisan extends Component { this.setState({ location: newText })} onFocus={() => this.setState({ focusedInputs: { ...this.state.focusedInputs, location: true } })} @@ -170,7 +174,7 @@ export default class AddArtisan extends Component { this.setState({ description: newText })} onFocus={() => this.setState({ focusedInputs: { ...this.state.focusedInputs, description: true } })} @@ -181,7 +185,7 @@ export default class AddArtisan extends Component { { + static navigationOptions = ({navigation}) => { return { - title: 'Artisan Details' + title: navigation.getParam('Title', 'Artisan Detail') } } @@ -43,25 +45,27 @@ class ArtisanDetail extends Component { this.artisanInfoButtons = [ { - title: 'Edit', + title: I18n.t("ArtisanDetail.edit", {locale: this.props.Settings.language}), onPress: () => this.navigateToEditArtisan() }, { - title: 'Message', + title: I18n.t("ArtisanDetail.message", {locale: this.props.Settings.language}), onPress: () => this.navigateToMessage() } ] this.productsButtons = [ { - title: 'Add', + title: I18n.t("ArtisanDetail.add", {locale: this.props.Settings.language}), onPress: () => this.navigateToAddProduct() }, { - title: 'View All', + title: I18n.t("ArtisanDetail.viewAll", {locale: this.props.Settings.language}), onPress: () => this.navigateToProductList() } ] + + this.props.navigation.setParams({Title: I18n.t("ArtisanDetail.title", {locale: this.props.Settings.language})}) this.onCancel = this.onCancel.bind(this) this.deletePressed = this.deletePressed.bind(this) @@ -236,7 +240,7 @@ class ArtisanDetail extends Component { @@ -256,7 +260,7 @@ class ArtisanDetail extends Component { {this.renderListOfProducts()} diff --git a/src/screens/ArtisanHub/ArtisanList.js b/src/screens/ArtisanHub/ArtisanList.js index d346cca..492e892 100644 --- a/src/screens/ArtisanHub/ArtisanList.js +++ b/src/screens/ArtisanHub/ArtisanList.js @@ -12,18 +12,19 @@ import { Platform } from 'react-native' import { ProfilePicture } from '../../components' +import I18n, {setLocale} from "../../utils/i18n" export default class ArtisanList extends Component { static navigationOptions = ({ navigation }) => { return { - title: 'Artisans', + title: navigation.getParam('Title', 'Default Title'), headerRight: (