I'm trying to construct a translated message by looping over an array of objects and then adding a new "message" property to that object containing the translated string. I see the correct message output while inside $translate.then(); but when I assign the message to the object it is undefined. What is the correct way to resolve the promise returned from $translate.then() and assign it to the "message" property?
//items.controller.js
function getItems() {
    return itemsFactory.getItems()
    .then(function (response) {
        vm.items = initItemsList(response.activities);
    });
}
function initItemsList(itemsList) {
    for (var i = 0; i < itemsList.length; i++){
        var activityType = itemsList[i].activityType;
        switch (activityType){
            case "HISTORY": {
                var itemName = itemsList[i].item.itemName;
                var itemVersion = itemsList[i].item.itemVersion;
                $translate('activity.'+activityType, { itemname: itemName, itemversion: itemVersion }).then(function(content){
                    vm.itemContent = content;
                    console.log(vm.itemContent); // correct message displayed.
                });
                break;
            }
            default: {
                break;
            }
        }
        itemsList[i].message = vm.itemContent; // undefined
    }
    return itemsList;
}
// translation.json
"activity : {
    "HISTORY" : "History for {{ itemname }} {{ itemversion }}."
    } 
 
     
    