Translate Globally rather than locally

So i wrote a script to make it so that i can control a space ship left and right. And its not the best script but then again i’m pretty new to this so don’t be suprised if it is bad. But since i have an animation that also plays when it moves it changes the axis along with the animation, so instead of going to the left it goes in a circle. Here is the script
#pragma strict

var isIdle = true;
var isLeft = false;
var isRight = false;

function Update () {
	var translation : float = Time.deltaTime * 5;
	gameObject.animation.wrapMode = WrapMode.Loop;
	
	if (Input.GetKeyDown(KeyCode.A)){
	isIdle = false;
	isLeft = true;
	isRight = false;
	}
	if (Input.GetKeyDown(KeyCode.D)){
	isIdle = false;
	isLeft = false;
	isRight = true;
	}
	if (Input.GetKeyUp(KeyCode.A)){
	isIdle = true;
	isLeft = false;
	isRight = false;
	}
	if (Input.GetKeyUp(KeyCode.D)){
	isIdle = true;
	isLeft = false;
	isRight = false;
	}
	if (isIdle == true) {
		gameObject.animation.Play("Idle");
	}
	if (isLeft == true){
		gameObject.animation.Play("MoveLeft");
		transform.Translate (translation,0,0);
	}
	if (isRight == true){
		gameObject.animation.Play("MoveRight");
		transform.Translate (0,0,translation);
	}

help?

You can change Transform.Translate() to use world coordinates by adding the Space.World parameter:

 transform.Translate (0,0,translation, Space.World);

Or you can calculate the position directly:

 transform.position += Vector3(0,0,translation);

Or even:

 transform.position.z += translation;