World is now on Opti ID! Learn more

Linus Ekström
Dec 5, 2013
  6698
(0 votes)

New standardized format for content type localizations

In EPiServer 7.5, there is a new standarized way how to add localized texts for content types. In previous versions of EPiServer there was separate section for each content type, for instance:

<language id="en" name="English">
    <pagetypes>
        <pagetype name="PageListBlock">
            <name>Page List</name>
            <description>Displays a list of pages, for example to display recent news</description>
        </pagetype>
    </pagetypes>
</language>

 

Since the amount of “base” content types has grown significally in EPiServer 7.5, specifically when taking EPiServer Commerce into consideration, we decided to normalize how content localizations are handled. All content types are now added under the top level section named “contenttypes”. The format has also changed a bit as seen below:

 
<language id="en" name="English">
  <contenttypes>
    <standarpage>
      <name>Standard Page</name>
      <description>A plain vanilla page.</description>
    </standarpage>
    <teaserblockcontrol>
      <name>Teaser</name>
      <description>Used to insert a content teaser</description>
    </teaserblockcontrol>
  </contenttypes>
</language>

 

Adding localized texts for properties can be done either to a specific content type:

<language name="en">
  <contenttypes>
    <startpage>
      <name>Start page</name>
      <description>A description of the page type</description>
      <properties>
        <searchresultpagelink>
          <caption>Search Result Page Link</caption>
          <help>Link to search result page.</help>
        </searchresultpagelink>
      </properties>
    </startpage>
  </contenttypes>
</language>

 

Reusing localization for properties between content types

It is also possible to add common translations to an inherited type, for instance pagedata or icontentdata:

<language id="en" name="English">
  <contenttypes>
    <icontentdata>
      <properties>
        <disableindexing>
          <caption>Disable indexing</caption>
          <help>Prevents the page from being indexed by search engines</help>
        </disableindexing>
      </properties>
    </icontentdata>
  </contenttypes>
</language>
Note: If you have your own base classes that are not registered as content types and you want to add the translations to these classes you need to create a UIDescriptor for the base class.

Localizing headers

Headers (tabs for instance) can be localized in the top level section “groups”:

 
<language name="en">
  <groups>
    <advanced>Advanced</advanced>
    <categories>Categories</categories>
  </groups>
</language>

 

Upgrading existing language files

When using Deployment Center to upgrade a site, the upgrade process will try to convert any xml files in the “lang” and “Resources\LanguageFiles” folders given that that process can write to these files (they cannot be read only for instance). If you have existing files in other locations or want to do the conversion manually for some reason (check in to source control for instance) there is a small program that can be used to convert existing files. Just select the folder where the files you want to convert are located and press “Convert Content Type Sections” and the files should be updated to use the new format. You can download the program here.

Dec 05, 2013

Comments

Please login to comment.
Latest blogs
Make Global Assets Site- and Language-Aware at Indexing Time

I had a support case the other day with a question around search on global assets on a multisite. This is the result of that investigation. This co...

dada | Jun 26, 2025

The remote server returned an error: (400) Bad Request – when configuring Azure Storage for an older Optimizely CMS site

How to fix a strange issue that occurred when I moved editor-uploaded files for some old Optimizely CMS 11 solutions to Azure Storage.

Tomas Hensrud Gulla | Jun 26, 2025 |

Enable Opal AI for your Optimizely products

Learn how to enable Opal AI, and meet your infinite workforce.

Tomas Hensrud Gulla | Jun 25, 2025 |

Deploying to Optimizely Frontend Hosting: A Practical Guide

Optimizely Frontend Hosting is a cloud-based solution for deploying headless frontend applications - currently supporting only Next.js projects. It...

Szymon Uryga | Jun 25, 2025

World on Opti ID

We're excited to announce that world.optimizely.com is now integrated with Opti ID! What does this mean for you? New Users:  You can now log in wit...

Patrick Lam | Jun 22, 2025

Avoid Scandinavian Letters in File Names in Optimizely CMS

Discover how Scandinavian letters in file names can break media in Optimizely CMS—and learn a simple code fix to automatically sanitize uploads for...

Henning Sjørbotten | Jun 19, 2025 |