Помогите разобраться с multilanguage sustems

Статус
Закрыто для дальнейших ответов.

toolss

Новичок
Регистрация
08.07.2012
Сообщения
2
[background=rgb(250, 250, 250)]Доброго вам время суток... у меня возникла проблема с скриптом написанным на JavaScript. Скрипт приставляет собой мульти-язычную систему для сайтов, вот сам архив. [/background]Посмотреть вложение newProject.zip [background=rgb(250, 250, 250)]. проблема я так предполагаю в самом language.js[/background]




[background=rgb(250, 250, 250)]
Код:
var lang = "default";
var Reg = "lang";
//Last call function
var lfn = ''; var lfn_count = 1;
function lf(fname) {
if (lfn!=fname){
  lfn=fname;
  lfn_count = 0;
}
else { lfn_count++; }
}
// Read registry
function RegRead(key) {
lf('RegRead');
var ret = "";
try { ret = WshShell.RegRead(key); }
catch(e) { ret = ""; }
return ret;
}
// htmlspecialchars
function htmlspecialchars(html) {
lf('htmlspecialchars');
html = html.replace(/&/g, "&");
html = html.replace(/</g, "&lt;");
html = html.replace(/>/g, "&gt;");
html = html.replace(/"/g, "&quot;");
html = html.replace(/'/g, "&quot;");
return html;
}
var lang_support = {
ru:'Русский',   // Russian
en:'English',   // English
ua:'Українська',   // Ukrainian
de:'Deutsch',	 // German
ge:'Georgian',  // Georgian
by:'Белорусский',   // Belorusian
az:'Azərbaycan',   // Azeri
lt:'Lietuvių',  // Lithuanian
tr:'Turkçe',    // Turkish
fr:'Français',  // French
sp:'español',   // Spanish
it:'Italiano',  // Italian
ar:'Arabic',    // Arabic
nl:'Nederlands',   // Dutch
sr_L:'Srpski_L',   // Serbian_L
sr_K:'Srpski_K',   // Serbian_K
pl:'Polski',    // Polish
am:"Armenian",  // Armenian
cht:"Chinese",  // Chinese
vn:'Vietnamese',   // vietnamese
gr:'Greek',	  // Greek
bg:'Bulgarian', // Bulgarian
ro:'Roumanian', // Roumanian
br:'Português', // Brazilian Portuguese
dk:'Dansk',	  // Danish
hu:'Hungarian', // Hungarian
id:'Indonesian',   // Indonesian
he:'Hebrew',    // Indonesian
si:'Slovenščina'   // Slovenian
};
var locale = parseInt("0x" + RegRead("HKCU\\Control Panel\\International\\Locale"));
switch(locale){
case 0x0009: // English
case 0x0c09: // English (Australia)
case 0x2809: // English (Belize)
case 0x1009: // English (Canada)
case 0x2409: // English (Caribbean)
case 0x4009: // English (India)
case 0x1809: // English (Ireland)
case 0x2009: // English (Jamaica)
case 0x4409: // English (Malaysia)
case 0x1409: // English (New Zealand)
case 0x3409: // English (Philippines)
case 0x4809: // English (Singapore)
case 0x1c09: // English (South Africa)
case 0x2c09: // English (Trinidad)
case 0x0809: // English (United Kingdom)
case 0x0409: // English (United States)
case 0x3009: // English (Zimbabwe)
case 0x3c09: // English (Hong Kong)
case 0x3809: // English (Indonesia)
  lang = "en";break;
case 0x000c: // French
case 0x080c: // French (Belgium)
case 0x2c0c: // French (Cameroon)
case 0x0c0c: // French (Canada)
case 0x240c: // French (Congo, DRC)
case 0x300c: // French (Cote d'Ivoire)
case 0x3c0c: // French (Haiti)
case 0x040c: // French (France)
case 0x140c: // French (Luxembourg)
case 0x340c: // French (Mali)
case 0x180c: // French (Monaco)
case 0x380c: // French (Morocco)
case 0xe40c: // French (North Africa)
case 0x200c: // French (Reunion)
case 0x280c: // French (Senegal)
case 0x100c: // French (Switzerland)
case 0x1c0c: // French (West Indies)
  lang = "fr";break;
case 0x000a: // Spanish
case 0x3c0a: // Spanish (Paraguay)
case 0x240a: // Spanish (Colombia)
case 0x140a: // Spanish (Costa Rica)
case 0x1c0a: // Spanish (Dominican Republic)
case 0x300a: // Spanish (Ecuador)
case 0x440a: // Spanish (El Salvador)
case 0x100a: // Spanish (Guatemala)
case 0x480a: // Spanish (Honduras)
case 0x0c0a: // Spanish (International Sort)
case 0x340a: // Spanish (Chile)
case 0x4c0a: // Spanish (Nicaragua)
case 0x080a: // Spanish (Mexico)
case 0x280a: // Spanish (Peru)
case 0x500a: // Spanish (Puerto Rico)
case 0x040a: // Spanish (Traditional Sort)
case 0x380a: // Spanish (Uruguay)
case 0x200a: // Spanish (Venezuela)
case 0x180a: // Spanish (Panama)
case 0x2c0a: // Spanish (Argentina)
case 0x400a: // Spanish (Bolivia)
case 0x580a: // Spanish (Latin America)
case 0x540a: // Spanish (United States)
case 0x200a: // Spanish (Venezuela)
  lang = "sp";break;
case 0x0007: // German
case 0x0c07: // German (Austria)
case 0x0407: // German (Germany)
case 0x1407: // German (Liechtenstein)
case 0x1007: // German (Luxembourg)
case 0x0807: // German (Switzerland)
  lang = "de";break;
case 0x0437: // Georgian (Georgia)
case 0x0009: // English
  lang = "ge";break;
case 0x002c: // Azeri
case 0x742C: // Azeri (Cyrillic)
case 0x082C: // Azeri (Cyrillic, Azerbaijan)
case 0x782C: // Azeri (Latin)
case 0x042C: // Azeri (Latin, Azerbaijan)
  lang = "az";break;
case 0x0010: // Italian
case 0x0410: // Italian (Italy)
case 0x0810: // Italian (Switzerland)
  lang = "it";break;
case 0x0019: // Russian
case 0x0419: // Russian (Russia)
case 0x0819: // Russian (Moldova)
  lang = "ru";break;
case 0x0022: // Ukrainian
case 0x0422: // Ukrainian (Ukraine)
  lang = "ua";break;
case 0x001f: // Turkish
case 0x041f: // Turkish (Turkey)
  lang = "tr";break;
case 0x0027: // Lithuanian
case 0x0427: // Lithuanian (Lithuania)
  lang = "lt";break;
case 0x0013: // Dutch
case 0x0413: // Dutch (Netherlands)
case 0x0813: // Dutch (Belgium)
  lang = "nl";break;
case 0x181a: // Serbian_Latin_Bosnia_Herzegovina
case 0x081a: // Serbian_Latin
  lang = "sr_L";break;
case 0x0c1a: // Serbian_Cyrillic
case 0x1c1a: // Serbian_Cyrillic_Bosnia_Herzegovina
  lang = "sr_K";break;
case 0x0001: // Arabic
case 0x1401: // Arabic (Algeria)
case 0x3C01: // Arabic (Bahrain)
case 0x0C01: // Arabic (Egypt)
case 0x0801: // Arabic (Iraq)
case 0x2C01: // Arabic (Jordan)
case 0x3401: // Arabic (Kuwait)
case 0x3001: // Arabic (Lebanon)
case 0x1001: // Arabic (Libya)
case 0x1801: // Arabic (Morocco)
case 0x2001: // Arabic (Oman)
case 0x4001: // Arabic (Qatar)
case 0x0401: // Arabic (Saudi Arabia)
case 0x2801: // Arabic (Syria)
case 0x1C01: // Arabic (Tunisia)
case 0x3801: // Arabic (U.A.E.)
case 0x2401: // Arabic (Yemen)
  lang = "ar";break;
case 0x0415: // Polish
  lang = "pl";break;
case 0x042b: // Armenian
  lang = "am";break;
case 0x0406: // Danish (Denmark)
  lang = "da";break;[/background][/size][/font][/color]
[color=#282828][font=verdana][size=3][background=rgb(250, 250, 250)]default:
  lang = "ru";
}
var langr = RegRead(Reg + "lang");
if (langr) lang = langr;
var rusLang = false;
if ((lang=='ru')||(lang=='ua')||(lang=='az')||(lang=='by')||(lang=='am')){ rusLang = true; }[/background][/size][/font][/color]
[color=#282828][font=verdana][size=3][background=rgb(250, 250, 250)]// Load language files
document.write('<script type="text/javascript" src="tools/language/ru.js"><\/script>');
if (!rusLang){ //If not RusLang
document.write('<script type="text/javascript" src="tools/language/en.js"><\/script>');
}
document.write('<script type="text/javascript" src="tools/language/' + lang + '.js"><\/script>');[/background][/size][/font][/color]
[color=#282828][font=verdana][size=3][background=rgb(250, 250, 250)]//function l(text) { document.write(text); }
function l(varibles) {
lf('l');
try{
  eval('var text = '+varibles+';');
  eval('if (typeof '+varibles+'_h != "undefined") { var test_var = '+varibles+'_h; }');
  if (typeof test_var != 'undefined') { test_var = test_var; text = "<span onmousemove=\"return thesocialOver(event, '"+htmlspecialchars(test_var)+"')\" onmouseout='return thesocialOut()'>"+text+"</span>"; document.write(text);  }
  else { document.write(text); }
}
catch(e){ document.write(varibles); }
}
// Save language settings
function language_onChange(objSel) {
lf('language_onChange');
if (objSel.selectedIndex != -1) {
  WshShell.RegWrite (Reg + "lang",objSel.options[objSel.selectedIndex].value,"REG_SZ");
  window.location.reload();
}
}
// window.attachEvent('onload');
// Select language in dropdown menu
var fso = '';
function language_list() {
lf('language_list');
var f = fso.GetFolder("tools/language");
var fc = new Enumerator(f.Files);
var lanSelect = document.getElementById("language");
var i = 3;
for (fc.moveFirst();!fc.atEnd();fc.moveNext()) {
  var langFileName = fc.item().name;
  if (langFileName.indexOf('.js') != -1){
   langFileName = langFileName.replace(/.js/i,"");
 
   //Manual priority
   if (langFileName=='en') { r=0; i--; }
   else if (langFileName=='ru') { r=1; i--; }
   else if (langFileName=='ua') { r=2; i--; }
   else if (langFileName=='de') { r=3; i--; }
   else { r=i; }
   //Manual priority
 
   lanSelect.options[r] = new Option((lang_support[langFileName]?lang_support[langFileName]:langFileName), langFileName);
   lanSelect.options[r].title = 'tools/language/ico/' + langFileName + '.gif';
   if (langFileName == lang) lanSelect.options[r].selected=true;
   i++;
  }
}
lanSelect.style.visibility="visible";
}
function morfolog(val,days){
ret = val;
switch(lang){
	    case "ru":
   var sDaysLeft = String(days);
   var sDaysText = "_morf1"; // 5 days
   var nDaysLeftLength = sDaysLeft.length;
   if (sDaysLeft.charAt(nDaysLeftLength - 2) != "1"){
		 if (sDaysLeft.charAt(nDaysLeftLength - 1) == "2" || sDaysLeft.charAt(nDaysLeftLength - 1) == "3" || sDaysLeft.charAt(nDaysLeftLength - 1) == "4") sDaysText = "_morf2"; // 2 days
		 else if (sDaysLeft.charAt(nDaysLeftLength - 1) == "1") sDaysText = "_morf3"; // 1 day
   }
   try { eval("ret = "+val+sDaysText+";"); }
   catch(e){ }
   return ret;
  default:
   try { eval("ret = "+val+";"); }
   catch(e){ }
   return ret;
}
}
[/background]

[background=rgb(250, 250, 250)]ну уважаемые профессионалы в чем же проблема?...[/background]
 

brevis

Well-Known Member
Регистрация
10.08.2010
Сообщения
452
Мы должны угадать какая у тебя проблема?

Ну ок, попробуем:
1. В index.html после <head> подключи jQuery:
Код:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
2. В language.js замени
Код:
var fso = '';
на
Код:
var fso = new ActiveXObject("Scripting.FileSystemObject");
3. В language.js в строке
Код:
var f = fso.GetFolder("tools/language");
пропиши абсолютный путь к этой папке в стиле
Код:
var f = fso.GetFolder("D:\\Downloads\\newProject\\tools\\language");
4. Ну и я надеюсь ты понимаешь, что работать это будет только в Internet Explorer'e?

5. А ты вообще в курсе что это такое?

Скрипт приставляет собой мульти-язычную систему для сайтов
Это скорее кусок скриптов от какой-то autorun-программы.
Раньше на CD продавались сборники программ. Когда CD вставляли в дисковод -- запускалась программа-оболочка, позволяющая просмотреть диск и установить программу. Так вот сам список программ, имеющихся на диске, эта программа-оболочка показывала во встроенном Internet Explorer'e.
 

toolss

Новичок
Регистрация
08.07.2012
Сообщения
2
А переделать для других браузеров возможно?....
 

brevis

Well-Known Member
Регистрация
10.08.2010
Сообщения
452
Если тебе нужно сделать мультиязычность на сайте -- то на эту "систему" забей вообще. Гугли "мультиязычный сайт".
Эта система -- это очень частный случай. И к веб-сайтам она относится как морская свинка к морю.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ