Vb.net NET中的国际化。数据库驱动?资源交互?

Vb.net NET中的国际化。数据库驱动?资源交互?,vb.net,database-design,resources,internationalization,Vb.net,Database Design,Resources,Internationalization,我正在.NET(VB.NET)中研究CMS的国际化。在管理部分,我们使用了资源,但对于客户机,我们需要一个UI,以便有人可以看到标签并将其从一种语言转换为另一种语言 因此,第一个想法是使用三个表驱动数据库: Label Translation Language ----- ----------- -------- id id id name keyname_id n

我正在.NET(VB.NET)中研究CMS的国际化。在管理部分,我们使用了资源,但对于客户机,我们需要一个UI,以便有人可以看到标签并将其从一种语言转换为另一种语言

因此,第一个想法是使用三个表驱动数据库:

Label     Translation          Language
-----     -----------          --------
id         id                  id
name       keyname_id          name
filename   language_id
           value
然后创建一个UI,这样您就可以允许客户端首先选择您要翻译的页面的文件名、标签,然后选择他想要的语言并进行翻译,然后将其存储在translations表中。 我在这里看到一个问题:如何从页面中提取所有标签

我还发现了一个资源管理器的示例,它可以以交互方式进行翻译。 此解决方案的好处是,您正在使用资源,因此,由于完成了一些工作,所以一切看起来都很简单。另一方面,这种结构可能更难实现,我不知道,因为我在这方面没有经验

那么,您如何看待这两种方法?什么对你更好?也许还有第三种方法更简单



编辑:我还找到了关于的链接。你觉得怎么样?也许它会有用,但我不知道,也许对我来说太多了。我在想从哪里开始

在分类账MB中,我们采用了以下方法:

  • 应用程序字符串(以及代码中的字符串)由标准的i18n框架(GNU gettext)进行翻译

  • 业务数据在数据库中手动转换。因此,您可以为部门名称、项目名称、商品和服务描述等添加翻译

  • 我们解决您所说问题的方法是连接其他表,因此我们可能有:

    CREATE TABLE parts (
       id int primary key.... -- autoincrements but not relevant to this example
       description text,
       ...
    );
    
    CREATE TABLE language (
       code varchar(5) primary key, -- like en_US
       name text unique,
    );
    
    CREATE TABLE parts_translation (
       parts_id int not null references parts(id),
       language_code varchar(5) not null references language(code),
       translation text
    );
    

    然后,我们可以在运行时根据所需的语言进行查询。

    查看这些问题并确定。我会检查的。非常感谢。隐马尔可夫模型。。。我读了它们,它们非常有用,第一个是很好的推荐,好的,第二个提供了很好的翻译想法,但是没有UI,事实上我用这种技术翻译了CMS的一部分,但是有一部分是给客户的,我需要一个UI,这样他可以选择他的标签并轻松地翻译它们。谢谢这些链接!;-)