My name is Gary Lefman, I am the technical leader of localisation engineering for the Voice Technology Group at Cisco. I am based in Reading, England, and the rest of my team are scattered around the USA. Professionally I am a network engineer but like most people involved in localisation I ended up in this specialism by accident. Just for the record, I am not a programmer.
Cisco Localization Toolkit
The Cisco Localisation Toolkit (CLTK) is an extensible, product agnostic, wizard-like tool that can localise any internationalised product. It empowers users out in the field (typically Systems Engineers and Technical Marketing Engineers) to create and maintain localised products themselves without any knowledge of localisation whatsoever. Widgets can be generated to allow some stages of localisation to be carried out by third-parties – analogous to spawning a child project and then absorbing it again once completed (it’s all space-like alien technology, which goes down well with the management).
The Cisco Localisation Toolkit masks all of the complexities, showing only what needs to be seen and manipulated by the user and removes the chances of introducing errors that could affect the target system. It automates laborious tasks and puts almost everything into a step-by-step workflow. Product plug-ins provide the necessary rules, instructions, source files and all leveraged content from previous localised projects. The client-server architecture is what allows for projects to leverage translations via the shared translation memory application, which would otherwise not be possible and would also be expensive in terms of licensing individual instances of translation memory, databases, and other licensed products that are required to enhance the Cisco Localisation Toolkit.
A screenshot of CLTK:
Currently I am the architect and sole developer but with an ever increasing demand for product plug-ins it will be necessary to employ more developers so that I can concentrate on the core frameworks and integration with our other localisation tools.
The idea of a toolkit to localise one of our products, the Cisco Unified Communications Manager, was my manager’s dream many years ago but due to resource restrictions it would not become a reality for several more years. Eventually we hired a software engineer to take over my day-to-day tasks so that I could begin work on the toolkit. Very early in the conceptual stage of development I decided that the toolkit should not have just one purpose, but rather it should be product agnostic, which was going to need a lot of extra work but the benefits would be great.
Once the conceptual frameworks were finished I needed to determine how it was going to be built and deployed. I was adamant from the very beginning that it would be written in Java and that it would be a desktop client because the web technologies were still weak and couldn’t support what I had in mind.
Another screenshot of CLTK:
Now, because I would never classify myself as a programmer – having never written an application before (other than what we produced at University) – I had no biases towards integrated development environments. I experimented with a number of IDEs including JBuilder, Eclipse, and NetBeans and quite quickly came to the conclusion that the NetBeans Platform was my favourite simply because it was easy to use and was modular. It was at that time beginning to mature significantly, and perhaps the most significant impression that won the deal for me was that what I was planning to create could be built directly on top of NetBeans – a huge time saver as far as I was concerned.
Because I was the only person working on the project there were no other opinions, so if NetBeans was to turn out to be a complete disaster it would have been entirely my fault – as it turns out it was a good choice and I have never regretted it since.
NetBeans Platform Likes & Dislikes
I like the vast array of libraries that the NetBeans Platform is shipped with, and the ease at which new libraries can be acquired and installed without any fuss. Everything is modular, I can include what I want and leave out the rest to make sure the shippable product is a compact as possible without the clutter. I am very fond of the user interface designer – I’d still be in the programmatic stone age without it (although admittedly I would have a better understanding of how user interfaces are coded). I also like the fact that NetBeans is coupled with Mercurial and Jira for version control and defect and enhancement tracking, both of which were chosen because of their integration with NetBeans. Ultimately the main thing I like is that NetBeans is so easy to use that a complete novice to IDEs, like I was at the time, can create applications with very little effort, knowledge, or understanding.
What I dislike about NetBeans is that there are a few embedded package that cause conflicts with JRE/JDK packages, such as the JAXB libraries, meaning that non API libraries need to be used with the implementation version. Other than that I have no other complaints; NetBeans has looked after me well over the last three years.
Tips for NetBeans Platform Newbies
Don’t be afraid to experiment and play around with NetBeans. Try the bundled sample projects, follow interesting tutorials on the NetBeans website. I guess the most influential tip would be to ensure you have a real world application that needs to be created, grab the latest version of NetBeans and just dive in!
Upcoming CLTK Features
I have just started work on the sixth product plug-in, which is going to be a very challenging project that will keep me on my toes for the next 12 months. This is to simplify and mask the complexities of localising audio conversations, phrases, and prompts for speech-to-text and text-to-speech voice mail system (this is Cisco Unity Connection).
The idea being that the non-technical user can produce localised grammars so that audio prompts are played appropriately for the locale. This will require a combination of a visual programming language like Microsoft Robotics Studio (to mask the real code that is being put into the phrase server files) and a music sequencer to arrange text and audio prompt files so that they have the appropriate grammar. A (really lame) example would be to end up with a correct audio conversation that allows the user to ask “How many messages do I have?” and the server reply “You have 6 new messages and 3 saved messages. 2 messages were left on 1 January, 5 messages were left on 2 January and one message was left today at 14:20 by John Smith”. Naturally other locales would require completely different grammar – hence the need for localisation. What’s going on in the background is hideous but the aim of the toolkit plug-in is to simplify everything to drag-n-drop gestures – no coding is required (as is the case today by experienced localisation engineers).
This will be a very challenging project because I have no experience with any of these concepts, but everything I need to create this plug-in is already available in NetBeans – I just need to glue all the parts together.
A slide deck, with more screenshots, of CLTK can be found here: