If you have a site in several languages and you want to save yourself a lot of trouble and a few hours of headache I recommend you put this in the init() function of your Page_Controller.
i18n::set_locale(Translatable::get_current_locale());
setlocale(LC_ALL, i18n::get_locale());
Otherwise string translated using _t() or php functions like strftime won't work as you want them to.
I can see the point SilverStripe developers tried to make when separating i18n from Translatable and in theory it makes sense. In practice though its really annoying because _t() is used so much in SS modules.