Friday, December 29, 2017

What's New in SDL WorldServer 11

Local Language Content is growing in demand day by day and it is one of the primary focus areas of Marketers today. Various surveys show, how the local language content helped companies to get more customers and contributed to the growth of the business eventually. One shouldn’t be surprised why Translation Management System is a really important tool of CXM strategy of an Enterprise today.

SDL WorldServer:


SDL WorldServer is the leading translation management system in the industry. Over one hundred of the top global companies depend on SDL WorldServer to optimize their translation programs.

WorldServer is an advanced tool that enables you to transform manual, disparate translation processes into a centralized, fully administered program. With WorldServer, you can adopt a flexible enterprise-class translation management system that automates translation tasks and greatly reduces the costs of supporting large volumes of local language content.

Core to SDL WorldServer is a workflow based process automation engine that drives all translation project activities. You can easily configure the workflow so that, for example, the process for translating marketing material is different from that for translating very technical documentation.

New features & benefits in Version 11:


Recently in November 2017, the latest version 11.3 of the SDL WorldServer is released. Other than supporting technology upgrades, below are the key new features introduced in the version 11, adding value over V10.4: 

UI enhancements:

The new version has significant rewrite of the User Interface layer to provide modern & efficient User Experience for all users.

Below are the main features of the new UI:
  • New UI paradigm aligned with SDL’s Convergence strategy.
  • Initial Focus on Project Management UX and Efficiency.
  • Platform for delivering usability improvements.
  • Modern, supportable UI components.
  • New REST-based API is used under the hood.


Performance & Scalability:

1. System Improvements for Scalability & Agility:
  • Database Transactions optimizations to eliminate deadlocks and enhance efficiency and scalability. The version Supports SQL Server 2016 as well.
  • Monitoring & Troubleshooting by the new diagnostic tools to identify and address deadlocking database transactions.
  • Automated Task Handling by sequencing and distributing automated tasks to prevent time consuming tasks from slowing down the system as a whole.
  • Translatable Content Handling is improved by:
             o Updated file filters for MS Office file types.
             o New server-friendly file types for RTF and Excel

2. Cloud Improvements:
  • Value add Security packages like encryption, IDS/IPS, compliance, vulnerability scanning, etc.
  • Next Generation Database Platform with increased availability, scalability, manageability and security.
  • Further automation of deployment/upgrades and other maintenance tasks.
  • Modernization of Cloud Delivery Platforms including new hosting providers, new data centres, more modern services and infrastructure.

SDL Language Cloud integration:

Starting with this release, machine translation in WorldServer can also be performed by SDL Language Cloud, via the new Language Cloud machine translation (MT) adapter. Once the adapter is configured, the translation can be done automatically in Worldserver using SDL Language cloud.
The process of setting the adapter is quite straight forward as demonstrated here.

Applet replacement:

Because browsers are reducing or eliminating support for the Java Plug-in, it is wise to consider migrating existing Java applets to something like Java Web Start, which uses the Java Network Launching Protocol (JNLP) to download and run an application locally.

From the release 11.1, SDL have started the procedure of migrating the WorldServer features that use Java applets to JNLP. As a result, user can now access the Explorer page from all supported browsers. User can modify the use of Java applet or JNLP by configuring the parameter applet.display.option=<available values are applet, jnlp, and browser>, in general.properties. SDL recommend using the browser option, which will make the browser choose whether the Java applet or JNLP is used to open the Explorer page.

Next Gen Online Editor:

Online editor is one of the most important feature introduced in the V11. It is an Add-On Components to the GUI and can be configured to be used in workflows by Translators and/or Reviewers.
With this, Translators and Reviewers can perform many tasks including translation & review from anywhere online in browser without having to install Studio. Though Trados Studio and WS Browser Workbench remain alternate options.

REST APIs:

A rich REST API is available now to interact with the WorldServer. The SDL WorldServer 11 API is based on modern standards (REST & JSON) and has been designed to be:
  • Highly secure: the entire WorldServer 11 UI is built on top of the new, radically improved API.
  • Standardized and easy to use: it uses the standard HTTP Verbs (POST/PUT/GET/DELETE).
  • More easily integrated.
  • Highly functional, with:
          o Batching — do more with less
          o Filtering & Search — find the right data
          o Partial record retrieval — retrieve only the fields you need, avoiding over-verbosity.

The API Documentation can be found on the server by visiting <root_server>/<ws-api>/docs/ws-api-doc-v1.html (for example, http://<server_name>:<port_number>/<ws-api>/docs/ws-api-doc-v1.html).



Thursday, December 28, 2017

Alchemy | What do you want to extend ?

  
In one of my previous blogs, I talked about the Five Basic Things you should know before developing a Alchemy Plugin. One of the most important thing listed there is, "What do you want to extend?" in Tridion GUI. The answer to this question would lead you to the Classes in Alchemy Framework,
you would have to extend in the plugin code. You can term them as Extension Points as well.

Tridion provides some extension points/areas out of the box. In Alchemy Framework you would get all those extension points as Base Classes, you simply need to extend those classes according to your plugin need. Let's talk about the Extension Points one by one.

1. Context Menu Extension:

A Context Menu appears once a user right clicks on a Item in Tridion GUI. So if you want to add an entry in the Context Menu, you would have to extend "ContextMenuExtension" class in your plugin code.
Title Translator plugin is a really good example of Context Menu Extension, The code for the plugin can be found here.

2. Command Extension:

Tridion's Anguilla Framework exposes many commands like Open, Save, Localize etc. Which are executed on respective events in the GUI. If you want to override the behavior of a command, all you need is to extend "CommandExtension" class in your plugin's code.
For example, if you want to perform some action when user saves an item, you would need to create a Alchemy Plugin by extending the class "CommandExtension".

We have a Plugin named Localize Commenter which extends this extension point, where a custom popup appears when a "Localize" command is executed.  The code for the plugin could be found here for reference.

3. Extended Area Extension:

Extended Area Extension
If your requirement is to extend a existing view, you might want to have a look at the extended areas extensibility. For example, if someone wants to add a additional check in fields details in schema design, you might need to create a plugin extending "ExtendedAreaExtension" class. I don't have any real plugin for reference, so attaching the image to give you an idea.




4. Extension Group:

So, if you don't find a suitable extension point for your plugin idea or requirement. The Extension Group extension could be your best bet. Basically this extension allows you to add your custom resources (JS, CSS, Images etc) to the different views in the GUI. These resources can then interact with the HTML and Tridion UI Core (using Anguilla framework) to produce desired results.

One good example of this type of plugin is Publication Panel Search. It places a search box above the Publication List in the left-hand panel. Users can simply start typing into the text box and Publications with the title containing the entered text will be filtered. The full code for the plugin can be referenced from here.

5. Ribbon Toolbar Extension:

As it's name suggests, this extension point is to extend the Ribbon Toolbar at the top. With this one can add buttons and manage groups in the toolbar. To achieve this all you need to extend the "RibbonToolbarExtension" class and use it's members accordingly, while coding the plugin.

There are many plugins of this type available on the Alchemy Web Store, one easy pick could be Go To Location. This plugin adds a Ribbon Tool Bar Button 'Go To Location' to the Repository Local Item views, on clicking the button user is redirected to the location of the item. The code for this plugin can be found here.

6. Tab Page Extension:

If a Tridion item is opened in explorer, there would be tabs like General, Source, Info etc. To add a custom tab to the view, in the plugin's code one has to extend the class "TabPageExtension" and use it's members accordingly.

There is again this plugin Localize Commenter which extends this extension point. The plugin adds a tab "Localize Comments" in the item's view, where localize comments can be viewed and edited. The code for the plugin can be found here for reference.

Saturday, December 16, 2017

Localize Commenter | Yet Another Alchemy Plugin

Localization of content is one of the most important feature of a Content Management System. Over the years CMS vendors put a lot of emphasis on making content localization easy and user friendly. If we talk about SDL Tridion, its simply a click and user can localize an item and update it with local content. It is really easy and user friendly, But there is no way one can record the "Reason" to localize the item. So with the passing time no body remembers why the item was localized?

To address this issue, This plugin named "Localize Commenter" is developed. This available on Alchemy Web Store and can be downloaded from here.

The Plugin forces user to add Comments while localizing an Item in Tridion GUI. These Comments could be be viewed and Edited in a Tab inside Item View. Technically, The plugin stores the Comments inside App Data of the Item and doesn't maintain the history of the comments, so once comments are updated the last comments will be deleted forever.

The code for the plugin is available on Github. So if you look at the code, the plugin consists of three extension points as below:

1. Command Extension:

The first requirement was "when user clicks "Localize" from the context menu of an item, the plugin would open a dialog to enter the localize comments" as below:


To achieve this, a Command Extension is implemented which simply extends the Localize command using Anguilla Framework (Code reference "LocalizeCommenterCommandExtension.cs"). This extension simply open a popup "LocalizeCommenterPopUp.aspx" , and cancels the original Localize command.

"LocalizeCommenterPopUp.aspx" page is simple .aspx page, which has a text area, localize button and a cancel button. After entering the comments in the text area when user hit the localize button,  item gets localized and comments gets saved to application data of the item.

2. Extension Group:

The second requirement was "when a user opens a shared item by choosing the option 'Localize this item and open it in edit mode',  the plugin would open a popup to enter the comments" as below:


For this, a "ExtensionGroup" extension is implemented which simply extends this "Choose an Option" popup by extending "Tridion.Web.UI.Editors.CME.Views.Popups.SharedItemOptions" resource using Anguilla Framework (Code Reference "SharedItemOptionsPopUpExtension.cs"). This simply overrides the "_onOkButtonClicked" event of "Choose an Option" popup and open another popup "LocalizeCommenterPopUp.aspx" to enter the comments, when the "OK" button is clicked.


3. Tab Page Extension:

The third requirement was "Once the item is localized after adding the comments, There should be a way to check and update the saved comments". The plugin shows the saved comments in a "Localize Comments" tab when the item is opened.

To achieve this, a "TabPageExtenstion" extension is implemented (Code Reference "LocalizeCommenterTabPage.cs"). The extension creates a tab named "Localize Comments" in item's view and shows a user control "LocalizeCommenterTab.ascx" inside this. Inside the control, functionality to view/update the comments is implemented. 


Please check the code for more details, This plugin is pretty good example of having multiple extensions in a single plugin. If you have any questions, please ask on the post.