Yes, you can trade with almost (see below) all other games of different languages. If you get a Pokemon whose name is in a different language, its name will not be switched to English upon trading, unless it is evolved. However, in all Generation 3 games, excluding v1.0 of English Ruby and Sapphire, foreign names of Pokemon were treated as nicknames, so, upon evolution, its name would not be changed.
Trading between Japanese and non-Japanese games is not recommended in Generations I and II, mostly due to the different memory locations within the RAM. While possible, these trades will result in the corruption of both save files, forcing both players to restart their games from the beginning. Trading between games released outside of Japan, such as between a Spanish Pokémon Crystal and a French Pokémon Yellow, does not result in any corruption. However, trading between different languages is completely prevented for the Virtual Console releases of the Generation I games.
In Generation IV, Korean games cannot trade with non-Korean games due to only the Korean games including Hangul. Starting in Generation V, all games were made to be fully compatible with Korean games.
TL;DR: You can trade between games of different languages, except for in Generations 1 and 2, where trading between a Japanese and non-Japanese version of the game could cause both save files to be corrupted, and in Generation 4, where Korean games could only trade with other Korean games.