Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据库的国际化_C#_Sql Server_Internationalization - Fatal编程技术网

C# 数据库的国际化

C# 数据库的国际化,c#,sql-server,internationalization,C#,Sql Server,Internationalization,你们认为国际化应该只在代码级别进行,还是应该在数据库中进行 是否有任何设计模式或公认的数据库国际化实践 如果您认为这是一个代码问题,那么您是否只使用资源文件来查找从数据库返回的密钥 感谢国际化扩展到数据库,只要您的列能够保存数据。NText、NChar、NVarchar而不是Text、Char、Varchar 就您的UI而言,对于不变的标签,资源文件是一种很好的使用方法。这在很大程度上取决于您在数据库中存储的内容。以我最近参与的一个项目为例,在客户网站上输入的电影标题只有该客户才能看到,这是一个

你们认为国际化应该只在代码级别进行,还是应该在数据库中进行

是否有任何设计模式或公认的数据库国际化实践

如果您认为这是一个代码问题,那么您是否只使用资源文件来查找从数据库返回的密钥


感谢

国际化扩展到数据库,只要您的列能够保存数据。NText、NChar、NVarchar而不是Text、Char、Varchar


就您的UI而言,对于不变的标签,资源文件是一种很好的使用方法。

这在很大程度上取决于您在数据库中存储的内容。以我最近参与的一个项目为例,在客户网站上输入的电影标题只有该客户才能看到,这是一个公平的游戏,可以按原样存储在数据库中。另一方面,投影仪错误代码,因为它可以被客户端以及可能位于不同国家/地区的网络运营中心查看,所以应该存储为错误代码(以及支持数据,如灯时数和正在播放的电影的标题)可以根据查看器的语言设置在gui级别进行翻译。

如果您提到让应用程序在UI级别支持多种语言,则有更多的可能性。如果标签从未更改,除非发布新版本,那么嵌入到可执行文件或程序集本身中的资源文件是最好的选择,因为它们工作得更快。另一方面,如果用户需要在运行时调整标签,则将翻译存储在数据库中是一个不错的选择。至于代码本身,数据库中的表和字段的名称,我们尽可能多地保留它们,因为英语是IT人员的“事实上”标准。

覆盖了技术性,但您可能需要考虑的是支持一个显示不懂的语言的系统。

解决这一问题的一种方法是将英语作为默认语言,并使用用户设置切换到不同的语言。这样,您的支持用户就可以以自然的方式登录并查看系统(假设英语是他们的第一语言),而您的实际用户就可以以他们的第一语言查看系统。在我看来,数据应该是“自然的”——用用户的语言


这引出了另一个有趣的问题——您的系统是否应该允许跨国界安装使用多种语言?根据我的经验,对于用户界面,是的,但是对于数据,是的。举一个地址格式的小例子,从瑞士系统发送给法国第三方的信件仍然应该有瑞士格式的地址,而不是法国格式的地址,因为它必须首先通过瑞士邮政系统。

如果您的客户是日本人,并且希望看到他们的名字是汉字和片假名(有时是最正式的Gaiji),那么您必须将其存储为Unicode。这是不可能的。

即使是地址之类的东西,在美国和日本也有很大的不同。一种模式不能同时适用于两种模式。

事实上,您对地址格式的理解是错误的。国际邮政联盟要求地址中的最后一件事是国家名称,并加下划线。瑞士邮政系统需要解析的只是国家名称。