多語言文件
此為 v0.0.8 後的功能。
多語言文件,指一個訊息集合下可有多種不同的語言,可用作 i18n。
假設你的插件 jar 內有兩種語言文件:
prefix: "[ELD] "
first: "This is the first message"
second: "This is the second message"
third: "This is the third message"prefix: "[ELD] "
first: "這是第一則信息"
second: "這是第二則訊息"
third: "這是第三則信息"則創建一個繼承 GroupLangConfiguration 的類,並配置如下:
@GroupResource(
folder = "Langs", // 語言文件的文件夾
preloads = {"en-us", "zh-tw"} // 複製這兩個文件從 jar 內到 插件資料夾
)
@DefaultLanguage("en-us") // 定義默認語言
@Prefix(path = "prefix") // 定義prefix路徑
public class TesterMultiLang extends GroupLangConfiguration {
}
註冊如下:
使用
註冊完成後,則可注入 GroupLang<T> 服務並標註 @InjectPool 來進行獲取:
在上述的指令中, 輸入 /test lang en-us 將出現 en-us.yml 文件內的訊息,輸入 /test lang zh-tw 則出現 zh-tw.yml 文件內的訊息。若查無文件,則發送 unknown language 。
在使用上,你會發現跟 文件池配置 其實很相同。但兩者的分別在於,GroupLang<T> 只提供了唯讀性質的操作。其源碼如下:
跟 GroupConfig<T>同樣,GroupLang<T> 本身的操作也不是異步的,你需要自行實作異步。但它本身亦有快取功能,能大程度上加快二次獲取。
有時候你可能需要手動去獲取特定類型的 GroupLang<T>,這時候你應該使用文件池服務。
使用為 i18n
你可以透過多語言文件實作 i18n 的服務,範例如下:
最后更新于