我很难理解如何处理语言 - 并尝试用英语解释自己。
例如,看看这个
<resources>
<string name="temperature_celsius">Celsius</string>
<string name="temperature_fahrenheit">Fahrenheit</string>
<string name="temperature_kelvin">Kelvin</string>
<string-array name="temperature">
<item>@string/temperature_celsius</item>
<item>@string/temperature_fahrenheit</item>
<item>@string/temperature_kelvin</item>
</string-array>
</resources>
现在,想象一下,我有另一个xml文件,其中Celsius,Fahrenheit和Kelvin在另一种语言中的写法不同。
//name of temperature units in another galaxy
<resources>
<string name="temperature_celsius">Celsioso</string>
<string name="temperature_fahrenheit">Fahrenheitzkeum</string>
<string name="temperature_kelvin">Kalvon</string>
<string-array name="temperature">
<item>@string/temperature_celsius</item>
<item>@string/temperature_fahrenheit</item>
<item>@string/temperature_kelvin</item>
</string-array>
现在,我希望我的外星用户能够用自己的语言查看单位,所以我需要将它们与之相比较。有没有一种有效的方法可以做到这一点而不是硬编码每个字符串项的值?我尝试使用开关,但它说需要持续表达,我认为如果我使用if-else它会起作用,但它看起来很难看:
//convert from celsius(baseUnit) to something else(endUnit)
//baseUnit and endUnit are strings taken from two autocompletetextviews
if(baseUnit.equals(mContext.getResources().getString(R.string.temperature_celsius))) {
convertFromCelsius(endUnit, inputValue, mContext);
我在主要活动中处理UI,转换每个单元的工作是在其他java类中完成的(这就是我使用mContext的原因)。
谢谢,抱歉我的英语不好。