android - 如何使俄语数量字符串正常工作?

标签 android

我遇到了数量字符串(复数)的问题。

The manual says ,我可能会提供特定于每个本地化的数量字符串,有几种常见情况:“零”、“一”、“二”、“少”、“多”和“其他”。我不知道是否涵盖了世界上所有语言的所有可能情况;无论如何,这对于我正在尝试进行本地化的俄语来说绰绰有余。

在俄语中,从 2 到 4 的数字应该被视为“很少”(规则实际上更复杂,但我只需要十以下的数字)。

但是,当我请求 2 的数量字符串时,系统采用“其他”字符串。它既不需要“两个”字符串,也不需要“几个”字符串(我已经在我的资源中提供了它们)。如果我删除了“其他”字符串,则会出现异常:

android.content.res.Resources$NotFoundException: 
    Plural resource ID #0x7f080000 quantity=2 item=other

我在模拟器 (Android 2.1) 和真实设备 (Android 2.3) 上都试过了,两种情况下的行为都是一样的错误。显然,某处存在错误——系统无法识别我的语言的区域特定数量。会不会是安卓这里有bug?

最佳答案

我相信这在 Android 中目前是错误的。

http://code.google.com/p/android/issues/detail?id=8287

具体来说,PluralRules.java 中的以下代码显示大多数语言只使用 oneother 字符串,但捷克语将使用 few 字符串:

static final PluralRules ruleForLocale(Locale locale) {
    String lang = locale.getLanguage();
    if ("cs".equals(lang)) {
        if (cs == null) cs = new cs();
        return cs;
    }
    else {
        if (en == null) en = new en();
        return en;
    }
}

private static PluralRules cs;
private static class cs extends PluralRules {
    int quantityForNumber(int n) {
        if (n == 1) {
            return QUANTITY_ONE;
        }
        else if (n >= 2 && n <= 4) {
            return QUANTITY_FEW;
        }
        else {
            return QUANTITY_OTHER;
        }
    }
}

private static PluralRules en;
private static class en extends PluralRules {
    int quantityForNumber(int n) {
        if (n == 1) {
            return QUANTITY_ONE;
        }
        else {
            return QUANTITY_OTHER;
        }
    }
}

关于android - 如何使俄语数量字符串正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12751622/

相关文章:

java - 如何使用共享首选项来更改语言

java - 致命异常 : main Unable to start activity ComponentInfo Caused by java. lang.NullPointerException

java - 无法对非静态方法进行静态引用

android - 实现谷歌登录时,我的 flutter 项目出现错误

android - 如何从另一个移动应用程序链接到 Twitter、Facebook 和 YouTube 应用程序?

android - 将音频文件与另一个音频文件进行比较或处理该文件以查找特定单词是否更快?

java - BroadcastReceiver 未收到下载完成操作

android - 我可以管理生命周期所有者,用 Koin 注入(inject) viewModel 吗?

android - Snackbar.setCallback()在Android AppCompat中无法解析

android - 使用 API key 在 Android 上通过 GRPC 验证 Google Cloud Speech