#javascript #reactjs #react-native #localization #react-native-android
#javascript #reactjs #локализация #react-native
Вопрос:
Я следую этому документу для реализации метода перевода языка в моем приложении. Есть выпадающий список для выбора языка, и я попытался утешить значение, полученное из выпадающего списка, а затем передать его onChangeText
функции. Я использую два набора языков, таких как английский и арабский, но при переключении языка с английского на арабский язык не меняется на арабский.Ниже приведена часть кода для локализации.Пожалуйста, помогите мне разобраться с ошибкой.Спасибо!
stringsoflanguages.js
const strings = new LocalizedStrings({
"English": {
phone_number: "Phone Number",
register: "REGISTER/LOGIN",
plumber: "Plumber",
},
"Arabic": {
phone_number: "رقم الهاتف",
register: "التسجيل/الدخول",
plumber: "سباك",
}
export default strings;
register.js
import stringsoflanguages from './stringsoflanguages';
const lang = [
{ value: 'English' },
{ value: 'Arabic' },
];
language = lang;
onChangeText(text) {
console.log(text);
stringsoflanguages.setLanguage(text);
}
....
.....
<Dropdown
label="Choose Language"
data={language}
textColor="#fff"
selectedItemColor="#000"
onChangeText={this.onChangeText}
/>
<Input
label="Phone Number"
placeholder={stringsoflanguages.phone_number} />
<Button onPress={() => this.onPressRegister()}>
<Text>{stringsoflanguages.register</Text>
</Button>
Комментарии:
1. В документах говорится, что вам нужно вызвать
this.setState({});
после настройки языка, скорее всего, для принудительного повторного рендеринга.2. Я пробовал это, но получаю ошибку
this.setState
, которая не определена3. Ну, вы должны правильно привязать функцию. Самый простой способ — заменить
onChangeText(text) {
наonChangeText = (text) => {
при условии, что ваша среда поддерживает это. (Хотя это общеизвестно в React и не имеет никакого отношения к вопросу.)4. Да, это работает, большое спасибо за помощь 🙂
5. Также я сомневаюсь, как мне передать это значение и на следующие страницы. Мне нужно передать
this.state.text
или простоtext
?