在aspnetcore中是否有任何支持用户内容本地化的库?

时间:2018-08-13 13:53:14

标签: entity-framework asp.net-core localization

有很多资源(包括官方文档)在aspnetcore中描述G11n和L10n。

但是是否有任何库可以简化用户内容本地化的实现?一个示例可能是博客文章的内容,可以将其翻译成多种语言。这样的库将使用SQL中的特定表来存储/检索翻译。

这是可能的用例:

// this object contains content that user can add manually
public class BlogPost
{
   // should be localised
   public string Content { get; private set; }
}

为了解决此问题,我们似乎可以添加“字符串内容”的集合:

public class LocalizableContent 
{
    public string CultureInfo { get; private set; }
    public string Content { get; private set; }
}

public class BlogPost
{
    public ICollection<LocalizableContent> Content { get; private set; }
}

注意:在进行了一些谷歌搜索之后,我发现了一个相关问题(但没有给出答案): Best Practices to localize entities with EF Code first | StackOverflow

而且,不是似乎该库可以提供帮助: github.com/damienbod/AspNetCoreLocalization

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我认为您可以实现内容本地化库,而无需使用第三方。就个人而言,我会执行以下操作:

public class BlogPost {
 public int Id { get; set; }
 public ICollection<BloPostLocalized> Localizations { get; set; }
}

为BlogPost创建本地化的类:

public class BlogPostLocalized {
 public int Id { get; set; }
 public BlogPostId { get; set; }
 public BlogPost { get; set; }
 public string Culture { get; set; }
 public string Title { get; set; }
 public string Content { get; set; }
}

请注意,主要BloPost没有标题或内容字段,因为我们将在BlogPostLocalized类中为中性和本地文化定义它们。

因此,每个博客帖子都将具有多个本地化版本,可以作为主要帖子的子级直接从数据库中获取。