我们使用资源文件(.resx)将我们的.NET 4.5MVC C#应用程序翻译成不同的语言。这对于位于我们视图中的静态文本非常有效。但是,我们也有从SQL数据库中提取的值需要转换。
例如:下拉列表中的值是从数据库中的表中填充的。
在数据库中转换这些值的最佳实践是什么?
发布于 2015-06-15 21:36:23
在我设计的上一个多语言应用程序中,我使用了一个用于语言的表,对于每个具有任何字符串类型(char、varchar等)的表,我都有一个转换表。
大致是这样的:
CREATE TABLE TblLanguage
(
Language_Id int identity(1,1) PRIMARY KEY,
Language_EnglishName varchar(30),
Language_NativeName nvarchar(30),
CONSTRAINT UC_TblLanguage UNIQUE(Language_EnglishName)
)
CREATE TABLE TblSomeData (
SomeData_Id int identity(1,1) PRIMARY KEY,
SomeData_TextColumn varchar(50),
....
)
CREATE TABLE TblSomeData_T ( -- _T stands for translation
SomeData_T_SomeData_Id int FOREIGN KEY TblSomeData(SomeData_Id),
SomeData_T_Language_Id int FOREIGN KEY TblLanguage (Language_Id),
SomeData_T_TextColumn nvarchar(100),
PRIMARY KEY (SomeData_T_SomeData_Id , SomeData_T_Language_Id)
)我的应用程序将英语作为其默认(或主要)语言,因此我将默认语言保留在基表中,仅将翻译放在翻译表中。当然,如果愿意,您可以只将字符串值保留在translations表中。请注意,这没有考虑到每个区域性的不同日期和数字格式,这是在表示层上完成的。
https://stackoverflow.com/questions/24045105
复制相似问题