Hi Susan,
I have taken a look at YAMS.
My implementation does require a
few changes to the core as detailed above. However in return existing functionality works automatically with new languages as long as db table names are generated via $modx->getFullTablename(), which is true for the core and in most Extras (it should be all, but some people bypass the API). This is the strength of my implementation - it does not only not break existing code, but
automatically has existing code use the translations.
Sure, such as
http://rtfm.modx.com/pages/viewpage.action?pageId=13205618 can make Ditto work with YAMS, but if every snippet needs extra code or extra configuration its hardly an out of the box solution. Without using views as I have done to map columns so that they appear to be the existing db fields i.e. the same field names, appearing to be in the same place in the db, most snippets can not be expected to work out of the box - YAMS in using TVs makes the db structure for the translations fundamentally different to the 'normal' fields in modx_site_content. Even translation TVs is done by making differently names TVs (which is unavoidable with the present core).
The only changes to existing Extras that my own solution could require is where search snippets need to access all languages - but these snippets will need changing in
any implementation.
As a bonus, in my own solution developers are not presented with a mass of new TVs - it all should work seamlessly as if both modx_site_content fields and TVs magically exist in different languages without clutter. I'm also not presenting developers with a complex UI. It took me a few head scratches while I wondered why YAMS wasn't 'working' - but I hadn't found the option to switch on multilingual functionality per template. Similarly it wouldn't 'work' out of the box with my site in subdirectory e.g. localhost/yams. It was quicker setting up a virtualhost i.e. yams.localhost than finding the option to enable this (which should be automatic anyway). Basically, I found the UI too complex - I certainly wouldn't expect a client to use it.
Probably a minor point for most, but caching with my own implementation will be more efficient as each language has separate cache entry per page. If then you have five languages, YAMS fetches five times more information than it needs from the cache.
-- Tim.