Я думаю, вы должны использовать только языковой ключ в AsyncStorage, например, en, en_US или tr_TR. Вы должны писать файлы на языке JSON. Например en. json. Я использую эту структуру классов для локализации.
import { NativeModules, Platform } from 'react-native';
import { strings } from 'res';
class LanguageHelper {
currentLanguage = null;
currentStrings = null;
init() {
this.currentLanguage = this.determineDeviceLanguage();
this.setCurrentString();
}
setCurrentString() {
switch (this.currentLanguage) {
case 'tr_TR':
this.currentStrings = require("./tr.json");
break;
default:
this.currentStrings = require("en.json");
}
}
determineDeviceLanguage() {
// Determine device language
const language =
Platform.OS === 'ios'
? NativeModules.SettingsManager.settings.AppleLocale ||
NativeModules.SettingsManager.settings.AppleLanguages[0]
: NativeModules.I18nManager.localeIdentifier;
return language;
}
}
const LanguageProvider = new LanguageHelper();
export default LanguageProvider;
En. json вот так.
{
"title": "Hello World";
}
В вашем файле App. js вы импортируете этот класс.
import LanguageProvider from './LanguageHelper';
const App () => {
useEffect(() => {
LanguageProvide.init(); // Init language
}, []);
return(/* Your components */)
}
Затем вы можете использовать эту локализованную строку там, где хотите, после импорта. Например,
LanguageProvider.currentStrings.title