[英]Angular app and internationalization and localization
我们有一个现有的silverlight应用程序,该应用程序可以在浏览器+硬件上运行。
我们想使用angular js和html5重写此应用程序。
新系统的关键要求之一是对国际化和本地化的支持。 目前的目标国家是美国,巴西,意大利。
这是我的新手,有很多基本问题。
是否需要重新设计现有数据库以支持相同数据库? 我的意思是确定需要具有特定于语言环境的数据的列(product_name / customer_name等),然后为每个语言环境存储数据,并修改sprocs和webapi以接受语言参数,然后基于该内容获取内容。 ? 我相信我们需要使用nvarchar这样的列。
db中的货币和日期时间列将如何处理? 说有数量列,那么此列在db中的数据类型应该是什么? 如果当前语言环境是葡萄牙语,则数量将以葡萄牙语编号存储。
根据语言环境存储和检索货币列的最佳做法是什么?
根据语言环境存储和检索日期列的最佳做法是什么?
如何处理字符串检查,webapi方法中的数字检查?
如何进行比较并检查javascript中的字符串,数字,日期时间
请分享指向一些可能会有所帮助的良好指针的链接。
因此,简而言之,从javascript到.net webapi到数据库(sql),我们应该如何照顾与语言环境相关的逻辑和字段
谢谢。
有很多问题,让我们看看我是否可以回答。
NCHAR
, NVARCHAR
, NTEXT
,其他有效的字符编码)。 2,3。 所有数字列均应保持与语言环境无关,并在用户界面侧进行格式化。 更麻烦的是价格和销售订单-您将需要一个额外的列来存储货币代码(即12.34 | USD)。 在用户界面方面,您需要将代码传递给Angular货币过滤器。 这里唯一的问题是,Angular不支持轻松的语言环境上下文切换,因此您需要使用像Angular Dynamic Locale这样的hacky库来为您加载格式。
类似。 使其与语言环境无关。 DB内置类型应自动为您处理,并为您提供不错的DateTime
/ DateTimeOffset
(在.Net环境中)。 唯一的陷阱是时区-使用DATETIMEOFFSET
MS SQL类型可能很有意义,因为其他人不存储时区。
还有另一种将日期和时间存储在数据库中的方法-您可以决定将其以自UTC 1970年1月1日以来的毫秒数存储-作为BIGINT
类型。 特别是如果您打算直接将其读取给JS,则可以在有效时区轻松地重新创建JS Date对象(如果需要此对象进行计算或其他操作)(反之亦然)。 格式化日期所需要做的就是使用此数字(而不是日期,即AFAIR)和Angular的日期过滤器(以UTC为参数)。
我不明白您到底在问什么。 我想这个问题是关于用户输入的验证,而不是API。 好吧,提防使用正则表达式,因为JavaScript不能很好地处理Unicode(至少在此方面)。 您需要提出更精确的问题。
假设您具有Number和Date对象(即typeof o == 'number'
),则它很简单(如obj1 === obj2
)。
就字符串而言...好吧, str1 === str2
将为您提供准确的答案。 如果要对它们进行排序,那么现代网络浏览器(Chrome 14 +,Firefox 29 +,IE11 +)将实现EcmaScript 402国际化API,以便您可以执行诸如str1.localeCompare(str2, locale)
, 请参阅本文 。
真正的问题发生在您要比较两个字符串时,区分大小写不敏感和重音不区分相等(与排序一样,反对排序)。 基本上没有办法(即使在Java或C#等“大型”编程语言中也是如此)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.