Wäre das denn nicht so sinnvoller zu machen?
native Text3D:_CreatePlayer3DTextLabel(playerid, textENG[], textDE[], color, Float:X, Float:Y,Float:Z, Float:DrawDistance,attachedplayer,attachedvehilce,testlos) = CreatePlayer3DTextLabel;
#define CreatePlayer3DTextLabel __CreatePlayer3DTextLabel
stock Text3D:__CreatePlayer3DTextLabel(playerid, textENG[], textDE[], color, Float:X, Float:Y,Float:Z, Float:DrawDistance,attachedplayer=INVALID_PLAYER_ID,attachedvehilce=INVALID_VEHICLE_ID,testlos=0)
{
new Text3DID;
if(lang[playerid]==1) ID = _CreatePlayer3DTextLabel(playerid, textENG[], color, X, Y,Z, DrawDistance,attachedplayer,attachedvehicle,testlos);
else ID = _CreatePlayer3DTextLabel(playerid, textDE[], color, X, Y,Z, DrawDistance,attachedplayer,attachedvehicle,testlos);
return ID;
}
musst die abfrage nur anpassen, hab deine Var dafür gerade nicht im Kopf 
Edit: der Native war falsch ...