I have created a schematic and PCB to solve the problem of different host device I2C voltages.
Here is the original reference material used to create the PCB
This will allow a 3.3v host I2C to communicate with 5v slave device, and vice versa.
This implementation is tolerant up to 12v I2C bus, resistor values may have to be changed to compensate.
The connectors on either end are edge connectors, but to minimise bus capacitance, I recommend soldering the cables.
The best results come when the adapter is connected close to the host end of the chain.
Construction is either single, or double sided. Single sided is achieved using 3 links as in the diagram below. For Double sided, just etch the link too.
It could be noted that this could be reduced in size with the substitution of SMT resistors for the full size through hole type I chose for convenience.
The MOS-FET used is an NDS351AN, which loosely fits the specification in the application note. A suitable SOT-3 substitution may be made.
Pins are laid out according to I2C specification regarding the adjacent placement of SDA and SCL lines.
Constructed board. Made by hand in a hurry.
Here is the schematic
(Click to enlarge)
And the PCB top
PCB parts placement
EDIT: Thanks to Dave in the comments, he noticed that the 3.3v and 5v are swapped in this image!
Wire links placement