Как да преведете уебсайт на няколко езика

Уебсайтовете се развиват ден след ден, тъй като комуникацията на света става все по -близка. Всеки път имаме нужда нашите разработки не само да бъдат използвани на местния пазар, но и за разширяване на световните пазари. Един от първите начини за постигане на това е нашият сайт (или приложения) да поддържа множество езици. Днес ще научите как да приложите многоезичен към вашия уебсайт или приложение.

Как ще работи нашият уеб преводач

1. На нашия сайт ще имаме бутон, който ще ни даде възможност да променим нашия сайт на различните езици, които сме конфигурирали.

2. Преводът ще се извърши с javascript, който извлича преведените текстове чрез ajax, записани в текстови файлове, които преди това сме конфигурирали с маркерите на нашия уебсайт.

3. Ще имаме външна услуга, която ще ни каже от коя държава ни посещава и по този начин ще визуализира идеалния език за посетителя. Ще се справим с това чрез IP на посетителя.

Предимства на нашия преводач

1. Не е необходимо да опреснявате сайта, за да приложите превода, тъй като много сайтове го правят по този начин.

2. Имаме само една версия на нашия фронт, не е необходимо да имате два или повече html, за да обработвате текстовете на различни езици.

3. Ако по -късно искаме да добавим други езици, можем да го конфигурираме много лесно.

4. Супер лесен за кандидатстване за сайтове, които вече сме направили и искаме да поставим на многоезични.

ЗабележкаЗа да разберете ясно този урок, препоръчително е да имате предишни познания по HTML, CSS, Javascript (особено jQuery), познания по Ajax и малко по PHP.

1. Стартиране на развитието


Ще започнем със създаването на директория, наречена translate, в тази директория ще създадем файловете index.html, css директория и наречена js. И вътре в тези две директории поставете файл, наречен main.css Y main.js съответно.
 Моят многоезичен сайт Английски Зареждане …

Здравей свят

[color = # a9a9a9] Код от index.html [/ color]
 .loading-lang {непрозрачност: 0; } .loading-lang.show {opacity: 1; } 
[color = # 808080] main.css код [/ color]

Засега файлът main.js остава празен. Можем да тестваме от предпочитания от нас локален уеб сървър. Необходимо е да се използва уеб сървър, тъй като по -късно ще започнем да правим ajax заявки.

2. Създаване на файлове за превод


Ние ще създадем на нашия сайт файловете, където ще поставим текстовете на нашия уебсайт. Ще започнем със създаването на два файла за нашия сайт, които ще бъдат на два езика. Английски и испански. Създаваме директория, наречена lang, в тази директория поставяме два текстови файла, наречени es.txt и en.txt (текстов файл на испански и английски език съответно).

Съдържание на файла
es.txttitulo-web => Моят многоезичен сайт
добре дошли => добре дошли в моя сайт
здравей => здравей свят
en.txttitulo-web => Моят многоезичен сайт
welcome => Добре дошли в моя сайт
здравей => Здравей свят

Ще обясня малко за тези файлове как са структурирани. Всяка фраза, която използваме на нашия уебсайт, трябва да бъде идентифицирана с уникален идентификатор, което ще бъде начинът да се преведе всяка фраза, където трябва да бъде поставена конкретно. Например, за заглавието на сайта използваме ID title-web, последван от знаците =>, след което съответната фраза. Всяко изречение трябва да е на различен ред.

В обобщение трябва да спазваме следните правила

1. Уникален идентификатор.

2. Винаги използвайте след ID знаците =>

3. Отделно лице преведена фраза с различен ред. (Разделени с нов ред или \ n).

4. Файловете са във формат txt.

3. Създаване на Ajax


ЗабележкаАко нямате много познания за jQuery, каня ви да посетите уебсайта им.
 $ (document) .ready (function () {var selector = '#translate'; $ (selector) .on ('click', function (e) {e.preventDefault (); startLang ($ (this));} ); var startLang = function (el) {var el = $ (el); var text = el.attr ('data-text'); var file = el.attr ('data-file'); file = file. split (','); text = text.split (','); var index = el.attr ('data-index'); if (index> = file.length) {index = 0;} changeName (el , текст [индекс]); changeIndex (el, индекс); loadLang (файл [индекс]); $ ('html'). attr ('lang', файл [индекс]);}; name) {$ (el) .html (name);}; var changeIndex = function (el, index) {$ (el) .attr ('data-index', ++ index);}; var loadLang = function ( lang) {var processLang = function (data) {var arr = data.split ('\ n'); for (var i in arr) {if (lineValid (arr [i])) {var obj = arr [i] .split ('=>'); assignText (obj [0], obj [1]);}}}; var assignText = функция (ключ, стойност) {$ ('[data-lang = "' + key + ' "] '). всеки (function () {var attr = $ (this) .attr (' data-destine '); if (typeof attr! ==' undefined ') {$ (this) .attr (attr, стойност); } else {$ (this) .html (value); }}); }; var lineValid = function (line) {return (line.trim (). length> 0); }; $ ('. loading-lang'). addClass ('show'); $ .ajax ({url: 'lang /' + lang + '. txt', грешка: function () {alert ('Не е зареден превод');}, success: function (data) {$ ('. loading-lang ') .removeClass (' show '); processLang (данни);}}); }; }); 
[color = # a9a9a9] main.js код [/ color]

Също така трябва да променим нашия html:

 Моят многоезичен сайт Английски Зареждане … 

Здравей свят

[color = # a9a9a9] Актуализиран HTML код [/ color]

С това можем да проверим дали нашият сайт вече се превежда.

Нека обясним малко какво направихме в нашия JavaScript файл и какво актуализирахме в нашия html.

Процесът, извършен във файла javascript, е посредством маркера, който работи като бутон за превод, поставяме събитие, така че то да отговаря за отправянето на ajax заявка за извличане на файла на езика, който ще използваме в момент.

В нашия бутон за превод имаме три атрибута, наречени файл с данни, индекс на данни, данни-текст.

Атрибути на бутоните
data-file = "е, вТой е отговорен за наличието на различните езици, които имаме на нашия сайт. За нашия урок е и продължава. Ако си спомняте добре нашите файлове за превод се наричат ​​es.txt и en.txt.
data-index = "1Той има позицията на следващия файл, който трябва да има. 0 е битие и 1 ин, това означава, че следващият за внасяне е. Можем да видим тази организация в нашия атрибут на файл с данни, просто си представете, че файлът с данни е подобен на вектор.
data-text = "Английски, испанскиТой е отговорен за визуализирането на кой език в момента се показва приложението ни.

Промяната, която направихме в нашия HTML код, беше да добавим атрибута data-lang към маркерите, които ще преведем, с уникалния идентификатор. Вече трябва да знаете, че този уникален идентификатор е конфигуриран във файловете en.txt и es.txt.

Например

Здравей свят

: уникалният идентификатор е здравей и можем да го намерим в нашите txt файлове. en.txt: hello => hello world, и en.txt: hello => Hello World.

Нека поставим нашия преводач на тест и ще видим дали това, което сме разработили, наистина покрива всичко необходимо и колко сложно е да добавим нов език.

Нека добавим нов език. На този етап от нашето развитие трябва да осъзнаем, че трябва да направим само две неща:

1. Създайте нашия нов езиков файл.

2. Добавете новия език в атрибутите на файла с данни и текста на данните.

Ние създаваме френски език за нашия сайт. Ние създаваме нашия езиков файл, наречен fr.txt, в директорията lang.

Fr.txt съдържаниеtitulo-web => Mon site многоезичен
добре дошли => Bienvenue sur mon site
здравей => salut monde

Актуализираме нашия бутон за езици, така че в index.html етикетът е:

 Английски 
Нека тестваме нашия сайт с новия език:

Перфектно! така че можем да добавим всички необходими езици към нашите уебсайтове без допълнителни усложнения. Нека направим втори тест. Човек се чуди нещо, може ли преведена фраза да се използва повторно на един етикет и да се постави на друг, за да не се налага да повтаря същия превод, дори ако е отпечатан на различни места? Отговорът е ДА, нека направим примера.

Нека използваме заглавието на мрежата с Unique ID title-web, което в момента използваме в нашия етикет, и ще го поставим в долния колонтитул на нашия сайт. То е както следва:

 Моят многоезичен сайт © 
[color = # a9a9a9] Добавяне към кода index.html [/ color]

Опресняваме страниците си и можем да видим, че вече имаме налични и трите езика.

Вече имаме подготвен по -голямата част от нашия код, просто трябва да добавим нещо много важно, за да го имаме винаги на нашия уебсайт. Знайте от коя държава ни посещават и по този начин знайте какъв език да покажете на посетителя.

4. Детектор за държава


В интернет има много услуги, които ни предоставят тази информация, за нашия урок ще използваме ipinfodb, който ще ни помогне да открием от коя държава ни посещават. Всичко, което трябва да направите, е да се регистрирате на този сайт и той ще ни предостави API КЛЮЧ, който ще използваме придружен от IP на посетителя.

Първо се регистрираме на сайта, след тази регистрация ще ни изпратите съобщение на имейла, посочен в момента на регистрация, в това съобщение вие ​​ни молите да активираме акаунта. Когато го активирате, той ни дава API KEY, който остава в действие 10 минути след активирането на нашия акаунт.

Ние тестваме нашия ключ, като използваме следната връзка http: //api.ipinfodb… .I_API_KEY & ip = IP, заменете мястото, където MI_API_KEY е дадено от този, който ви е даден, и IP адреса, който искате да намерите. В моя случай опитах със собствен IP и това беше резултатът.

Ако видим на изображението последните две данни са CO; Колумбия. Можем да използваме CO, за да идентифицираме страната. Тъй като това е уникален код за всяка държава (ISO 3166-2). След като сме наясно какво ще правим, използваме сървърна езикова услуга, за урока ще използвам PHP.

 
[color = # a9a9a9] Country.php код [/ color]

В примера, който поставям, че ако кодът е CO (Колумбия) или ES (Испания), той връща 0, което е индексът на испанския език, ако кодът е FR (Франция), връща 2, което е индексът за френския език , и ако не, нито едното от двете не връща 1, показващо английския език. В урока оставям по подразбиране на английски език всяка държава, която не сме посочили на езиците. Сега в javascript добавяме следния код.

 $ .ajax ({url: 'country.php', success: function (data) {$ (selector) .attr ('data-index', data); startLang ($ (selector));}}); 
[color = # a9a9a9] Добавяне към кода main.js [/ color]

Правим тестове, за да видим какви резултати получаваме:

Ако правите местни тестове (като мен в този случай), $ _SERVER ['REMOTE_ADDR'], той ще върне ip на нашата локална мрежа, а не публичната. Ето защо той връща езика по подразбиране английски, за да проверим ясно това, можем да качим нашия урок на хостинг и това е всичко!

С това завършихме нашия урок, надявам се да ви е харесал много и да можете да го приложите на уебсайтовете си, оставям кода в цип по -долу:

Изтеглете код translate.zip 3.2K 1459 изтегляния

Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave