翻译应用程序的有效方法

时间:2014-07-04 19:00:10

标签: vb.net dictionary translation

所以我在vb.net开发了一个应用程序,但最近我遇到了允许多种语言的必要条件。我不知道是否有任何'共同'方式来做这种事情,但我实现这一目标的方法如下:

  • 我需要在代码中搜索组件,错误消息以及要翻译的应用程序的GUI中显示的所有内容。
  • 其次,我将创建一个类,在其中我将在内存中存储将要翻译的所有内容的字典
  • 之后,我将用词典的条目替换要翻译的内容
  • 然后当应用程序启动时我将加载字典
  • 稍后,我将替换静态字典并将其从数据库加载到内存中

例如,我的词典类:

Dim dictionary As New Dictionary(Of String, String)
dictionary.Add("00011", "hello there!")

在我的代码的某处,我将替换:

mylabel.text = "hello there!"

使用:

mylabel.text = dictionary.item("00011")

稍后我将不再使用静态字典,而是创建该字典,从这样的数据库中获取信息(并在应用程序的开头加载它:

_______________________________________
word_code ### word_EN      ### word_FR
_______________________________________
00011     ### hello there  ### bonjour il

我将根据选择的语言加载字典。

我对这种方法不太满意,我不知道这是否正确,但如果是这样,我有几个问题:

  • 是一个字典,它是最好的数据结构吗?
  • 考虑到我将有1000个参赛作品,1个参赛作品或10个参赛作品,这会非常重要吗?
  • 是否有任何逻辑和更快的方法来完成相同的工作?

非常感谢先进, Ĵ

1 个答案:

答案 0 :(得分:1)

这是一种常见的方式 - 使用系统名称和语言代码来查找翻译的值。但是,一般来说,我只建议你为系统文本和较小的文本段这样做。

原因是在例如CMS /电子商务系统中,可能需要在数据模型中翻译包含大量文本的页面以支持它开始;然后你已经有了语言部门。 因此,在这种情况下,您最好使用已翻译的数据模型制作页面结构,其中详细信息将针对您当前网站的每种语言的语言特定。 例如,您将拥有一个产品 - > product_detail其中detail保留所述产品的翻译值。类似于文章 - > article_detail等等。

但是对于需要显示的一般翻译和系统文本,这是一种常见的方式。 正如你自己建议的那样,像字典这样的结构是一个很好的结构,可以快速查找并可以缓存在系统中,因此你不需要一直检索它们。

您可以通过以下方式将您的翻译细分为子组;说你有一个订单页面和一个产品页面。然后,您可以将翻译分配给“产品”,也可以将“订购”分配给“普通”组。 它还可以更轻松地构建较小的缓存对象,从数据存储中提取较少的数据等,因此仅围绕订单的页面不需要担心产品转换。

它需要内存,但除非您将整个CMS系统放入翻译中,否则它应该是“次要的”。 然而,我会质疑需要1000万个翻译实体,并想知道你的系统是否真的需要那么多,如果确实如此,那么可能会考虑一种替代方法,是否可能更好地将“页面”的多个版本设置为消除翻译的需要。

我还建议你不要使用“00011”作为系统代码来开始,并选择一个更“可读”的版本(如“hello”)来简化代码的可读性和可维护性。那么如果你想要一个类似“00011”的'系统值',那么很容易进行搜索/替换。