每个国家/地区都使用自己的测量单位,例如美国人在F中测量温度,但加拿大和大多数欧洲国家/地区使用C.相同的测量重量,距离等。 我在我的应用程序中定义了测量单位
<string-array name="measure_units">
<item>lb</item>
<item>oz</item>
<item>cwt</item>
<item>ft</item>
<item>yd</item>
对于默认语言环境,然后对于法国我定义类似
的内容<string-array name="measure_units">
<item>kg</item>
<item>ml</item>
<item>tn</item>
<item>dm</item>
<item>m</item>
到目前为止一直很好,但考虑到大量的重复项,为每个国家定义价值是一项巨大的工作。所以我想介绍2-4个基本测量系统并仅为它们指定值,但是如何为Android实现它? OS中是否嵌入了任何测量系统映射?如果没有这样的功能,你如何处理这个问题?
答案 0 :(得分:0)
所以这种事情是应用程序本地化的一部分。通常规则是 - 在您的应用程序内部使用一个系统(通常是公制,但任何东西都可以)。仅在显示之前或在输入数据之后立即转换为本地单位,从不将数据存储在除内部格式之外的任何内容中。
您可以找到一个库来为您执行此操作,但它不是内置于Android或Java中。通常情况下,您不会将每种语言映射到长度,温度等。您只需按照建议进行操作 - 构建几个链接的选项,并将Locales映射到一组特定的选项。如果您选择公制作为默认值,则只需要对2个或3个国家/地区进行覆盖 - 几乎每个人都使用指标。
答案 1 :(得分:0)
我有一个建议。
首先将值存储在国际单位中。 (m的距离,kg的重量,C的温度等)。然后使用一些方法将国际单位转换为其他单位。当您需要非国际单位时,请使用这些方法获取转换后的值。您可以使用if语句或开关来相应地获取值。
作为一个例子
if(/*international unit ?*/){
Log.D("International unit : ", temperature + "C");
}else{
Log.D("Non - International unit : ", getTemperatureInFahrenheit(temperature) + "F");
}
float getTemperatureInFahrenheit(float celsius){
return ((celsius * 9 / 5.0) + 32)
}