簡體   English   中英

JSP / Spring中帶有嵌套鍵的國際化

[英]internationalization in JSP/Spring with nested keys

尋找一種允許嵌套鍵的干凈的國際化方法。

例如Message =請檢查您的啟動工具。
現在,單詞引導在s / w中使用了100多個字符串,當我去客戶端X時,他說用主干更改引導。 所以想創建語言文件,其密鑰嵌入值中

message =請檢查您的{boot}工具。
引導=樹干

這將是一個SaaS應用程序,我們將允許用戶通過Web界面更改字符串。

我不確定這是個好主意:

  • 在實際更改之前,您如何知道哪些單詞或單詞序列容易更改?
  • 如果客戶X想要從句子中刪除“請”怎么辦?
  • 您打算如何處理復數形式,變化的語法規則,單詞之間的體裁差異等(所有這些都以幾種不同的語言顯示)?

恕我直言,您的系統要么很簡單,但將在2%的情況下適合您的賬單,或者它將非常復雜,是使用和配置的噩夢,並且您將浪費時間和可讀性來解決很少發生的問題並可以通過臨時搜索/替換來解決。

如果簡單的方法適合您,我只需要特殊的標記即可識別令牌(例如@boot@ ),並在構建應用程序期間進行替換 ,例如使用Ant的replace任務

您想要做的是串聯 -第二種最常見的國際化缺陷。 換句話說,不要那樣做。 最好復制這100個字符串-使用有效的工具(例如支持正則表達式的文本編輯器)相當容易,而不是串聯字符串。

較長的原因解釋:

  1. 許多(如果不是最多的話)語言都有Inflection的概念,即您想要連接的詞可能需要翻譯成幾種不同的形式。

  2. 翻譯通常取決於上下文。 如果必須完全按原樣翻譯單詞(僅更改形式),那么上下文本身就沒有必要。 這不是一個理論,請考慮以下示例。
    我們在資源中有一個字符串,例如“ {0}已切換為{1}”,該字符串已解析為“ [某些程序] | [某些功能]已切換為[開] | [關]”。 問題是,當我們想將其正確翻譯為波蘭語時(僅舉一個例子,它以多種其他語言出現),根據它是程序還是函數,它應該有所不同。 僅僅因為程序是男性化的(“ Program [jakiśprogram]został[włączony] | [wyłączony]”)並且功能是女性化的(“ Funkcja [jakaśfunkcja]został* a * [włączon* a * ] | [wyłączon* a * ]“)。
    不僅需要更改單詞的形式,還需要更改整個上下文(請參閱添加的單詞)!
    串聯是不可行的。 你們中有些人可能會說“磁盤占用量如何?”。 好吧,如今空間很便宜,對與錯的情況就是如此。 僅將單詞串聯以節省幾千字節是錯誤的,並且會導致嚴重的可本地化性問題。

  3. 有時,拐彎不是問題,但您需要根據具體情況將語氣從指示性更改為命令性。 這帶來了不同的翻譯。

如果您確實需要使用消息格式,建議您僅將其用於數字,貨幣和日期(記住有效的區域格式!)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM