词典项(Dictionary items)是 Umbraco 中带键的字符串,每个语言对应一个值,由编辑在后台 Translation > Dictionary 下管理。它用于界面静态文案——标签、按钮、标题等,不用于正文内容:随语言变化的正文应放在文档类型的语言变体属性上。
用途与键命名
技能建议先确定键名,采用点分命名约定:一个父级分组项(例如 Site),子项命名为 Group.Thing(如 Site.ReadMore、Site.Footer.Copyright)。键是代码中引用的标识符,应按常量对待并保持大小写一致;在 Umbraco 默认数据库上查找不区分大小写,但不要跨环境依赖这一行为。分组可让翻译树对编辑保持可导航。
创建与迁移
在 Translation 区域创建词典项:如有 Umbraco Developer MCP 可通过它完成,否则按官方 Dictionary items 指南手工创建、分组、编辑;也可用 .udt 文件的导出/导入在站点间迁移条目。若请求仅涉及后台操作(编辑人员、无代码),技能会要求先取得该指南,按对话框逐步引导用户完成(例如导入时检查条目并选择目标位置),并在回答中附上指南链接。
渲染方式
编写任何视图代码前,应先打开渲染参考,了解确切的查找重载、显式文化形式、空安全多值渲染与文化处理。版本兼容性为 Umbraco 17+:GetDictionaryValue、GetDictionaryValueOrDefault 和 CultureDictionary 在任何继承 UmbracoViewPage 的视图中均可用,无论是否使用 ModelsBuilder;旧的 ILocalizationService 已过时,不得使用。
最佳实践
始终提供回退,并使用正确的重载。GetDictionaryValue(key) 在键或翻译缺失时返回空字符串;在空白界面不可接受的地方使用 GetDictionaryValueOrDefault(key, fallback)。这是唯一的回退机制:语言配置的回退语言作用于内容属性,而非词典值。注意形似的写法:GetDictionaryValue(key, "fallback") 读起来自然但无法编译——第二个参数是 CultureInfo。
让请求文化驱动查找。在路由的前端请求上,Umbraco 会根据匹配的域设置 CurrentUICulture;仅在确实需要固定文化时使用显式 CultureInfo 重载。
单键查找有缓存;GetChildren 没有。CultureDictionary[key] 与 GetDictionaryValue* 调用是视图中安全的读取路径。CultureDictionary.GetChildren(key) 每次调用都会执行数据库查询,并丢弃没有翻译的子项,因此不要放在模板中;也绝不要在视图中调用 IDictionaryItemService(管理 API)。
词典项是界面框架,变体是内容。如果文本属于页面的编辑内容,它是语言变体,而不是词典项。
验证
该技能不附带代码,也未实际运行任何内容:参考中的 Razor 片段仅为示意且未编译,实际做法以 Multilanguage setup 教程为准。断言位于 evals/evals.json,可用 umbraco-skill-evaluator 技能运行。