I've found that keeping a site multilingual is quite easy with Silverstripe except for a few parts.
Recently I ran into trouble with some forms that are automatically generated by getFrontEndFields() (used extensively in this project).
Some Dropdowns are generated from enum-type db-fields and they display the hardcoded strings from my datamodel. I didn't find an easy way to translate these so I resorted to hacking the core. I inserted the following function into Enum.php and redirected a call in the enumValues-function inside Enum.php.
I hope that maybe someone can make use of this or, even better, maybe that someone has a better way to implement this without hacking core. I'm no programmer so this was created out of necessity.
This then requires a line in a lang-file formatted something like:
$lang['sv_SE']['Enum-ApartmentCategory']['LÄGENHET'] = 'Lägenhet';
function translateArray($array) {
foreach ($array as $key => $value) {
$array[$key] = _t('Enum-'.$this->name.".".mb_strtoupper($key), $value);
}
return $array;
}