Software localization is a process of translating software user interfaces from one language to another and adapting it to suit a foreign culture. This process is labor-intensive and often requires significant efforts from development teams. There are tools that can simplify the localization process. A lot of these projects get outsourced to specialized companies to cut costs.Software localization can also refer to adapting software from one culture to another. During localization, some references to history or culture are replaced with an equivalent native reference which ideally does not change the meaning of the statement.
In console gaming, localization also describes the controversial process of designing consoles and cartridges so as to make cartridges unplayable outside of the geographic regions for which they were intended. For example, a European cartridge might not function in a North American machine. Additionally, it entails the change of dialogue and plot elements to better suit the country's audience. One reason for doing this is local censorship variations; the rules of censorship for Nintendo of America may be different than those in Japan.
In Microsoft terms, an application that is ready for localization is separated into two conceptual blocks, a block that contains all user interface elements and a block that contains executable code. The user interface block contains only localizable user-interface elements such as strings, error messages, dialog boxes, menus, embedded object resources, and so on for the neutral culture. The code block contains only the application code to be used by all supported cultures. The common language runtime supports a satellite assembly resource model that separates an application's executable code from its resources.
(This article will be replaced with a more detailed one, very soon).