@Kate Hiscox:
Are you looking for services that help with the translating or info on how to manage this on the backend of your apps?
I can only answer the latter since I have direct experience with that. When I worked for
Ai Squared, i18n was especially important for us as the software we were
building was intended to be used by folks globally and our clients also required this. TBH, I don't quite remember where the translations came from, but the way we worked with them was similar to how people do this in Rails and many other tools/frameworks/libraries. Basically, we stored the translations as hashes, where each key would be a unique slug to some string value (they could also be nested). During the initial load of our app, we would load all translations into our main locale hash as the values of their respective locales (the keys). This proved to be a very simple and straightforward model to work with and we just had to make sure we never directly hardcoded any string that would be directly displayed to a user, and instead grab the string based on the selected locale. In fact, we built a minimal code analysis tool to try to help us with this, since it was easy to forget not to hardcode things. It wasn't always 100% on point, but it helped. AFAIK, this is quite a standard (or at least common) model nowadays, but I thought I'd describe it in case you weren't aware of it.
- Jonathan