The first step to making International Software is globalization. You cannot simply translate a US product and expect it to be successful in other regions of the world. You need to embrace a "Global by Design, Local by Experience" approach.
Localizability tests that resources are loadable at run-time allowing for localization. Hard-coded strings break the localization process. Localizabiity testing also checks that translated resources will fit in UI elements and not become truncated. It starts with developer education and continues with tools and processes to ensure localization can be successful.
Context is critical when translating a product. Whether using in-house translation capabilities, outsourcing to localization vendors, or trying to rely on machine translation, you need to provide semantic context and have a good QA process to catch embarrassing issues before they taint your product quality.