【问题标题】:Localize strings with components in react native在本机反应中使用组件本地化字符串
【发布时间】:2020-07-29 17:25:16
【问题描述】:

我正在愉快地使用本地化,它工作正常,但我遇到了一个问题,我想将所有内容放在一个字符串中,而不是将段落分成几个字符串:这是我要翻译的视图部分:

<View>
        <BodyOne style={styles.text}>
          By login into our app, you're accepting our{' '}
          <Text style={styles.link} onPress={() => alert('terms')}>
            terms and conditions
          </Text>{' '}
          and{' '}
          <Text style={styles.link} onPress={() => alert('privacy')}>
            Privacy Policy
          </Text>
          .
        </BodyOne>

在我的 en.json 文件中,我试图这样写:

{
"common": {
    "test": "By login into our app, you're accepting our <Text style={styles.link} onPress={() => alert('terms')}>
    terms and conditions</Text> and <Text style={styles.link} onPress={() => alert('privacy')}>
    Privacy Policy</Text>.",
}

但这会在 Expo 客户端中引发“EOF 错误”。

如果可能,我要翻译的函数是 t('key')。我怎样才能将所有这些文本放入 JSON 并使得翻译这些内容成为可能?

【问题讨论】:

  • Ciao,你用的是什么库?反应本地化?
  • Ciao Giovanni,我正在使用 expo-localization,i18next。我正在关注本教程phrase.com/blog/posts/…

标签: react-native localization


【解决方案1】:

Ciao,很遗憾,您不能使用expo-localization, i18next&lt;Text&gt; 放入翻译中。这个库不解析像 &lt;Text&gt; 这样的 react-native 组件。也许出于安全原因:允许类似的事情可能是有害的代码注入。但我不是安全专家,所以将我的最后一句话作为个人意见。

所以基本上我认为你的第一个解决方案是最好的。

【讨论】:

  • 那么变量呢?比如:subtitle={`${group.members} + 'members'} to subtitle={t(n: ${group.members}, 'profile:members'}
  • 是的,expo-localization 允许参数化字符串(我大量使用)。
  • 它是怎么做的?在世博会文档中,他们没有解释这一点。
  • 你可以使用interpolation
  • 没问题。很高兴能帮助你。如果您将答案标记为正确,我将不胜感激。祝你有美好的一天:)
猜你喜欢
  • 2017-10-10
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
  • 1970-01-01
  • 2022-10-17
  • 2013-03-17
相关资源
最近更新 更多