I would say use the first option - make the server send back the codes, and make the client convert the codes into strings for display.
It's a good design principle to keep business logic and the user interface separated. Suppose that in the future you don't want to use strings, but you create a fancier client that displays icons for the different states instead of text strings. What would you do then - change the server to make it return icons? User interface logic belongs on the client.