如何在MVC应用中翻译Umbraco CMS?部署调用API报错求助
解决Umbraco API本地化MVC子项目文本的常见配置问题
Hey there! Let's walk through the key configuration checks and fixes to resolve your localization error when using Umbraco API with the MVC project at http://umb.local/poc:
1. 确认Umbraco后台语言配置
- 先登录Umbraco后台(
http://umb.local/umbraco),进入Settings > Languages,检查你需要的目标语言是否已经添加、启用,并且设置为可用语言(如果需要设为默认也可以调整)。 - 还要确保对应的内容节点已经创建了该语言的本地化分支——Umbraco的本地化API依赖于内容节点的多语言结构来获取对应文本。
2. 配置MVC项目的本地化基础设置
- 在MVC项目的
Web.config中添加全球化配置,确保支持客户端文化识别:<system.web> <globalization uiCulture="auto" culture="auto" enableClientBasedCulture="true" /> </system.web> - 如果你的MVC项目是独立部署的子项目,需要手动注册Umbraco的本地化服务到依赖注入容器里(如果是Umbraco托管的项目这一步会自动完成),确保能正常调用
ILocalizationService。
3. 修复子路径的权限与路由配置
- 由于MVC项目在
/poc子路径,要给Umbraco添加CORS允许规则,在Umbraco主站点的web.config中添加:<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="http://umb.local" /> <add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS" /> <add name="Access-Control-Allow-Headers" value="Content-Type" /> </customHeaders> </httpProtocol> </system.webServer> - 检查Umbraco的
umbracoSettings.config,确保路径和应用URL配置正确,保证API请求能正确路由到Umbraco实例:<settings> <umbracoPath>/umbraco</umbracoPath> <umbracoApplicationUrl>http://umb.local</umbracoApplicationUrl> </settings>
4. 验证本地化文本的存储与调用逻辑
- 如果用Umbraco字典项存储本地化文本,要确保目标语言的字典翻译值已正确添加,并且调用API时指定了正确的语言ISO代码(比如
zh-CN、en-US)。示例调用代码:var localizationService = Services.LocalizationService; var dictItem = localizationService.GetDictionaryItemByKey("YourDictionaryKey"); var localizedText = dictItem?.Translations.FirstOrDefault(t => t.Language.IsoCode == "zh-CN")?.Value; - 如果你是直接从内容节点获取本地化字段,要确保调用时传入了对应的语言上下文。
5. 检查依赖与权限
- 确保MVC项目引用的Umbraco NuGet包(比如
Umbraco.Cms.Core、Umbraco.Cms.Web.Common)版本和主Umbraco实例完全一致,避免版本冲突导致的API调用失败。 - 检查MVC项目的应用池账号,确保它有访问Umbraco数据库的权限——毕竟本地化数据都是存在Umbraco数据库里的。
如果做完这些配置还是有问题,建议把错误截图里的具体异常信息(比如错误类型、堆栈跟踪)贴出来,这样能更精准地定位问题~
内容的提问来源于stack exchange,提问作者QuachNguyen
相关产品推荐
相关产品推荐

