如何检查字符串是英语或德语或使用java的英语以外的任何其他语言

时间:2014-05-02 17:11:04

标签: java utf-8

我必须准备一个属性文件,其中键是英语,值不能是英语,如德语,中文,韩语,法语。我从xml文件中读取了键和值。我使用了一个linkedhashmap,因为序列也很重要,现在如果:

  1. 第一次遇到键和值都是英文,我插入地图,下次如果键相同但值可以是德语,那么我用德语替换英语单词。
  2. 如果我第一次找到具有德语价值的英语键,我什么都不做。
  3. 我尝试使用UTF-8获取字码,但它适用于韩语或中文,但不适用于德语。

    byte[] bytes = value.replace(" ", "").getBytes("UTF-8");
    

    if(value.charAt(i)>=128){
        ret = false;
    }
    

    我需要一个接受字符串作为输入的方法,如果string是英语则返回true,其余语言应该返回false。

    boolean isEng(String abc){
    if(abc is english)
    return true;
    }
    else
    return false
    }
    

    abc ="更改密码"应该回归真实, abc =" Changer le mot de passe"应该返回false

1 个答案:

答案 0 :(得分:1)

强烈建议您拥有单独的属性文件,每种语言一个。哎呀,这就是PropertyResourceBundle 的情景。

从根本上说,你不能说出一个单词是什么语言 - 有许多单词在多种语言中有效,有时具有相同的含义,有时具有不同的含义。 (例如,用英语和法语来思考“强大”......)哎呀,用一种语言中的单个词可以有多种含义......

想象一下你有键K1和K2,以及值A和B,带有以下映射:

English K1 = A
German K1 = B

English K2 = B
German K1 = A

这可能听起来很遥远,我不打算找一个例子,但这绝非不可能。

如果您希望代码根据认为某个特定单词是用一种语言还是另一种语言做出决定,那么您就处于一个痛苦的世界。对于更大的文本,有足够的工作,你可以启发式地确定 - 但即便如此,它也永远不会是完美的。对于单个单词,它会比“不完美”更糟糕。