Class Multilingual

java.lang.Object
com.imyeyu.lang.multi.Multilingual
All Implemented Interfaces:
com.imyeyu.java.bean.LanguageMapping
Direct Known Subclasses:
FileMultilingual, ResourcesMultilingual

public class Multilingual extends Object implements com.imyeyu.java.bean.LanguageMapping
多语言系统,支持多文件多语言加载
     // lang 文件
     say.msg=hello {0}

     // 加载
     Multilingual lang = Multilingual.getInstance();
     lang.load(Language.zh_CN, "lang/timijava/%s.lang");

     // 加载所有支持的映射文件
     lang.loadAll("lang/timifx/%s.lang");

     // 设置当前激活语言
     lang.setActivated("zh_CN");

     // 引用当前激活语言
     Multilingual.text("say.msg");
     Multilingual.text("say.msg", "timi-java");

     // 动态引用
     Multilingual.map("en_US").text("say.msg");
 
Version:
2021-10-25 15:16
Author:
夜雨
  • Field Details

    • multilingualMap

      protected final Map<com.imyeyu.java.bean.Language.Enum,AbstractLanguageMapper> multilingualMap
      多语言映射表,存储各语言对应的映射器
    • updateActiveListeners

      protected final List<com.imyeyu.java.bean.CallbackArg<com.imyeyu.java.bean.Language.Enum>> updateActiveListeners
      激活语言更新回调列表
    • activated

      protected com.imyeyu.java.bean.Language.Enum activated
      当前激活语言
    • isDebugging

      protected boolean isDebugging
      是否启用调试模式
  • Constructor Details

    • Multilingual

      public Multilingual()
      默认构造

      根据系统默认 Locale 初始化激活语言,如果无法识别则默认为中文

  • Method Details

    • add

      public void add(com.imyeyu.java.bean.Language.Enum language, AbstractLanguageMapper mapper)
      添加语言映射器
      Parameters:
      language - 语言
      mapper - 语言映射器
    • addUpdateActiveListeners

      public void addUpdateActiveListeners(com.imyeyu.java.bean.CallbackArg<com.imyeyu.java.bean.Language.Enum> callback)
      添加更新激活语言回调
      Parameters:
      callback - 回调
    • removeUpdateActiveListeners

      public void removeUpdateActiveListeners(com.imyeyu.java.bean.CallbackArg<com.imyeyu.java.bean.Language> callback)
      移除更新激活语言回调
      Parameters:
      callback - 回调
    • setActivated

      public void setActivated(String languageName)
      设置激活语言
      Parameters:
      languageName - 激活语言
    • setActivated

      public void setActivated(com.imyeyu.java.bean.Language.Enum activated)
      设置激活语言
      Parameters:
      activated - 激活语言
    • setDebugging

      public void setDebugging(boolean debugging)
      设置调试模式

      同时会将所有已加载的语言映射器设置为调试模式

      Parameters:
      debugging - true 为启用调试模式
    • map

      public AbstractLanguageMapper map(String lang)
      获取指定映射数据
      Parameters:
      lang - 语言
      Returns:
      映射表
    • map

      public AbstractLanguageMapper map(com.imyeyu.java.bean.Language.Enum lang)
      获取指定映射数据
      Parameters:
      lang - 语言
      Returns:
      映射表
    • add

      public void add(String key, String value)
      向当前激活语言的映射表添加键值对
      Specified by:
      add in interface com.imyeyu.java.bean.LanguageMapping
      Parameters:
      key - 键
      value - 值
    • has

      public boolean has(String key)
      当前激活语言是否存在语言映射
      Specified by:
      has in interface com.imyeyu.java.bean.LanguageMapping
      Parameters:
      key - 键
      Returns:
      true 为存在
    • text

      public String text(String key)
      从当前激活语言获取文本,支持二次映射,没有找到映射时返回入参键
           test.msg=Hello world
           mapping=@test.msg
           no_mapping=\@test.msg
      
           Multilingual.text("mapping");    // Hello world
           Multilingual.text("no_mapping"); // @test.msg
       
      Specified by:
      text in interface com.imyeyu.java.bean.LanguageMapping
      Parameters:
      key - 键
      Returns:
      文本值
    • text

      public String text(String key, String def)
      从当前激活语言获取文本
      Specified by:
      text in interface com.imyeyu.java.bean.LanguageMapping
      Parameters:
      key - 键
      def - 默认值(没有找到映射值时)
      Returns:
      获取结果
    • textArgs

      public String textArgs(String key, Map<String,Object> argsMap)
      从当前激活语言获取插入参数文本
      Specified by:
      textArgs in interface com.imyeyu.java.bean.LanguageMapping
      Parameters:
      key - 键
      argsMap - 参数
      Returns:
      结果
    • getActivated

      public com.imyeyu.java.bean.Language.Enum getActivated()
      当前激活语言