为getBundle()自定义ResourceBundle文件格式?

时间:2015-03-02 08:51:30

标签: java locale resourcebundle

有没有办法改变文件格式& ResourceBundle的名称格式?这可能听起来像一个毫无意义的目标,但实质上我想改变它,而不是寻找:

   > baseName + "_" + language + "_" + country + ".properties"

它将寻找:

   > language + "_" + country + ".specifiedformat"

我正在创建一个小程序,并希望将每个语言环境放入一个文件格式不同的单个文件中.properties,只需使用特定的语言环境作为默认语言。

我已经尝试过使用ResourceBundle.Control,但没有任何运气。仅针对文件格式部分,我试图扩展ResourceBundle&控制,以便我可以声明一个新的格式。 getControl是最终的,所以不能轻易做任何事情。

   public static class MyControl extends Control {

     public static final List<String> FORMAT_MYFORMAT
          = Collections.unmodifiableList(Arrays.asList("java.myformat",
                                                 "java.class",
                                                 "java.properties"));

    @Override
    public List<String> getFormats(String baseName) {
        if (baseName == null) {
            throw new NullPointerException();
         }
         return FORMAT_MYFORMAT;
      }
    }

我不知道我尝试的是否接近标记。我几乎可以全面了解ResourceBundle中的方法,而不仅仅是整个方面。

感谢。

1 个答案:

答案 0 :(得分:0)

您也必须覆盖<!-- Added for NGram field--> <fieldType name="text_ngram" class="solr.TextField"> <analyzer type="index"> <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\b \b" replacement=""/> <tokenizer class="solr.KeywordTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.KeywordTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.PatternReplaceFilterFactory" pattern="\b \b" replacement=""/> </analyzer> </fieldType> ,如果格式不是ResourceBundle.Control.newBundle(...)IllegalArgumentException,则在默认实施中会抛出java.class