Internationalization is the process of making an application ready to support several languages and data formats. An internationalized application can be adapted for a particular language and region, a process known as localization, which consists of adding a specific set of resources (usually text, images, and data formats) to an internationalized application. Ideally, localization should not require rebuilding the application, but only adding the localized resources and, at most, restarting the web container.
Addressing internationalization early in a software development project and knowing the audience makes the process much easier. Internationalization is orthogonal to all the application layers, and the process of localizing can involve translating and defining several resources such as texts, images, videos, audio...