Current best practices for i18n?

What are the current best practices for writing internationalized libraries and applications in Rust?