NGUITools.AddChild resets the position to (0, 0, 0). Look inside that function.
NGUI works in virtual pixels, so you using transform.Translate may not give you the expected results. By default NGUI's UI is scaled to a very small size -- (2 / Screen height) to be exact. If you are trying to place a sprite at screen coordinates, you need to first covert screen coordinates to world coordinates using the Camera, then convert world coordinates to local coordinates using widget.transform.parent.InverseTransformPoint(pos). This will give you the correct local position which you can use to position your widget: widet.transform.localPosition = pos;