Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
-1 / 2 / 1
Регистрация: 03.04.2012
Сообщений: 53
1

Перевод на разные языки

22.04.2013, 13:27. Показов 1451. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Граждане программисты! У многих из вас наверняка есть опыт перевода сайта на разные языки. Подскажите, какой путь самый лучший:

1. Взять такую престремниющую конструкцию типа
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$sett = array('RU' => array('month' => array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'),
                            'interface' => array('year' => 'Год...', 'settings' => 'Настройки', 'yournick' => 'Ваш ник', 'yourmail' => 'Ваше E-Mail', 'yourfname' => 'Ваше имя', 'yoursname' => 'Ваша фамилия', 'your dob' => 'Ваша дата рождения', 'up' => 'Наверх')
                            )
              'EN' => array('month' => array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
                            'interface' => array('year' => 'Year...', 'settings' => 'Settings', 'yournick' = > 'Your nick', 'yourmail' => '', 'yourfname' => '', 'yoursname' => '', 'your dob' => 'Votre date de naissance', 'up' => 'Lift up')
              )
              'FR' => array('month' => array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'),
                            'interface' => array('year' => 'Année...', 'settings' => 'Configuration', 'yournick' = > 'Votre pseudo', 'yourmail' => 'Votre E-Mail', 'yourfname' => 'Votre nom', 'yoursname' => 'Votre Prénom', 'your dob' => 'Votre date de naissance', 'up' => 'Lever')
              )
              'IT' => array('month' => array('Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'),
                            'interface' => array('year' => 'Anno...', 'settings' => 'Impostazioni', 'yournick' = > 'il Tuo nick', 'yournick' => 'il Tuo nick', 'yourmail' => 'la Tua email', 'yourfname' => 'il Tuo nome', 'yoursname' => 'il Tuo nome', 'your dob' => 'La data di nascita', 'up' => 'Alzare')
              )
              'GE' => array('month' => array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'),
                            'interface' => array('year' => 'Jahr...', 'settings' => 'Einstellungen', 'yournick' => 'Ihr Spitzname', 'yourmail' => '', 'yourfname' => '', 'yoursname' => '', 'your dob' => 'Votre date de naissance', 'up' => 'emporheben')
              )
              'UA' => array('month' => array('Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Лип', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'), 
                            'interface' => array('year' => 'Рік...', 'settings' => 'Налаштування', 'yournick' => 'Ваш нік', 'yourmail' => '', 'yourfname' => '', 'yoursname' => '', 'your dob' => 'Votre date de naissance', 'up' => 'Підняти')
              )
              );
Достатки:
1. Ну довольно просто сделать.
2. Просто использовать. Выводить везде код типа:
PHP
1
echo $sett[RU][interface][yourmail];
Недостатки:
1. Громоздко(ну это кому как)
2. Надо сказать, я не знаю конкретно, как происходит выделение памяти под переменные/массивы, но даже не искушенному в кодинге человеку станет понятно, что с памятью такой вариант не подружится.

2. Можно сделать на сайте несколько поддоменов для языков, например:
http://ru.example.ru/
или же создав директорию для каждого языка:
http://example.ru/ru-RU/
Достатки:
1.Особо ковыряться с массивами перевода (тот самый
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$sett = array('RU' => array('month' => array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'),
                            'interface' => array('year' => 'Год...', 'settings' => 'Настройки', 'yournick' => 'Ваш ник', 'yourmail' => 'Ваше E-Mail', 'yourfname' => 'Ваше имя', 'yoursname' => 'Ваша фамилия', 'your dob' => 'Ваша дата рождения', 'up' => 'Наверх')
                            )
              'EN' => array('month' => array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
                            'interface' => array('year' => 'Year...', 'settings' => 'Settings', 'yournick' = > 'Your nick', 'yourmail' => '', 'yourfname' => '', 'yoursname' => '', 'your dob' => 'Votre date de naissance', 'up' => 'Lift up')
              )
              'FR' => array('month' => array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'),
                            'interface' => array('year' => 'Année...', 'settings' => 'Configuration', 'yournick' = > 'Votre pseudo', 'yourmail' => 'Votre E-Mail', 'yourfname' => 'Votre nom', 'yoursname' => 'Votre Prénom', 'your dob' => 'Votre date de naissance', 'up' => 'Lever')
              )
              'IT' => array('month' => array('Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'),
                            'interface' => array('year' => 'Anno...', 'settings' => 'Impostazioni', 'yournick' = > 'il Tuo nick', 'yournick' => 'il Tuo nick', 'yourmail' => 'la Tua email', 'yourfname' => 'il Tuo nome', 'yoursname' => 'il Tuo nome', 'your dob' => 'La data di nascita', 'up' => 'Alzare')
              )
              'GE' => array('month' => array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'),
                            'interface' => array('year' => 'Jahr...', 'settings' => 'Einstellungen', 'yournick' => 'Ihr Spitzname', 'yourmail' => '', 'yourfname' => '', 'yoursname' => '', 'your dob' => 'Votre date de naissance', 'up' => 'emporheben')
              )
              'UA' => array('month' => array('Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Лип', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'), 
                            'interface' => array('year' => 'Рік...', 'settings' => 'Налаштування', 'yournick' => 'Ваш нік', 'yourmail' => '', 'yourfname' => '', 'yoursname' => '', 'your dob' => 'Votre date de naissance', 'up' => 'Підняти')
              )
              );
)
2. Легко править перевод
Недостатки:
1. Придется делать копию скрипта.
2. Можно и перепутать директории, например, в англо запихать русскую и т.д.



Вот и посоветуйте, как мне поступить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2013, 13:27
Ответы с готовыми решениями:

Разные языки в одном файле
В общем имею файл в котором записаны последовательно тексты на разных языках. язык1 язык2...

Разные языки DateTime и DateTimeFormatInfo.MonthNames
Кто нибудь сталкивался с разницей языков ? в ЮНИТИ DateTime.Now.ToString("MMMM"); выдает...

Изменение печатных форм и разные языки
Добрый день. Изменил печатную форму, удалил ненужные пункты, вписал некоторую текстовую информация...

UTF-8, ASP, HTML и разные языки на одной страничке.
Народ, впринципе этот вопрос староват, но есть некоторые...ньюансы... Как делать страничку на...

4
2432 / 2282 / 594
Регистрация: 27.05.2011
Сообщений: 7,801
22.04.2013, 13:39 2
Цитата Сообщение от teremok_teremok Посмотреть сообщение
1. Громоздко
ну так зачем вам все языки держать в коде - выбирайте нужный
PHP
1
2
$array = include "lang.$lg.php";
echo $array['month'];
0
-1 / 2 / 1
Регистрация: 03.04.2012
Сообщений: 53
22.04.2013, 13:43  [ТС] 3
Цитата Сообщение от crautcher Посмотреть сообщение
ну так зачем вам все языки держать в коде - выбирайте нужный
PHP
1
2
$array = include "lang.$lg.php";
echo $array['month'];

Спасибо. Тоже вариант. А тот массив
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$sett = array('RU' => array('month' => array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'),
                            'interface' => array('year' => 'Год...', 'settings' => 'Настройки', 'yournick' => 'Ваш ник', 'yourmail' => 'Ваше E-Mail', 'yourfname' => 'Ваше имя', 'yoursname' => 'Ваша фамилия', 'your dob' => 'Ваша дата рождения', 'up' => 'Наверх')
                            )
              'EN' => array('month' => array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
                            'interface' => array('year' => 'Year...', 'settings' => 'Settings', 'yournick' = > 'Your nick', 'yourmail' => '', 'yourfname' => '', 'yoursname' => '', 'your dob' => 'Votre date de naissance', 'up' => 'Lift up')
              )
              'FR' => array('month' => array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'),
                            'interface' => array('year' => 'Année...', 'settings' => 'Configuration', 'yournick' = > 'Votre pseudo', 'yourmail' => 'Votre E-Mail', 'yourfname' => 'Votre nom', 'yoursname' => 'Votre Prénom', 'your dob' => 'Votre date de naissance', 'up' => 'Lever')
              )
              'IT' => array('month' => array('Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'),
                            'interface' => array('year' => 'Anno...', 'settings' => 'Impostazioni', 'yournick' = > 'il Tuo nick', 'yournick' => 'il Tuo nick', 'yourmail' => 'la Tua email', 'yourfname' => 'il Tuo nome', 'yoursname' => 'il Tuo nome', 'your dob' => 'La data di nascita', 'up' => 'Alzare')
              )
              'GE' => array('month' => array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'),
                            'interface' => array('year' => 'Jahr...', 'settings' => 'Einstellungen', 'yournick' => 'Ihr Spitzname', 'yourmail' => '', 'yourfname' => '', 'yoursname' => '', 'your dob' => 'Votre date de naissance', 'up' => 'emporheben')
              )
              'UA' => array('month' => array('Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Лип', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'), 
                            'interface' => array('year' => 'Рік...', 'settings' => 'Налаштування', 'yournick' => 'Ваш нік', 'yourmail' => '', 'yourfname' => '', 'yoursname' => '', 'your dob' => 'Votre date de naissance', 'up' => 'Підняти')
              )
              );

много памяти жрет?
0
2432 / 2282 / 594
Регистрация: 27.05.2011
Сообщений: 7,801
22.04.2013, 13:48 4
конкретно этот нет, но в сумме на весь сайт должно быть много фраз

Добавлено через 1 минуту
да и критерий "много жрет" очень обстактен - он зависит от трафика и мощности сервера
0
-1 / 2 / 1
Регистрация: 03.04.2012
Сообщений: 53
22.04.2013, 15:23  [ТС] 5
Ну ведь все должно стремиться к совершенству, так что лучше использовать ваш вариант
0
22.04.2013, 15:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2013, 15:23
Помогаю со студенческими работами здесь

Программа для перевода букв на разные вымышленные языки
можно написать программу для перевода букв на разные вымышленные языки?

Стоит ли делать два сайта под разные языки ?
Есть два сайта, один из них зеркало другова. На обоих сайтах есть две версии сайта rus и eng. При...

Можно ли в одном проекте использовать разные языки программирования
Интересует можно ли в одном проекте использовать разные языки программирования?

JavaScript является каким то подразделом Java, или это совершенно разные языки?
Здравствуйте. Хочу изучит JavaScript, но не хотелось бы обходить вниманием Java. Подскажите,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru