Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用React Native和django modeltranslation更改语言_Django_React Native_Django Rest Framework - Fatal编程技术网

使用React Native和django modeltranslation更改语言

使用React Native和django modeltranslation更改语言,django,react-native,django-rest-framework,Django,React Native,Django Rest Framework,我想在移动应用程序中添加更改语言的选项。我在后端使用django,在移动端使用RN。因此,我安装了django modeltranslation,并添加了我想要翻译的模型。在手机上,我显示可用的语言。当用户单击特定语言时,我希望获得翻译后的数据。我有一个巨大的问题,就是如何创造逻辑。我不是在问代码,只是一些提示和想法 编辑: 例如:我在我的模型中添加了来自django modeltranslation的翻译(即带有字段标题、描述等的GameTask)。在我的settings.py中,我声明了语言

我想在移动应用程序中添加更改语言的选项。我在后端使用django,在移动端使用RN。因此,我安装了django modeltranslation,并添加了我想要翻译的模型。在手机上,我显示可用的语言。当用户单击特定语言时,我希望获得翻译后的数据。我有一个巨大的问题,就是如何创造逻辑。我不是在问代码,只是一些提示和想法

编辑:
例如:我在我的模型中添加了来自
django modeltranslation
的翻译(即带有字段标题、描述等的GameTask)。在我的
settings.py
中,我声明了语言('en'、'de'、'uk'等),并在数据库中添加了翻译(对于游戏任务的每个字段,我都添加了标题(en)、标题(de)等)。当我在
settings.py
中更改语言时,手机上的值也在更改(以便按预期工作)。所以我不在应用程序文件中存储任何翻译文本,只在数据库中存储(静态错误和信息除外)。现在,我只想用所选语言从手机发送信息,并在后端激活此语言以返回特定语言的内容

如果您想让应用程序完全使用多种语言,您需要两件事

  • 应用程序的翻译系统
  • api的翻译系统
首先,使用预先构建的上下文api或创建自己的上下文api,以支持在应用程序中更改语言。大概是这样的:

当用户更改语言时,将语言名称或键存储在异步存储或其他数据库中

根据所选语言更改本机端的文本

进行api调用时,也发送所选语言。在api端获取所选语言,并根据语言返回适当的文本

更新:


由于您没有在react native端存储任何文本,因此只需添加一个选择器(本机选择器)并将所选语言键(在您的情况下为en、de、uk等)存储在数据库中,如
react native async storage
。当您使用react native发出api请求时,请包含包含所选语言键的附加标头或post数据。您可以在django后端中获取并使用该键。

我在我的answer@Frendom我还编辑了我的答案