Localization

@shaun-edwards 
Can you review what I've done so far? (I hope this is what you meant by making another branch and doing a pull request...) Thanks.
This breaks backwards compatibility.  It's hard to tell what happened here (due to the diff).  I'll assume that `DoMapping` is a brand new function from here on.