Need help with simultanous movement

So i’m trying to make a little 2D platformer game. When I tried to build a moving platform, that moves between the edges of a gap, like a horizontal elevator, I used this code:

void Update()
{
  transform.Translate(Vector2.right * speed * Time.deltaTime);
}

void OnCollisionEnter2D(Collision2D collision)
{
  if(collision.gameObject == border)
  {
    speed *= -1;
  }
}

void OnCollisionStay2D(Collision2D collision)
{
  if(collision.gameObject == player)
  {
    player.transform.Translate(Vector2.right * speed * Time.deltaTime);
  }
}

So basically, turn around if you hit an edge and move the Player with you, when he’s standing on the platform.
However, this only works in one direction.
By that, i mean, if the platform moves left, you can stand on top of it, and it will look perfectly smooth. If it moves to the right tho, the player moves much slower than the platform and you always have walk right to stay on the platform.
I tried using Vector2.left in the transform.Translate part, but weirdly, it stayed exactly the same.
What am I missing?