2yandex-lexa ну вообще там все очень хитро устроено, с языком то.
Заказчик сказал - "переведи", начались проблемы. Перерыл весь скрипт, ничего не нашел, думал плюнуть. Но потом вообще банально, закрывая notepad где был открыт
apsona_index мельком увидел строчку
<script type="text/javascript" src="<?php echo APSONA_BASE_URL ?>/ec/opencart/apsona.min.js"></script>
Как гласит apsona_config, APSONA_BASE_URL это shopadmin-svc.apsona.com, после очевидных махинаций попадаем в apsona.min.js, где есть хитрая ф-я
[b]function (M, N, Q, R) {
$("head").append('<link rel="stylesheet" href="' + M + "/css/apsona." + D + '.min.css" />');
document.body.innerHTML = H.replace(/__1/g, M);
var P = "v" + (F || "1.0") + "-b" + D;
$(".ap-versionstring").html(P);
var J = {
loc: window.location.href.replace(/https?:\/\//i, ""),
ua: navigator.userAgent,
pfx: R
};
var K = A.languageId;
var T = null;
if (K && I && I.language) {
for (var S = I.language.length - 1; S >= 0; S--) {
if (I.language[S].value == K) {
break
}
}
if (S >= 0) {
T = I.language[S].code.toLowerCase()
}
} else {
if (I && I.language.length <= 1) {
T = I.language[0].code.toLowerCase()
}
}
var L = [M + "/ec/" + E + "/apsona-ec." + D + ".min.js", M + "/app/app_ec/" + E + "/" + N + "/js/app-all.js" + (M.indexOf("?") >= 0 ? "&" : "?") + jQuery.param(J)];
if (T && C.indexOf(T) >= 0) {
L.splice(1, 0, M + "/js/lang/" + T + ".js")
}
function O() {
var V = "";
if (typeof(sf) == "object" && typeof(sf.App) == "object") {
try {
sf.App.initialize(M, N, Q, I);
return
} catch (U) {
V = U.name + ": " + U.message;
$.get(M + "/app/app_ec/" + E + "/" + N + "/js/log.js", {
action: "loadFailed: " + V.substring(0, 400)
}, function () {});
throw U
}
}
}
G(L, O)
}
};[/b]
По ней и узнаем где лежит языковой jsНу а там копируем содержимое, Beauty-м его, и переводим все что нужно. Чуть правим наш Шоп Админ, и все. Русский есть.