我们正在计划一个很大的应用程序。
-我们希望将我们的应用程序国际化到30个国家/地区。
-在大多数国家/地区,提供1至6个不同的品牌。
-某个特定语言环境(例如“de”)和品牌(例如“XXX”)的每种组合可能会多次出现,因此我们需要另一个标识符来获取唯一的内容:
"locale_brand_siteorigin"
因此,我们有了.resx文件,例如:
配置。 de.burgerking.px10 .resx
粗体字是唯一的标识符。
在运行时,我们创建一个:
var rm = new ResourceManager("MyNamespace.Configurations.UniqueIdentifier",Assembly.GetExecuting());
根据我们的业务逻辑,我们可以创建上面的resourceManager。
最终,我们将拥有180多个带有唯一标识符的所有组合的resx文件。
您知道做这种品牌推广的更好方法吗?
4年前有人问这个问题,但没有一个回答:
Industry standard for implementing application branding?
更新
我还想扩展我的问题,寻求一个解决方案,以显示使用 cultureandregioninfobuilder 类创建许多自定义文化的好处。
https://msdn.microsoft.com/en-us/library/system.globalization.cultureandregioninfobuilder(v=vs.110).aspx
最佳答案
我不建议将.resx文件用于如此庞大的项目。当将网站翻译成多种不同的语言时,通常很多人都参与复制管理,翻译等工作。这些人将无法编辑.resx文件,因为它们在技术上已嵌入到应用程序代码中。这意味着您的开发人员将不得不在每次更改时不断更新资源……每个人的噩梦。
我最近为SumoSoft.Cms构建了一个数据库驱动的系统。所有字符串都可以通过“管理”面板进行管理,而在您只使用的代码中:
@CmsMethods.StringContent("ContentSection_Name", "Fallback_Value")
该帮助器查询数据库,以查找类型为“ContentSection”的实体,该实体的结构大致如下:
public class ContentSection
{
public string Name { get; set; }
public ICollection<ContentSectionLocalizedString> LocalizedStrings { get; set; }
}
每个LocalizedString都包含对特定国家/地区的引用以及属性“Content”,因此,Helper所做的只是选择与线程的当前区域性匹配的那个。
关于c# - 如何在.NET中进行极端的品牌/国际化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36582901/