[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Русификация сайта
Игорище
Здравствуйте, уважаемые.

Вопрос №1: Нужно сделать мультиязычный сайт (хотя бы только русифицировать). Имеются в наличии два скрипта - один на PHP, переводит сайт с помощью Google Translator API (вроде так), создает отдельный CSV-файл перевода, что-то вроде [ru].csv Ну и дальше этот файл перевода можно подправить вручную. Подходит потому, что русификация моего движка должна производиться именно с помощью csv файла. Так вот вопрос - как этот скрипт подключить? Возможно, кто-то может направить на подробную инструкцию. Или объяснить что куда и как, с примерами.

Вопрос №2: Имеется сайт на HTML + CSS, нужно сделать все то же - добавить функцию мультиязычности с помошью вышеописанного скрипта. Тестировать буду на своем компе (Денвер поставлю).

Вопрос №3: Как подключить аналогичный скрипт, но на AJAX, который имеется в виде дополнительного модуля (на Джумлу) к HTML сайту.

ОПИСАНИЕ скрипта на англицком:

This script can be used to make a multilingual websites. It has the unique feature of automatic translating untranslated strings with Google translator. If the translation is not 100% correct you can manually change the translation in the CSV language file. You don’t need to create the CSV files yourself because the script will automaticly detect witch strings are not in the CSV yet and create a line for these strings. An advantage of using CSV files to save the translations in is that these files can be send to a translator whom can open these in Excel and start translating them.

How to use
First you need to include the Language.php file in your script and set the original
language of the strings you write. The set auto will enable the auto translation by Google translator. If you disable auto translate there will still be created new lines in the CSV for the new strings but they are marked with <!-- TRANSLATE THIS -->.
include("Language.php");
Language::SetDefault("en");
Language::SetAuto(true);
With the Set method you can define what the language is that you want to show. In this example we set it to dutch(nl).
Language::Set("nl");
Now we can wrap our strings with the __() function to translate them. For example if you place this on your page. If you run this script an you open the translations directory you will see a file nl.csv. Open this file an you’ll see that the strings are automaticly translated. If there are mistakes in the translations you can modify these and save the file.
echo __("My name is Wim") . "<br />";
echo __("I'm 23 years old.");
Supported languages for auto translate
• albanian (sq)
• arabic (ar)
• bulgarian (bg)
• catalan (ca)
• chinese (zh-CN)
• croatian (hr)
• czech (cs)
• danish (da)
• dutch (nl)
• english (en)
• estonian (et)
• filipino (tl)
• finnish (fi)
• french (fr)
• galician (gl)
• german (de)
• greek (el)
• hebrew (iw)
• hindi (hi)
• hungarian (hu)
• indonesian (id)
• italian (it)
• japanese (ja)
• korean (ko)
• latvian (lv)
• lithuanian (lt)
• maltese (mt)
• norwegian (no)
• persian alpha (fa)
• polish (pl)
• portuguese (pt)
• romanian (ro)
• russian (ru)
• serbian (sr)
• slovak (sk)
• slovenian (sl)
• spanish (es)
• swedish (sv)
• thai (th)
• turkish (tr)
• ukrainian (uk)
• vietnamese (vi)
CSV Save path
Default the translation files are save in the directory "translations". You can change this
with the method SetSavePath. Make sure the directory exists and is writable by the
server.
Language::SetSavePath("lang");
Remember language example
This example shows you how you can save the language for a user and set it with a url
parameter (?ln=). If you will open this example in your browser the languages are
default displayed in English. If you add ?ln=fr to the url and reload you will see that the
strings are automaticly are translated to french. If you remove the ?ln= parameter from
the url and reload the page you’ll notice that the language is saved in the session.
include("Language.php");
if(isset($_GET["ln"])) $_SESSION["language"] = $_GET["ln"];
Language::Set($_SESSION["language"]);
Language::SetAuto(true);
echo __("My name is Wim");
echo __("I am 23 years old.");
Don't have file_get_contents
Default the script uses a GET method to do the auto translations with the google api. It
uses the file_get_contents function, but on some servers this function is not available, so
I also implemented a method to do the translations using curl.
To use the POST method using curl you add the following line:
Language::SetMethod(Language::METHOD_POST);
If you are translating big chunks of text it's also better to use this POST
method.



Спустя 13 минут, 14 секунд (17.11.2010 - 21:56) inpost написал(а):
сложно объяснить. Легче сказать так: хватит пользоваться чужими скриптами, напиши их сам, проблемы уйдут.

Спустя 9 часов, 5 минут, 59 секунд (18.11.2010 - 07:02) Guest написал(а):
Написать самому google api? biggrin.gif Ну ты маньячина-изобретатель велосипедов и автор "полезных" советов куда не глянь, а еще модерируешь на ресурсе..... Шухер!

Инструкции по использованию google api есть в интернете. В поиск!

Спустя 6 часов, 14 минут, 36 секунд (18.11.2010 - 13:17) inpost написал(а):
Guest
Читай внимательно, это отдельный скрипт, который вытягивает данные из google.api. Фиг знает, что он там нашел!

Спустя 49 минут, 47 секунд (18.11.2010 - 14:07) Игорище написал(а):
Да, это отдельный скрипт. Все, что мне нужно, так это чтобы мне объяснили, как его встроить в страницу smile.gif Зачем писать то, что уже есть? Тем более опыт писанины у меня только в слезных стишульках имеется.
Т.е. буквально куда его скопировать (если нужно); куда, где и что прописать в самих кодах страницы (например, в HTML).
В комплекте скрипт, состоящий из двух файлов index.php И language.php. Мне нужно, чтобы кто-то подсказал, что из этого нужно выдрать и куда прописать, чтобы его подключить.
Т.е. нужно сделать перевод на русский, например, и сделать русский дефолтным на странице, а другие в качестве тех, которые можно выбрать.

Текст скрипта index.php:

<?php

session_start();
error_reporting(E_ALL);

include("Language.php");
if(isset($_GET['ln'])) $_SESSION['language'] = $_GET['ln'];
Language::Set($_SESSION['language']);
Language::SetAuto(true);

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><?php echo __('Website Translator example'); ?></title>
<style type="text/css">
<!--
@charset "utf-8";
/* CSS Document */
body, html, div, blockquote, img, label, p, h1, h2, h3, h4, h5, h6, pre, ul,ol, li, dl, dt, dd, form, a, fieldset, input, th, td{
margin: 0;
padding: 0;
border: 0;
outline: none;
}

body{
background:#eaeaea none repeat scroll 0 0;
text-align: center;
font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;
font-size:11.5px;
line-height:21px;
}

h1, h2, h3, h4, h5, h6{
font-size: 100%;
margin: 0 15px;
font-weight:normal;
line-height:1.4em;
padding-bottom:5px;
}
ul, ol{
list-style-image: none;
list-style-type: none;
}
img{
border: 0;
}
h1, h2, h3 {
font-weight:normal;
margin:0;
padding:0;
}
h1 {
font-size:32px;
font-weight:normal;
line-height:1.4em;
padding-bottom:0.7em;
color: #3D3D3D;
text-align: center;
border-bottom:1px solid #EEEEEE;
}
h2 {
clear:both;
font-size:18px;
color:#5B5A5A;
line-height:1.4em;
padding-bottom:5px;
}
ul {
margin:0 1.5em 1.5em;
list-style-position:inside;
list-style-type:disc;
}
ol {
list-style-image:none;
list-style-position:inside;
list-style-type:upper-alpha;
}
li {
border-bottom:1px solid #DDDDDD;
padding:3px 10px;
color:#666666;
}
p{
padding:0 0 1em;
}
hr {
background:#DDDDDD none repeat scroll 0 0;
border:medium none;
clear:both;
color:#DDDDDD;
float:none;
height:0.1em;
margin:0 0 1.45em;
width:100%;
}
a:link, a:visited, a:active{
color:#3366CC;
text-decoration:underline;
}
a:hover {
color:#CC3333;
}

.default {
padding-top: 5px;
padding-right: 10px;
padding-bottom: 5px;
padding-left: 10px;
margin-bottom: 5px;
margin-top: 0px;
margin-right: 0px;
margin-left: 0px;
background-color: #F2F2F2;
border: 1px solid #CCC;
color: #666;
}
.quiet {
color:#666666;
}
.small {
font-size:0.85em;
line-height:1.875em;
margin-bottom:1.875em;
}
#globalinfo{
border-right:1px solid #EEEEEE;
float: left;
width: 180px;
padding: 10px;
font-weight: bold;
}
#globaldescription{
float: right;
width: 410px;
padding: 10px;
}
#wrapper{
width: 700px;
margin: 20px auto;
text-align: left;
}
#header{
height: 130px;
}
#maincontent{
border:1px solid #dddddd;
background-color: #FFF;
padding: 30px;
}
#header h1 {
font-size:24px;
margin:0 0 0 5px;
color:#616263;
}
#header p{
margin:0px 0px 10px 0px;
}
#header ul{
margin: 0px;
padding: 0px;
}
#header li{
list-style: none;
margin: 0px;
padding:0px;
}

#header h1 a {
color:#616263;
text-decoration:none;
}
#header h1 a:hover {
text-decoration: underline;
}
#header .content{
float: right;
width: 550px;
line-height:25px;

}
#header img {
float:left;
margin-right:10px;
}
#header h1 span {
display:inline;
}
#shadow{
height: 13px;
background-color: #EFEFEF;
background-image: url(../media/layout/shadow.gif);
}
#footer{
margin-top: 5px;
color: #898989;
}
#tabbody{
background-image: url(../media/layout/tabbg.png);
background-repeat: repeat-x;
padding: 10px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 20px;
margin-left: 0px;
}
.bigtext{
font-size: 24px;
text-align: center;
color: #1C4E7E;
font-weight: bold;
}
.red{
color: #FF4411;
}
label{
font-size:14px;
font-weight:bold;
}
input, select, textarea{
padding: 4px 6px;
border: solid 1px #7f9db9;
}
.nodisplay{
display: none;
}
.grayed{
background-color: #ebebe4;
color: #aca899;
}
.left{
float: left;
}
.right{
float: right;
}
.spacer{
display: block;
clear: both;
}
.infoline{
padding: 5px;
border-bottom: solid 1px #d4e2ea;
}

.infoblock{
padding: 5px;
border: solid 1px #d4e2ea;
}
.ajaximageholder{
border: solid 1px #eeede0;
background-image: url(../media/layout/load.gif);
background-repeat: no-repeat;
background-position: center center;
margin: 10px 0px;
}
.inputajax{
background-image: url(../media/layout/load.gif);
background-repeat: no-repeat;
background-position: right center;
}
.inputinfo{
font-style:italic;
color:#171717;
font-size: 10px;
}

.normal table, .disabled table, .good table, .bad table{
border: none;
}
.normal table, .disabled table, .good table, .bad table{
font-size:11px;
}

.normal{
background-color: #f4f8fa;
border: solid 1px #d4e2ea;
margin-bottom: 5px;
}
.disabled{
background-color: #f2f2f2;
border: solid 1px #e2e2e2;
margin-bottom: 5px;
color: #bbb;
}
.good{
background-color: #d1f39c;
border: solid 1px #aadc63;
margin-bottom: 5px;
}
.bad{
background-color: #fcc9c9;
border: solid 1px #dc6363;
margin-bottom: 5px;
}
.ajaxholder{
background-image: url(../media/layout/load.gif);
background-repeat: no-repeat;
background-position: center center;
height: 100px;
}
#topbanner{
background-color: #222222;
height: 60px;
text-align:center;
}
#topbanner .content{
width: 700px;
margin: 0px auto;
position:relative;
text-align: left;
font-size:30px;
color: #FFF;
}
#topbanner #topmenu{
position: absolute;
bottom: 0px;
right: 0px;
width: 310px;
height: 36px;
}
#topmenu a:hover {
text-decoration:underline;
}
#topmenu li{
list-style: none;
margin: 0px 0px 0px 5px;
padding: 0px;
float: left;
}
#topmenu a {
color:#FFFFFF;
text-decoration:none;
font-size: 16px;
display: block;
padding: 2px 10px 10px 10px;
}
#topmenu li.active {
background-image: url(../media/layout/arrow.gif);
background-repeat: no-repeat;
background-position: bottom center;
}

.toolblock{
position: relative;
width: 305px;
height: 80px;
background-color: #f4f8fa;
border: solid 1px #d4e2ea;
margin: 5px;
float: left;
}
.toolblockhover{
position: relative;
width: 305px;
height: 80px;
background-color: #E4EEF3;
border: 1px solid #CADBE6;
margin: 5px;
float: left;
}
.toolblock img, .toolblockhover img{
position: absolute;
left: 30px;
top: 19px;
}
.toolblock h3, .toolblockhover h3{
position: absolute;
left: 55px;
top: 15px;
margin: 0px;
padding: 0px;
font-size: 16px;
font-weight:bold;
}
.toolblock span, .toolblockhover span{
position: absolute;
left: 30px;
top: 40px;
font-size: 12px;
}

.new{
position: absolute;
top: 0px;
right: 0px;
background-image: url(../media/layout/new.png);
background-repeat: no-repeat;
width: 34px;
height: 34px;
}

.code{
padding-left: 10px;
border-left: solid 3px #999;
font-family:"Times New Roman", Times, serif;
color:#333;
font-size: 12px;
}
-->
</style>
</head><body>
<div id="wrapper">
<div id="maincontent">
<h1><?php echo __('Create a multilingual website'); ?></h1>
<hr />
<h2><?php echo __('Change language'); ?></h2>
<ol>
<li><a href="index.php?ln=en">English</a></li>
<li><a href="index.php?ln=nl">Nederlands</a></li>
<li><a href="index.php?ln=ja">Japanese</a></li>
<li><a href="index.php?ln=ar">Arabic</a></li>
<li><a href="index.php?ln=es">Spanish</a></li>
</ol>
<p>
</p>
</p>
<h2><?php echo __('Paragraph'); ?> <a name="features" id="features"></a></h2>
<p><?php echo __('This is a small paragraph with some content to show you the PHP class in action.'); ?></p>
<ul>
<li><?php echo __('Translations are saved in CSV files'); ?></li>
<li><?php echo __('Automatic create new CSV lines when there are new strings'); ?></li>
<li><?php echo __('Auto translation of new strings with Google translator'); ?></li>
<li><?php echo __('Easy to use'); ?></li>
</ul>
</div>
</div>
</body></html>





Спустя 5 минут, 52 секунды (18.11.2010 - 14:12) Игорище написал(а):
Я так понимаю в текст страницы нужно выдрать вот то, что находится внизу, в блоке после head body. Но, может, есть еще что-то или какие-то нюансы?
Какие есть другие варианты руссификации или перевода?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.