1

我现在在 Play Store 上有一个问答游戏,里面有 300 个问题。我的 java 代码中的每个问题对象如下所示:

exodus.add(new Question("Aaron", "Abraham", "Jacob", "Joseph", 0, "What was the name of Moses' brother?", -1, "Exodus 7:1-2"));

我将在下一个版本中实现西班牙语支持。为此,经过研究,我发现最好的办法是取出 300 个对象中的每个字符串(就像我在上面发布的对象中一样)并将其放入res/values/strings.xml文件夹中。然后,res/values-es/strings.xml为西班牙语支持创建一个文件夹。完成此操作后,300 个问题对象中的每一个现在在 java 代码中将如下所示:

exodus.add(new Question("" + R.string.exodusa1, "" + R.string.exodusb1, "" + R.string.exodusc1, "" + R.string.exodusd1, 0, "" + R.string.exodusq1, -1, "" + R.string.exodusv1));

XML 中的每个字符串如下所示:

<string name="exodusq1">This would be the text for question 1.</string>
<string name="exodusa1">Etc etc...</string>
etc etc...

这样我就可以支持英语和西班牙语。我的问题/问题是我觉得代码在我strings.xml的英语和西班牙语文件中很长。下面是显示这些文件有多长的数学。

  • 每种语言 300 个对象(英语和西班牙语)
  • 每个对象有 6 个字符串
  • 这意味着res/values/strings.xml将有 1800<string>
  • 这意味着res/values-es/strings.xml将有 1800<string>
  • 这意味着在 2 个strings.xml文件之间,它们将有 3600+ <string>s

我做错了吗?还是因为我正在尝试制作一个包含数百个问题的琐事游戏支持不止一种语言,所以这就是它必须的方式?因为那是很多<string>s。

4

1 回答 1

1

你做得对.... i18n(i - 18 个字母 - n - 国际化)是一个艰苦且劳动密集型的过程。但很值得。

值得注意的是,您可能不需要翻译名称(它们在西班牙语和英语中很常见吗?)并让系统回退到某些单词的默认翻译。

于 2013-04-30T21:16:11.800 回答