plugin independent translation