There are 4 different possible mails for each WallType (Profile, Event, Group and Custom) - I'll show the custom ones as this is what we are focusing on. These are in the PostEdit.ascx.resx resource file in the Wall module.
NewPostNotificationCustom.Body, NewPostNotificationCustom.Subject, NewReplyNotificationCustom.Body, NewReplyNotificationCustom.Subject
The problem I wanted to overcome was that you could have multiple custom types (on PokerDIY I have added the Wall module at Poker League and Poker Game level (a game is not an event). Hence one language string would not suffice as I want the emails to say slightly different things and they need to punch in to the respective poker league and poker game (for example - I could not hard-code a tabID into one template for both types). The solution was to insert the ModuleID into the language string (this is possibly an approach the core could adopt to allow multiple resource customization at Portal and even Module level instead of Host level as it is now).
Lets look at the poker league custom wall module on PokerDIY. The ModuleID of the wall is 1972. So when a reply or new post is posted here it now tries to retrieve the string based on the moduleID, eg.
NewPostNotificationCustom1972.Body and NewPostNotificationCustom1972.Subject (for a new post)
If it finds nothing then it will use the shipped defaults (NewPostNotificationCustom.Body and NewPostNotificationCustom.Subject). This means that if you only ever have 1 custom type you can just change these in the standard manner.
The only drawback is that the core Language Editor (Under Admin -> Languages) does not support adding of language strings to the .resx files (please lobby for this on the core forums!) so you have to add the strings manually to the .resx file. I wont go into too much detail on how the Language Editor works as there are tons of documents on this, but basically as soon as you edit a .resx file through the UI (I always recommend doing it this way) then it creates a copy of the file with the PortalID and Culture (e.g PostEdit.ascx.resx makes a new file called PostEdit.ascx.Portal-PortalID.resx for en-US translations). This ensures that the file is not overwritten on upgrade. It is important therefore to make sure you add these strings to the copied file (if one does not exist then change an existing string through the UI to force the duplicate file to appear.