In order to translate any object around a certain point then you must translate it by that amount BEFORE you transform it to world space. If you transform it to world space then translate it, it will be translated from the world center...not the object center. This will cause the object to rotate in one huge circle.

So you want to translate this object in local or model space before you transform it to world space. Also make sure that when you create your model it is created around 0,0,0. If not when you rotate it, it will also do some strange stuff.

But since you cannot possibly re-create the model around rx,ry,rz you simply translate the center by the vector needed to get the center of rotation.

To test this try it. In your 3D program just translate all the vertices by a set amount or offset the object on x or y just a bit. Then load the mesh and rotate it. It will rotate around that point.
Essentially you are doing the same thing when you load the original model (created with center at 0,0,0) and then translate it by a vector to change the center of rotation.

Let's say we have a 3D square. It's created with center at 0,0,0. Now let's rotate it. Of course it will rotate around 0,0,0. But now let's move the square's local coords by 10 units. Now rotate it. It will rotate around a point 10 units from the square. Following me here?