SVG translate seems to behave different in Chrome/Chromium

Solution 1:

In SVG 1.1 <svg> elements do not accept transform attributes. In SVG 2 it is proposed that they should.

Chrome and Firefox are experimenting with implementing proposed parts of the SVG 2 specification. Some things are implemented only by Firefox, and others only by Chrome. Many features are implemented by both and some by neither.

In this particular case Firefox has implemented the SVG 2 feature but Chrome has not.

You can achieve the same result in browsers that do not support this SVG 2 feature either by replacing the <svg> element by a <g> element or by creating an <svg> child element on the <g> element and putting the transform on the <g> element.

Solution 2:

<svg> within <svg> is confusing the browser. Instead use <g> tag.

<g transform="translate(20, 10)">
    <use xlink:href="#circle2" />
</g>