eclipse中的Strings.xml和values-es - 支持多种语言

时间:2013-04-30 21:12:48

标签: java android xml eclipse performance

我现在在Play商店有一个琐事游戏,里面有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> s
  • 这意味着res/values-es/strings.xml将有1800 <string> s
  • 这意味着在2 strings.xml个文件之间,它们将有3600 + <string> s

我是不是错了?或者这只是它必须的方式,因为我试图制作一个有数百个问题支持多种语言的琐事游戏?因为这是很多<string> s。

1 个答案:

答案 0 :(得分:1)

你正确地做对了.... i18n(i - 18个字母 - 国际化)是一个艰苦而劳动密集的过程。但值得。

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