You could make the chrome.i18n.getMessage call in your regular extension page, and include the results in the context data that you postMessage to your sandboxed page, and then have the template use them directly.
If you wanted to automate this (so that you wouldn't have to add a new variable every time you added a message), here's a sketch of what could work:
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var messages = JSON.parse(xhr.responseText);
var translatedMessages = {}
for (var messageId in messages) {
translatedMessages[messageId] = chrome.i18n.getMessage(mesageId);
}
// do the postMessage to the sandboxed page with your other template parameters, and include translatedMessages as one of the context variables
}
xhr.open("GET", "_locales/en/messages.json", true);
xhr.send();
Then your 't' helper function would instead look up the message in the translatedMessages map that you sent over.