Showing posts with label blueprinting. Show all posts
Showing posts with label blueprinting. Show all posts

Saturday, January 26, 2013

My Tridion VM bootstrap project

As part of my luxurious and privileged seat in Tridion Product Management I get to test new stuff all the time. It's great to just point my browser to the build server and download the latest nightly build (stable or unstable) and start playing around with it - how's the notification area behaving? Can I assign tasks now? How's the workflow engine doing? etc.

While this is great, it has a certain, heavy, repetitiveness to it. Every time I get a new build I need to either completely uninstall Tridion and start again (we obviously don't bother doing migration scripts between minor builds) or start from a completely new VM.

And this means:
  • Create new blueprint
  • Create new schemas
  • Create new content
  • Create new publication target(s)
  • Configure Content Delivery for HTTP Upload
  • Configure Website
  • Configure Session Preview/Experience Manager
Even the most adept Tridion professional will recognize that this takes a LONG time to set up, and all to be destroyed soon, since a new build comes in tomorrow.

So I started, slowly, creating a series of C# command prompt programs to automate stuff for me. Initially these scripts would just create my diamond-shaped blueprint, a set of schemas, and some components. Then, I added a script to import content via RSS so I get some real content in it. Then, I expanded it to also create pages for these components. Then I added configuring the Publication Targets and Target Types. Then I added expanding the Tridion pre-build web applications and copying the configuration for these. Then I added actually creating the sites in IIS. Then I added support for all this to be configured via a XML file. Then I added changing the default templates to include Experience Manager building blocks. And finally I added support for Tridion 2011 too.


And now I decided to share it with everyone. The two projects I use to prepare my environments are available under MIT license on Google code.

There are 2 projects in here: CreateAnEnvironmentForMe and ImportContentFromRss. Each does what its name implies, and there's reasons why they are separate which I won't care to elaborate. I also offer no support whatsoever and really just hope the community can help evolve this solution to something a bit more stable. This code is not intended to be used in Production Environments, and there's no guarantees it will work for you.

These tools are tools I use, and they're fit for me to use them. If you need more rounded corners to use it, please feel free to change it - contact me via this forum or the google project if you want committer rights on the project. I typically run these projects from within Visual Studio, because I expect them to fail here and there, and this allows me to quickly fix them.

Hope this project can help others out there.

Thursday, March 22, 2012

Uniquely positioned for Localization?

As you probably know, SDL Tridion's really great strength (other than a smashing interface and great tools of course), is Blueprinting.

I'm not going to talk about Tridion BluePrinting here, but rather on what it allows us to do as web content manager implementers. If you're searching for BluePrinting information, check here and here.

(Side note: BluePrinting is such a strong name when it comes to localization that even some of our competition is using it.)

As part of my job as evangelist/guru/community builder/promoter/trainer/debugger/fireman I sometimes get to lecture template developers in regards to best practices when going global, and I always find it curious how certain things that are so obvious to me feel so out-of-this-world to others. This post was triggered by finding a template with something along the lines of:

<div class="productprice">@@Labels.Price@@: $@@Fields.Price@@</div>

One might thing that it is great that the developer thought of using labels for the Price label, meaning I can easily translate this tag. But the template developer also left a '$' sign in the template, screwing up my chances to sell this product in Europe (or Canada, Mexico, Brazil, etc).

So when asked to fix this, the developer would probably do something like:

<div class="productprice"> @@Labels.Price@@: @@Labels.CurrencySymbol@@ @@Fields.Price@@</div>

Great, right? Pretty easy to deal with, right?

Wrong.

Some cultures will display the currency symbol after the amount, not before.

Another typical example I encounter is the myth that Latin America can be grouped into one large "Spanish" chunk, usually forgetting Brazil, and mostly forgetting culture - if not language. To be honest, yes, Argentinians will have no problem reading your site's Mexican version of their language. But they will also be rather quickly fed up of it (especially because your site's domain does end with .com.ar) and buy your product from that other site. You know, the one that knows what a frutilla is.

The sample above applies equally to French, Portuguese, English, Arabic, etc.

And then we get past language and into true localization.

I had the privilege of watching Mike Walsh's presentation "Yesterday the World changed - now it's your turn" during SDL Innovate in Santa Clara, and this was one of the best examples of true localization.
Why is the bottle on top of that car?

This will be incredibly obvious to a few million people, and extremely obscure to every one else. So why would your content in French interest both Canadian and Belgian visitors?

All this to say that I am getting to the conclusion that I am surrounded by people that understand these fine details of localization because of their own background. Half of the team I work with has lived in at least 3 different countries (really lived in, not just passing by doing a consulting gig), speaks 2 or more languages regularly and browse the web in multiple languages.

My own web content consumption is multilingual/localized. Of all the sites I regularly read:
  • 1 is Spanish
  • 3-4 are Portuguese
  • 1 is Dutch
  • 2 are French
The rest is either simplified English (you know, the non-native, non-localized version of it) or North American.

So, I guess I found the key. If you want to understand globalization & localization - go live somewhere else.