Camera Script - Bird's Eye View

I’m trying to write a camera script which allows the player to view the scene from a bird’s eye view as seen in most Real Time Strategy games. The zoom function that moves the camera along the Y axis was not much of a problem.

I’m having troubles with the rotation and movement. For the latter I used the mouse movement so that the camera moves along the positive X axis as soon as the mouse hits the right edge of the game window. Left, Forward and Backwards are done similarly.

// Camera movement
private void HandleMovement()
{
    Vector3 mousePosition = Input.mousePosition;
    Vector3 movementDirection = Vector3.zero;

    // Left
    if (mousePosition.x <= leftBoundary)
    {
        movementDirection = Vector3.left * MovementSpeed;
    }
    // Right
    else if (mousePosition.x >= rightBoundary)
    {
        movementDirection = Vector3.right * MovementSpeed;
    }
    // Backwards
    if (mousePosition.y <= topBoundary)
    {
        movementDirection = Vector3.back * MovementSpeed;
    }
    // Forward
    else if (mousePosition.y >= bottomBoundary)
    {
        movementDirection = Vector3.forward * MovementSpeed;
    }

    transform.Translate(movementDirection * Time.deltaTime, Space.World);
}

Due to the Space.World Parameter in Translate() the camera will always consider the global +Z axis as it’s forward direction. This means the camera won’t move forward into the direction it is facing when rotated around the Y axis but rather forward along the world’s Z axis.
Switching to Space.Self doesn’t seem to be a solution since the camera should always move orthogonal to the Y axis.

I was hoping that somebody could help me finding a solution for the camera’s rotation.

edit: Rotation Method & fixed title

private void HandleRotation()
{
    if (Input.GetMouseButton(2))
    {
        currentMousePosition = Input.mousePosition.x;

        float rotation = 0.0f;

        if (currentMousePosition < previousMousePosition)
        {
            rotation = -RotationSpeed * Time.deltaTime;
        }
        else if (currentMousePosition > previousMousePosition)
        {
            rotation = RotationSpeed * Time.deltaTime;
        }

        transform.RotateAround(Vector3.up, rotation);

        previousMousePosition = currentMousePosition;
    }
}

I finally found a solution to this problem without altering the rotation method at all.
The only thing I edited is the last line of the movement method from

transform.Translate(movementDirection * Time.deltaTime, Space.World);

to

transform.localPosition += transform.localRotation * movementDirection;