有很多资源(包括官方文档)在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
有什么建议吗?
答案 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
类中为中性和本地文化定义它们。
因此,每个博客帖子都将具有多个本地化版本,可以作为主要帖子的子级直接从数据库中获取。