Adobe Marketing Summit

I am happy to share with you all that the ExperienceLabs team will be at Adobe Summit this year as well. We are looking forward to having face to face conversations with all of you at Las Vegas, from March 19-23.

For those of us who have been to the Summit, it is no secret that the Summit brings together the latest insights from the world’s leading digital marketing experts, marketing professionals and technologists. No wonder, the ever-evolving participation in the summit every passing year truly gets symbolized in the venue change from Salt Lake City until 2015 to Las Vegas in 2016. (Year 2016 saw 10000+ Marketers attend the summit)

In case you have never been to the Adobe Summit yet, and are considering it this time; I would encourage you to just go for it.It is only right to say that there is everything there for everyone:

Marketing experts – A great opportunity to better understand the insights made possible through the digital world and of-course to Socialize

Technologists – Sneak peek to the coolest technologies on the anvil and to benefit from the focussed training sessions.

Adobe Partners/System Integrators/Platform Development Partners – An understanding of the feature roadmaps, collaboration opportunities.

Add to it the distinguished hosts, keynote speakers, celebrities great food and the Summit Bash; you can look forward to a week long celebration of everything that the digital world has to offer.

If you are attending, just drop me an email <gaurav@experiencelabs.in> and I would like to have some face time with you. See you there @ the Summit!!

Advertisements

Customize languages in AEM 6.2

Adobe Experience Manager is completely flexible and can be configured for any language. AEM inherently understands all ISO language codes, both 2 letter locales (en, fr, de) as well as 5 letter locales (en-US, fr-FR, de-DE).
Language codes play most important role while you create and translate site in multiple languages. As per W3C standards, you should use dashes in the locale codes when they are part of the url structure, like de-de, fr-fr etc. For reference, see Language tags in HTML and XML.
In AEM 6.2 when you create language copies using the References Panel, you will be able to create sites with language codes that have dashes in the language codes. However, when you try to translate those pages using Translation Projects, you will not be able to create Translation Projects, if the language codes do not match the ones in the Translation Project.
Translation Projects in AEM come with a list of preconfigured languages and associated language codes, however these codes do not follow the W3C standards. If you are curious, you can find the list of languages here: /libs/wcm/core/resources/languages. If you wish to change this list, either for adding more languages or use W3C standard locales for the same languages, you would need to make modifications to this list. As we all know, we should never change anything under /libs. What we should instead do is, override the list in /apps.
In the following step by step procedure, I will walk you through how to override languages in AEM Projects.
Prerequisite:
Before we go ahead with the procedure, you will need to patch to AEM 6.2. Please download cq-6.2.0-hotfix-11808 from Package Share and install it in your instance.
OOTB languages in AEM Projects:
The list of available languages can be seen in the advanced properties tab of Translation Project.

Picture1.png

As you would see, all the language codes are dashes.
We are going to make two changes:
Change underscores in language codes (de_de) to dashes (de-de)
Add an additional Indian language. We will add Punjabi (pa) a language commonly spoken here at our office.
Steps:

  • In order to make these changes, we will need to make changes in CRXDE.
  • Open up CRXDE (http://localhost:4502/crx/de/index.jsp) and then browse to /libs/wcm/core/resources/languages
  • Here you will see the list of languages that you see in the Translation Project. The language list is sorted by language code and not language name.
  • Please note: DO NOT MAKE CHANGES in this list. /libs is restricted and the changes can be overwritten by AEM installers.
  • We will override this list in /apps. We will follow the same path as in libs, but just replace libs with /apps.
  • Browse to /apps/wcm in CRXDE. You would observe that we do not have a core folder under wcm. We will need to recreate the rest of the structure.
  • Create a new folder names core, under /apps/wcm, and Save All.
  • Now we will go back to the resources folder under /libs. Browse to (/libs/wcm/core/resources). Select resources node and Copy it.
  • Now browse back to the core folder under /apps (/apps/wcm/core); select core and paste the copied content here and then Save All.
    Note: In case you see an error, it is because you have not saved the core folder, that we created in the previous step.
  • Next, we will iterate over all the language nodes and replace underscores “_” with dashes “-”, do that “de_de” will be replaced with “de-de”.

Picture2.pngPicture3.png

BEFORE                                                                             AFTER

  • Next, we will add the additional Indian language Punjabi (pa). For doing so we will need to create a new node and name it pa.
  • The node will get added at the bottom of the languages list. Once the node is created, add two properties, both of string type, language and country, as shown below:

Picture4.png

  • Save all the changes and restart AEM.
  • Now when you create a new project, you shall see the updated list of language codes, with dashes instead of underscores.

Picture5.png

  • You will also be able to see the newly added language: Punjabi

Picture6.png

Hence using this procedure, you can update the list of languages as well as codes in Translation Projects. If you have any questions, I would love to have conversation with you. You can always reach me out on my email <prafful.jain@gcell.in>.

About Me:
I am the CTO of the Digital Marketing practice at GCell. I have spent my last 15 years, building as well as customizing various Content Management and Marketing Publishing Solutions. I have deep interest in Digital Marketing. Apart from helping multiple marketing teams execute on their strategy, I have also helped them measure effectiveness of marketing, using data driven technologies and analytics. If you have a need in any of these area, I would love to have a conversation with you.

Content Fragments Templates

Today, I will focus on Content Fragment templates. This post is in continuation of the previous post, where I talked about new Content Fragment feature introduced in AEM 6.2. In order to understand Content Fragment templates, it is important you understand the basic structure and capabilities of Content Fragment. Please refer my previous blog post for the same: https://experiencelabs.wordpress.com/2016/10/29/content-fragments-an-introduction/

AEM 6.2 ships with a standard Content Fragment template. However, for you to use Content Fragments for your project, you will need to create a Content Fragment template. Before we go deeper into defining our own template, we will first look at the template that ships with AEM 6.2. The template name is “Simple Fragment” and it is defined in libs under this path: /libs/settings/dam/cfm/templates

Let’s browse this location in CRXDE. You will see the following structure:

+ <template-name>

– jcr:primaryType

– jcr:title

– jcr:description

– initialAssociatedContent

– precreateElements

– version

+ elements

– jcr:primaryType

+ <element-name>

– jcr:primaryType

– jcr:title

– defaultContent

– initialContentType

– name

… + other element definitions

+ variations

– jcr:primaryType

+ <variation-name>

– jcr:primaryType

– jcr:title

– jcr:description

– name

… + other variation definitions

The key elements of the template are:

  • Elements
    A list of elements that would define the structure of the the fragment. This field is mandatory and needs to have at least one child node for the “Main” element. For each element, we can define the bootstrap content (the default text) as well as a the content type. AEM 6.2 allows three content types out of the box (html, plain text and markdown)
  • Variations(optional)
    It defines the default variations for each Content Fragment. Please note, variations are defined at the Content Fragment level and this apply to all elements.
  • initialAssociatedContent (optional)
    A array of paths to LightBox collections, that would be associated by default with each Content Fragment.

Now, we will go ahead and create a template of our own. As you know, /libs is reserved for items that ship with the product. Hence, you should never write anything in /libs. All custom Content Fragments should be either defined in /apps or /config. Let’s look at these two options more carefully.

Apps: here is the complete path /apps/settings/dam/cfm/templates, it doesn’t exist, you will need to create it. Create Content Fragment templates here for overlaying out-of-the-box template (Simple Fragment) and creating general purpose templates.

Config: here is the complete path /conf/global/settings/dam/cfm/templates, it doesn’t exist and you will need to create this as well. Create Content Fragment templates here for instance-wide customer-specific templates that may be configured to be unavailable. Use this location for defining folder specific templates.

For the purposes of this blogpost, we will create a template under /apps.

Step by Step Instructions:

  1. Prepare basic structure under /apps
  • Open up CRXDE lite, and browse to /apps/settings
  • Create node of type cq:Page and name it dam
  • Select the newly created dam node and create another node of type cq:Page and name it cfm
  • Select newly created cfm node and create another node of type cq:Page and name it templates
  • Select the newly created templates node and once more create node of type cq:PageContent and name it jcr:content.
  • Now we need to specify that the templates in this location should be merged with those from /libs/settings/dam/cfm/templates. To do this, create a new boolean property under jcr:content named mergeList and set it’s value to true.
  • Select “Save All” to save the changes we have made so far. Here is a snapshot of the CRXDE lite, after you complete these steps.

Blog51.png

  1. Create a shell Content Fragment Template
  • Browse to /libs/settings/dam/cfm/templates and expand the node.
  • Select “simple” node and Copy it.
  • Browse again to /apps/settings/dam/cfm/templates.
  • Select templates and Paste to create a copy of the “simple” node structure from /libs.
  • Select “Save All” to save all the changes. Here is a snapshot of the CRXDE lite, after you complete these steps.

Blog52.png

  1. Now we will modify the copied structure based on our needs. We will create three elements – Header, Main and Footer, and define three Variations – Desktop, Tablet and Mobile Phone.
  • First, select “simple” node and rename it to “simple-topic”
  • Next, select “jcr:content” under “simple”. Change the value of “jcr:description” to “A fragment, containing three elements and three variations” and “jcr:title” to “Simple Topic Fragment”
  • Now, select elements and create two new elements – header and footer. To do so, create a new node and name it header. Add new properties “jcr:title” as “Header”, and “name” as “header”. Follow the same process to create “Footer” element.
  • Lastly, select node “jcr:content” under node “simple” and create a new node of type nt:unstructured and name it variations.
  • Now define all three variations – desktop, tablet and mobile, by creating a new node for each one of them of type nt:unstructured. Also set at least two properties, jcr:title and name.
  • Select “Save All” to save all the changes. Here is a snapshot of the CRXDE lite, after you complete these steps.

Blog53.png

We have now successfully defined a new template called “Simple Topic Template”. Let’s test and use it in creating a new Content Fragment.

To create a new content fragment using the newly created template,

  • Browse to AEM Assets (DAM): http://localhost:4502/assets.html/content/dam
  • Click on “Create” and select “Content Fragment” to create a new Content Fragment
  • In the “New Content Fragment” wizard, you shall see two templates. Select the newly created “Simple Topic Fragment” and click next. Provide a name for the new template say first topic and click “Create”. Next choose “Open”.

Blog54.png

  • We can now check and see that the newly created first topic template has three elements called – main, header and footer. We can select each one of these options to author these three sections separately.

Blog55.png

  • Next, click on Variations and see that all the three default variations (desktop, tablet and mobile) that we defined in the template are also available.

Blog56.png

We have successfully created and used a content fragment template.

Do share your thoughts/comments/feedback for the post.

XLIFF support in AEM 6.2

AEM 6.2 release was a major milestone from translation perspective. In this release, AEM took a huge step forward and added support for XLIFF generation, making AEM truly vendor agnostic. In this post, we will see try to evaluate what is available in AEM 6.2 and how can you take advantage of the same.

First and foremost, there is a NEW simple interface to support XLIFF. It has two simple APIs – one for generating XLIFF from AEM XML (export workflows) and the second one is for ingesting XLIFF back into AEM by converting that to AEM XML. For folks who like to see the parameters, here are the exact APIs:

public interface TranslationXLIFFService {

/**

* Converts an XML document, corresponding to a translation object, to an equivalent XLIFF string

* @param xmlDocument XML document containing the content to be translated

* @param id Unique id corresponding to the translation object from which the xmlDocument was created

* @param sourceLanguage Source language of the translatable content inside xmlDocument

* @param xliffVersion Version of the output XLIFF

* @return String containing the complete XLIFF

* @throws TranslationXLIFFServiceException

*/

String convertXMLDocumentToXLIFFString(Document xmlDocument, String id, String sourceLanguage, String xliffVersion)

throws TranslationXLIFFServiceException;

/**

* Converts an XLIFF InputStream to an equivalent XML

* @param xliffInputStream Input XLIFF stream

* @param sourceLanguage Source language

* @param destinationLanguage Target language

* @return XML Document

* @throws TranslationXLIFFServiceException

*/

Document convertXLIFFStreamToXMLDocument(InputStream xliffInputStream, String sourceLanguage, String destinationLanguage)

throws TranslationXLIFFServiceException;

}

This interface can either be implemented by an AEM user, or there is an implementation available on PackageShare. For the purposes, of this blog post, we are going to install the package from Package Share.

Download package from here: https://www.adobeaemcloud.com/content/marketplace/marketplaceProxy.html?packagePath=/content/companies/public/adobe/packages/com.adobe.granite.translation.xliff/okapi-xliff-service-pkg

Once you have the package, install it on AEM using Package Manager (http://localhost:4502/crx/packageshare/index.html). This package supports both XLIFF 1.2 and XLIFF 2.0

Now the Translation Connectors can request XLIFF using the Translation Service. However, in case you do not use a connector and want to use Import/Export workflow from Translation Projects / Jobs, you will need to additionally set another option in the Felix Console. Follow these steps to enable XLIFF for Import/Export workflows:

Search for “Translation Platform Configuration” and click open itPicture1.png

  • Select the right XLIFF format here.

Once this property is set, if you Export a Translation Job, it will export the content in that specific XLIFF version.

Please note, this setting applies across the AEM instance.

Footnote:

In case you have an OKAPI service that you run for your company, you can easily write a connector to the OKAPI service. We have a connector of our own, which is built on top of OKAPI. We have open sourced it. Please see this blog post for more details.

XLIFF Connector: now Open Sourced

This has been long pending. We always wanted to to open source the XLIFF connector for Adobe Experience Manager 6.1, but have been really busy. The connector was built for Adobe Experience Manager 6.1 and is listed on the Adobe Marketing Exchange here. The connector was always free and anyone could download the connector from Adobe Marketing Exchange. The connector was also featured in Multilingual Magazine. Today, we are open sourcing the source code. You can look at the source code here: https://github.com/ExperienceLabs/xliff-export-connector

For core XLIFF conversion, connector relies on the OKAPI framework. It supports both XLIFF 1.2 and XLIFF 2.0 conversion. In case, you have forked OKAPI and have a modified version, you can just replace the OKAPI libs and repackage the connector.

In Adobe Experience Manager 6.2, Adobe has improved XLIFF support. Interestingly enough, they did not go ahead and implement XLIFF conversion. Rather they defined an interface and rely upon customers to implement the interface (basically write an XLIFF conversion). The XLIFF interface is modeled on Translation API. You can repurpose the XLIFF connector to build a connector for AEM 6.2 by implementing the interfaces as exposed in AEM 6.2. I want to do the same, but will park that as weekend project for later. I will share with you more once I get around implementing it myself.
Happy forking!!

Content Fragments – An Introduction

AEM 6.2 took a giant leap towards channel independent authoring by introducing Content Fragments. Now using AEM 6.2, one can author content without creating a Page. The text content is authored and managed in AEM Assets and is called a Content Fragment. Content Fragments can then be used in various channels like web pages, mobile apps, screens or campaigns.

What constitutes a Content Fragment?

A Content Fragment contains text segments and references to assets, likes images, videos, and/or fragments. They are independent of the delivery mechanism (i.e. page, channel) and can have variations of master elements to adjust fragment text according to the specific editorial or channel requirements. Think about these as content variation for various channels. I like to think of them as Responsive content!! Though Content Fragments are channel agnostic, they have a well defined content structure. One can define the structure in a Content Fragment template – structure is completely configurable.

Why should one use a Content Fragment?

As we know, in a professional setup, most of the times, content is authored by editorial staff and then it is layout by a production layout specialist. Content fragments allows authors to write content without having to worry about the layout. While writing one should write independent of the layout. In addition, one should think about how the same message gets conveyed on multiple channels – that’s all what Content Fragment authoring is all about.

Later, a Layout/Production specialist can associate the content fragment with components according to the channel and make sure the content is layout looks appealing. In addition, while binding a content fragment with the component, one can choose amongst the available content variations.

How to create a Content Fragment?

Content Fragments can be authored using AEM Assets. To create a Content Fragment, browse to the Assets Home and choose to create a Content Fragment (refer screenshot below)

 

New1.png

Next, select the template and click Next. Out of the box, AEM ships with a “Simple Fragment” template. For any meaningful Content Fragments, one will need to create a template according to one’s needs.

New2.png

Once a Content Fragment has been created, you can Edit it to author text.

new3

You shall see the WYSIWYG text editor. You can author content here.

New4.png

In addition to Rich text, you can also author content in either of the other two additional text formats supported in AEM 6.2  – a) Plain text and b) Markdown (https://en.wikipedia.org/wiki/Markdown)

How can I author Variations?

You can click on the Variations in the left hand panel and create as many variations as you want. In the screenshot below, you shall see that I have created four variations, one each for Mobile, Tablet, Screens and Web (Master).

New5.png

Each Variation can have different text.

How can I add images in the Content Fragments?

Unfortunately, AEM 6.2 doesn’t allow you to add inline images. Instead, you can add images as references. In order to do so, select “Edit” on the top left corner and select “Associated Images”.

New6.png

As the name suggests, you can associate any “Lightbox Collection”, managed in AEM Assets.

Next, we will deep dive into Content Fragment templates and see how you can create them and use them for authoring Content Fragments. I will cover that in the next Blog post.

Creating a new language site in AEM

Today, I am going back to basics and talk about something that I get asked for quite often – How to replicate an existing site in AEM in a new language.

Before we deep dive into how, let’s map a list of activities that one has to do to this procedure. As you are aware, a site in AEM is a collection of cq:pages which has components, and then text authored in those components and referenced images, videos, pdfs from DAM (Assets) etc. When we create a site, what we are essentially going to do is create copy of all of these cq:Pages, including all the references (you can choose if you wish to translate the references as well) first. Then, we will collect all the content (human readable text, images) and send those out for translation, to a translation vendor. Once everything is translated, we will import these back into our AEM site. So here is the flow:

  • Create the new language site (new path) and create a copy of the content.
  • Send out content for translation from this new path. Usually translation happens outside of AEM, unless you want to machine translate content.
  • Import back translated content.

AEM has built in functionality for managing all the three steps of the process. Let’s give it a spin.

Step1: Create new language site

Let us use Geometrixx Demo Site for this exercise. You will observe that the site is already supported in multiple languages. Let’s add a new language – Russian (ru).

  • Create language root: In order to create a language copy in a brand new language, you need to first create a dummy page, and name it as a valid ISO language code. So we will create a new page, and name it ru (ISO code for Russian).

Pic31.png

  • Please ensure that you name it “ru”. Naming it correctly is key

Pic32.png

  • Once the page has been created, we will go back and select the source (we are just going to select “Products” for illustration) and open References panel and select language copy

Pic33.png

  • The Language copies shows all the languages in which “Product” page exists. Please note, it does not care about what is under that specific page though.
  • Next we will access the “Create Language” option to create “Products” in Russian. To do so select “Russian” from the list of languages. The drop down shows a list of languages that are configured for the site, in which the selected source page doesn’t exist. If you want to create a site in a new language, and don’t see the language in the drop down, first go and add a new language root. As soon as you add a language root, it will start appearing in the drop down.

pic34

  • Next, we can choose if we wish to just create the structure or send the content out for translation as well. There are three options:
    • Create structure, in which case Products page including all sub-pages will be copied over to Russian branch.
    • Create new Translation Project, in this case the content is copied over and additionally sent out for translation as well. For sending out content, we create a Translation Project, which is a special kind of an AEM Project.
    • Add to existing Translation Project, in this scenario, the content is copied over and is added to an existing Translation Project.

In our case, we are going to create a new Translation Project. Let’s call it “Products-russian”

Pic35.png

Send content for Translation

Now that we have created the language copy, as well as created the Project, we will go ahead and send the content out for translation.

  • As first steps, we will go to AEM Projects and open up the Products-russian Project

Pic36.png

  • When you open the Project, you shall see sections – a) Translation Summary, b) Translation job, c) Tasks and d) The Team.

Pic37.png

  • Translation Summary is where you will set all the translation properties. Be default, AEM ships with “Microsoft Translator” machine translation connector. You can click on the three dots at the bottom and look all the Properties and change them as well.

Pic38.png

  • Translation Job lists all the content that will be sent out for translation. You can add or delete content in this section.

Pic39.png

  • Tasks and Team can be configured as well – I shall cover them in a separate post.
  • In order to send out content for translation, click on the Translation Job, and select “Start”. The process is completely automated and the content will be sent out for translation.

Pic40.png

Import Content back for Translation

The import is completely seamless and integrated. When the content has been translated at the translator end, it comes back in AEM automatically. You will see the Status of the Translation Job change from “Committed for Translation” to “Ready for Review”.

 

 

Preview Feature

Today, I am going to talk about the brand new “Preview” functionality added by Adobe in AEM 6.2 as part of the Translation API. This support is geared at providing exact context to the translators as they translate the XML/XLIFF content – content without presentation.

Starting AEM 6.2, the translation connectors can additionally send out marked up HTML file as supporting documents in addition to the XML/XLIFF files that were available earlier for translation. This enables translation technology providers to use this file to generate real time preview of partially translated files without having to send back content to AEM – basically by replacing the translations in this marked up HTML file on their end.

Under the hood

Here is the API for fetching the Preview of the page sent out for translation.

/**

* Gets a zip input stream containing the preview of Translation Object. This zip contains all the files required

* for offline preview of the translation object.

* @return Zip input stream, containing the preview of Translation Object.

*/

ZipInputStream getTranslationObjectPreview();

The preview is actually a zip file which has all the relevant information. The most important file in the zip package is the HTML file, which has additional markup that helps connect translated strings to exact spots in the HTML file for generating a translated preview.

Blog21.png

The highlighted markup above has links to the AEM XML/XLIFF file – see below.

Blog22.png

You can refer to the implementation of the API in the Bootstrap connector here: https://github.com/Adobe-Marketing-Cloud/aem-translation-framework-bootstrap-connector/blob/master/bundle/src/main/java/com/adobe/granite/translation/connector/bootstrap/core/impl/BootstrapTranslationServiceImpl.java

Remember this Preview is for Translation purposes only – for folks who do not have access to AEM. For folks who have access to AEM, they can preview the translations in AEM itself.

 

 

Community Site Wizard

AEM Communities now comes with an out of the box easy to use wizard that customers can use to quickly create a branded community site without writing even a single line of code. Today, I will try to provide an overview of the Community Site Wizard. Let’s go over the wizard one screen at a time.

You can launch Community Site Wizard by accessing Sites, under Community Section. Here is a quick url to access Community Sites:

http://<hostname>:<port-number>/communities/sites. On the Community Sites Admin, click Create to launch the wizard.It is a four step wizard – General Settings (Site template), Design, Settings and Preview step.

Site Template:

In this step, one has to provide general settings about the Community and most importantly pick the Site Template. A site template, defines the structure of the Community Site. There are a few templates that are available out of the box. One can edit the existing templates or create a new template from accessing Sites Templates Console (Tools, Communities, Site Templates).

Blog11.png

For this blog post, I will go ahead and create a Discussion Forum Community Site. Let’s go over these fields one by one:

Community Site Title: Self Explanatory

Community Site Description: self explanatory

Community Site Root: In case you want the Community Site to be a sub-site of a bigger site, you can specify the root path here. The Community Site is created at the specified path.

Community Site Base Language: Language of the Community Site Language. This creates the language node in the path name.

Community Site Name: This gets added to the path of the website. Think this through carefully as it gets added to site path and has impact on SEO.

Template: This is the most important field. Here you pick up the template for the Community Site.

Design:

Blog12.png

In the first section, we pick the theme. All the themes are Twitter Bootstrap themes. You can go ahead and customize or add your own theme. In the next section, you can upload an image and brand your community website.

Settings:

This is the section, where we get to do all the settings. There are multiple sections:

Blog13.png

User Management:

In this section, we pick up options pertaining to User Management. All the fields are pretty self explanatory. You can turn on Social Logins via Twitter and Facebook, to use federated logins.

Taggings:

In this section, you pick up all the namespaces defined in the Tags Manager that apply to this Community Site. One can access the existing tags (and namespaces), modify, edit, remove or add new tags under a new namespace by manage tags in the Tags Manager (Tools > Tags).

Moderation:

In this section, you can choose the moderation settings.

Content is Premoderated: If this option is selected, the content will be visible to the community on the site only when a moderator approves of it. So, if a community member posts something, it wouldn’t be visible automatically. Use this option with caution – ensure that you have staffed moderators adequately so that they do not become a bottleneck.

Flagging threshold before content is hidden: Another common scenario is where you can use the community to moderate the forum. Community members can flag any post to be inappropriate. If the same post is flagged by multiple community members – if the number is greater than than the threshold, the post will be hidden and will require a moderator to approve of it before it becomes visible again.

Community Moderators: You can select Community Moderators using this settings.

Group Management:

Here in this section, you choose who is allowed to create Groups. Refer Managing Users and Groups for more information on this topic.

Analytics:

This setting is useful only if you have licensed Adobe Analytics for collecting key metrics. Refer this page for configuring and settings up Analytics.

Translation:

These settings are useful if you wish to setup a Global Community, where we allow your users to contribute to the forum in different languages. You can choose different translation related settings in this section:

Allow machine translation: turn on this option if you want to allow your users to translate content in their preferred language. Be default, out of the box, AEM has a connector to MS translator and comes bundled with a trial license for 2 Million characters/month limit. You can buy a commercial license to get higher volumes of translation. You can also select other machine translation services likes Systran, Google Translate by writing an AEM connector to those service providers.

Select Languages to offer Machine Translation: You can tightly control all the language in which you want to offer Machine translation. At times you want to try out with a few languages before you go expand the list of supported languages. In addition, you can invest in improving the quality of machine translation by training the engines in specific languages.

Persistence Options: You can choose if you wish to store the translations in the AEM repository, once they have been translated. There are three options:

  • Do not persist: if selected, the machine translations are never saved in the AEM repository

Translation Contributions on User request and persist afterwards: if selected, when first user requests for the translation, AEM calls the machine translation service and then persists the translation thereafter. This option is useful if you wish to control machine translation costs and worry about the repository size.

  • Automatically translate new contributions and persist them: when this option is selected, the translations are requested as soon as a contribution is made in all supported languages – and then persisted thereafter. This option is useful if you wish to provide the best user experience to your community. This option also helps community members search for content, when it is not posted in their native language. Another feature, covered in this Blog post: https://experiencelabs.wordpress.com/2016/08/23/multilingual-searchmls-breaking-the-language-barrier/

Enablement:

Enablement is different kind of content, which is produced by the internal folks rather than being produced by Community. It is targeted for structure learning and training. We shall cover this in a different blog post.

Preview:

The last step of the Wizard is Preview. All you can do here is click on the “Create” button and wait for the site wizard to put together a site for you. You need not worry too much about the settings, we will be able to come back to these settings (some of them) and change them using the “Edit Site” functionality.

Once the Wizard finishes processing, you will be navigated to the Community Site Admin, where we had started in the first place. However, you will see a folder and a newly created Community Site under it.

Blog14.png

The Site offers three options:

  • Open Site: You can access this to Preview the site and make sure that it looks the way you wanted.
  • Edit Site: Click this to make modifications and change some of the settings that we had initially chosen in the wizard.
  • Publish: this is the final step. When you are ready and everything looks good, you can publish the site to the Publish instance. After this operation your Community can start accessing the Community site and start collaborating.

As you saw, we were able to put together a branded functioning site without writing a single line of code.

Please share your experiences with us and let us know if you find these blogs helpful.

Multi-root Launches

Today, I will talk about a multi-root Launches, which is key enhancement to Launches feature in AEM 6.2. I am also happy to share that I got a chance to contribute to this features. Launches, have been around for a while, and are widely used. Now AEM core features like Translation workflows have started to leverage Launches as a staging area for working on translations before they replace the actual content. Based on the customer and internal feedback, we identified two key shortcomings in Launches and we worked on those in AEM 6.2 under guidance from Gilles Knobloch, Mathias Siegel and Akshay Madan at Adobe. They being:

  • Multi-root launches.
  • Promoting only changed pages in a Launch.

Multi-root Launches

Prior to AEM 6.2, when you created a launch, you had to create a copy of the complete branch. You did not have the option to select a few sub sites and work on those. This has been completed revamped in AEM 6.2. Firstly, you can select, multiple pages (including sub pages) at the same level and create a Launch. In addition, you can also add other pages (including sub pages) at a very different level using the “Create Launch Wizard”.

Let me explain this feature using the Geometrixx sample. Let us say that for the next update, we want to work only on three sections in the website – Products, Services and Press Center. As you are aware, Products and Services are at the same level, however Press Center is at a very different level.

We will create a Launch to have just these three branches. Firstly, select both Product and Services and select Create > Launch.

create_launch_en.png

This will open up the Create Launch Wizard and will have these two sections of the website in there.

create_launch_wizard.png

Next, Select “+ Add Pages” and browse to the Press Center. Select it and add it.

create_launch_add.png

This will add Press Center as an additional root in the Create Launch Wizard. The three roots being, Products, Services and Press Center. Products and Services were at the same level, but Press Center is at a different level.

create_launch_wizard_2.png

Select Next to view Properties and set the Properties.

create_launch_properties.png

Using this dialog, you can also change the template as well. Very useful, when you want to update the look and feel of the website.

Clicking on Create will create the Launch, and it will have only the selected roots (branches as part of the Launch).

Under the hood:

Let’s try to see the structure of the newly created Launch. Unfortunately, you can’t browse launches structure in Sites Admin (I don’t know why, Adobe can you please enable this), hence we shall see it in CRXDE.

crx.png

As you will see there are three sources, and only the selected content is added in the Launches. Make sure to observe that there is only Press Center content under Company.

Alternately, you can see the structure using Path Browser (from Create Launch Wizard)

path_browser.png

Promoting only changed Pages:

In the first enhancement, we saw that starting AEM 6.2, you can create a Launch with a smaller scope, with only those sections that you are going to update. However, not all pages in a launch get updated. The next enhancement is targeted at solving that problem. While promoting a Launch, the new default option is to promote only the changed pages. This is a very useful enhancement as it reduces the number of pages that need to be promoted.

Let’s look at this enhancement in action using the launch that we created while explaining multi-root Launches. We will go ahead and update the Products Page, add a new page in Products section (hexagon) and also update Services Page. What we are not doing is going to edit in the Press Center section. This is a common scenario where you think that you are going to update something, but then plans change, and you do not update a section anymore. In such cases, this enhancement helps us remove any of the content that is not updated.

Once you have made edits, let’s go ahead and promote pages.

launch_promote.png

As you see in the screenshot above, there are four options under Scope. The default option selected is “Promote modified pages”. This option will only promote the pages that have been modified after the Launch was created. Let’s look closer at all the four options:

  • Promote full Launch
    This option will promote all the pages in a Launch, irrespective of the fact of they were modified or not.
  • Promote modified pages
    This option will promote only those pages in the Launch that have been modified after the Launch was created.
  • Promote current page
    There are several ways in which you can invoke Promote. Using the “References Panel” you can invoke the action to Promote a page from any page that is part of the Launch. In such cases, you can select to promote only selected sections of the Launch. If you invoke Promote action from within a page of a Launch, using this option, you can go ahead and promote only the selected page.
  • Promote current age and sub pages
    This option builds on the previous option. Using this option, we can go ahead and promote a page that is part of the Launch along with it’s sub pages.

Let’s try these options one by one on our Launch. Remember, the changes that we did. Here is a summary:

  • Products
    • Updated Products Page and added a new page – hexagon
  • Services
    • Updated Strategic Consulting page
  • Press Center
    • No changes.

Option1 (default): Promote only modified pages.

When you select these options, you will see that it will list only those pages that we modified. The three pages that we listed above:

promote_modified.png

Option 2: Promote full Launch

Selecting this option, will promote all the pages in the Launch. So it will list all the pages in the Launch whether you modified it or not.

promote_full.png

Options 3: Promote current page.

In this scenario, we will set the context to be “Services” and try to Promote Pages.

promote_current.png

Option 4: Promote current page and all sub pages

With the same context, we will use the last option.

promote_subpages.png

What is important to note is that, there is no optimization regarding which pages to update. It will update current page and all the subpages irrespective of the fact if they were modified or not.

Hopefully this was useful. Look forward to hearing comments.