C#中使用.resx资源文件进行数据库字符串本地化

时间:2016-06-22 09:40:02

标签: c# database sqlite localization resources

在我们的项目(针对.NET 4.0的C#)中,翻译人员使用ResX Resource Manager来管理本地化(存储在.resx资源中)。此工具提供快速导航,编辑和过滤。他们喜欢它与并排语言列的界面很多: enter image description here 我们的下一个目标是数据库字符串本地化我们有一个SQLite嵌入式数据库,用于存储随时间变化的信息(用户可以通过使用ORM的.NET应用程序执行CRUD操作)。我们的数据库已经分为两部分:与语言无关的部分(存储GUID,INT,DOUBLE,ARRAY等)和可本地化的部分(存储GUID和文本信息)。两个部分中的GUID(主键)都需要ORM将值组合到单个实体中。

因此我们假设我们有可本地化的部分 DB.TXT.en.sqlite ,目标是获取例如 DB.TXT.de.sqlite ,其中GUID仍然是相同但文本信息被翻译成德语。

我们的transtaion工作人员当然希望使用他们熟悉的工具(ResX资源管理器),并且没有使用任何SQLite查看工具。

所以我尝试实施以下方法(例如在 DB.TXT.en.sqlite 我有用户表,其中包含GUID ID,STRING FirstName ,STRING LastName):

  1. 我编写了一个实用程序,它将 DB.TXT.en.sqlite 数据库中的数据读入.resx资源文件。例如,我可以命名属性,如 Users.ee5c8268-9b1f-46f8-9327-6309b8613421.FirstName Users.ee5c8268-9b1f-46f8-9327-6309b8613421.LastName 。如果属性已经存在(字符串之前已经被翻译过) - 不执行任何操作。
  2. 翻译人员照常使用.resx文件
  3. 我将 DB.TXT.en.sqlite 中的所有数据复制到 DB.TXT.de.sqlite
  4. 我写了一个实用程序,它读取.resx文件,解析属性'为 DB.TXT.de.sqlite 命名并创建UPDATE语句(如UPDATE Users SET FirstName = Users.ee5c8268-9b1f-46f8-9327-6309b8613421.FirstName.Value WHERE Id = ee5c8268-9b1f-46f8 -9327-6309b8613421)。
  5. 这种方法可行吗? 它有任何缺点/权衡吗? 当员工不使用任何数据库查看器工具时,是否有更好/更简单的方法来翻译存储在数据库中的字符串?

0 个答案:

没有答案