我正在开发一个网络项目,希望有一天能够提供多种语言版本(我说“希望”是因为虽然我们今天只计划了英文网站,但我的公司的其他产品都是多语言的,我希望我们足够成功需要这个功能)。
我了解到最佳实践(我使用的是Java、Spring MVC和Velocity),是将用户所见到的所有文本放在外部文件中,并通过名称在UI文件中引用,例如:
但是,由于我以前从未在项目中经历过这个过程,我很好奇当您有一些 UI 段落需要大量标记时,最好的处理方式是什么,例如:
我能想到的一个选项是将此“低级”标记存储在 messages.properties 中的消息本身中,但这似乎是最糟糕的选择。
我能想到的其他选项包括:
- 将每个非标记内部片段存储在 messages.properties 中,例如 acquisitionAnnounce1、acquisitionAnnounce2、acquisitionAnnounce3。不过这似乎非常费力。 - 将此消息分解为更多可重用组件,例如 Company1.name、Company2.name、Company2.ticker 等,因为每个组件可能在许多其他消息中被重复使用。这可能占据了特定消息中 80% 的单词。
处理包含此类标记的国际化文本的最佳实践是什么?你是否必须咬紧牙关,忍受分解每个文本块的痛苦?从你个人处理过的任何项目中,哪种方法是最好的解决方案?
我了解到最佳实践(我使用的是Java、Spring MVC和Velocity),是将用户所见到的所有文本放在外部文件中,并通过名称在UI文件中引用,例如:
#in messages_en.properties:
welcome.header = Welcome to AppName!
#in the markup
<title>#springMessage("welcome.header")</title>
但是,由于我以前从未在项目中经历过这个过程,我很好奇当您有一些 UI 段落需要大量标记时,最好的处理方式是什么,例如:
<p>We are excited to announce that Company1 has been acquired by
<a href="http://www.companydivisionx.com" class="boldLink">Division X</a>,
a fast-growing division of <a href="http://www.company2.com" class="boldLink">Company 2</a>, Inc.
(Nasdaq: <a href="http://finance.google.com/finance?q=blah" class="boldLink">BLAH</a>), based in...
我能想到的一个选项是将此“低级”标记存储在 messages.properties 中的消息本身中,但这似乎是最糟糕的选择。
我能想到的其他选项包括:
- 将每个非标记内部片段存储在 messages.properties 中,例如 acquisitionAnnounce1、acquisitionAnnounce2、acquisitionAnnounce3。不过这似乎非常费力。 - 将此消息分解为更多可重用组件,例如 Company1.name、Company2.name、Company2.ticker 等,因为每个组件可能在许多其他消息中被重复使用。这可能占据了特定消息中 80% 的单词。
处理包含此类标记的国际化文本的最佳实践是什么?你是否必须咬紧牙关,忍受分解每个文本块的痛苦?从你个人处理过的任何项目中,哪种方法是最好的解决方案?