A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

Per Nergård (MVP)
Mar 5, 2013
  12871
(1 votes)

EPiServer localization xml files structure

In CMS7 there are a couple of new things that can be localized. I hadn’t had the time to check it out but a question in the forums   about localization of “GroupName” on page types got me curious.

Localization of page types and properties are the same as for earlier versions of EPiServer.

Blocks are new to CMS7. Thomas Krantz blogged about block localization over here but I will include it in the example below just for completeness. The example for blocks in the Alloy demo package ContentTypeNames.xml is incorrect at least in the first production release.

Groups then. The DisplayAttribute.GroupName is localized via heading elements. These headings localizes the tab names in edit mode.

I couldn’t find anything about ContentTypeAttribute.GroupName so I fired up good old reflector. It turned out that you can localize GroupName via specifying groups in the xml file.

I expected this to localize the labels for the different groups of page types  you get when creating a new page. This is not the case. What’s actually localized is the bracketed prefix on the page type when you view them in admin mode. I can’t see much use for this so I’ve checked with the support and they have an existing bug regarding that page type information localization doesn’t work so hopefully this will be fixed soon.

Below is an example lang file for reference.

<?xml version="1.0" encoding="utf-8" ?>
<languages>
 
  <language name="English" id="en">
 
    <!-- Blocks -->
    <blocktypes>
      <blocktype name="PageListBlock">
        <name>Page List</name>
        <description>Blockbeskrivning</description>
      </blocktype>
    </blocktypes>
 
    <!-- Tab headings aka GroupName in Displayattribute for a property-->
    <headings>
      <heading name="Default">
        <description>Default</description>
      </heading>
    </headings>
    
    <pagetypes>
      <!-- PropertyNames -->
      <common>
        <property name="DisableIndexing">
          <caption>Disable indexing</caption>
          <help>Help</help>
        </property>
      </common> 
      
      <!-- Page types -->
      <pagetype name="ArticlePage">
        <name>Article</name>
        <description>Help</description>
      </pagetype>
      
      <!-- Groupname in ContentTypeAttribute-->
      <groups>
        <group name="Test">Prefix</group>
      </groups>
    </pagetypes>
  </language>
 
</languages>
Mar 05, 2013

Comments

Per Nergård (MVP)
Per Nergård (MVP) Apr 23, 2013 01:37 PM

Update: (It seems I can't edit old posts with live writer from another computer so a comment have to be sufficient).

if you wan't to localize propertynames on a per type basis the format is like this. The pagetype element name attribute can be both the name of a pagetype as well as a blocktype.




Caption
HelpText


janaka.podiralahamy
janaka.podiralahamy Nov 18, 2013 05:02 PM

i am able to see my changes on page types but not with blocks. can you help? thanks!

Please login to comment.
Latest blogs
ScheduledJob for getting overview of site content usage

In one of my current project which we are going to upgrade from Optimizely 11 I needed to get an overview of the content and which content types we...

Per Nergård (MVP) | Jan 27, 2026

A day in the life of an Optimizely OMVP: Migrating an Optimizely CMS Extension from CMS 12 to CMS 13: A Developer's Guide

With Optimizely CMS 13 now available in preview, extension developers need to understand what changes are required to make their packages compatibl...

Graham Carr | Jan 26, 2026

An “empty” Optimizely CMS 13 (preview) site on .NET 10

Optimizely CMS 13 is currently available as a preview. If you want a clean sandbox on .NET 10, the fastest path today is to scaffold a CMS 12 “empt...

Pär Wissmark | Jan 26, 2026 |

Building AI-Powered Tools with Optimizely Opal - A Step-by-Step Guide

Learn how to build and integrate custom tools with Optimizely Opal using the Opal Tools SDK. This tutorial walks through creating tools, handling...

Michał Mitas | Jan 26, 2026 |