Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674

Как лучше всего организовать систему языков на сайте?

04.12.2012, 09:48. Показов 1105. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если вопрос не понятен, то:

1. Мне надо чтобы пользователь заходя на сайт мог менять язык (в данном случае Русский и Украинский).
2. Как переводить все что возможно затратив как можно меньше сил и памяти?

У меня идея насчет того чтобы переводы хранить в базе данных. Но не много ли гемороя будет?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.12.2012, 09:48
Ответы с готовыми решениями:

Как лучше всего организовать изменение списков учеников на сайте?
Тема затрагивает несколько технологий, поэтому точно не знал, куда писать. Итак. Делаю сайт, который рандомно выбирает ученика для ответа...

Как лучше организовать систему оценок на сайте
Всем доброго дня. Недавно встала проблема организации системы оценок на сайте. Немного подробнее: На сайте есть что-то вроде блога со...

Что лучше всего читать/смотреть где лучше всего практиковаться и как в принципе лучше всего учиться программированию
Здравствуйте,извините за вопрос не по теме но: уже около пол года изучаю С языки и начал понимать что я упустил некоторые моменты,не...

9
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
04.12.2012, 11:22
двуязычный сайт
Цитата Сообщение от Maksimchikfull Посмотреть сообщение
2. Как переводить все что возможно затратив как можно меньше сил и памяти?
что значит переводить , у вас должны быть все текста в 2х языках
1
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
05.12.2012, 23:48  [ТС]
crautcher, полезнаю тема. Но вот если будет 3 языка: Украинский, Русский, Английский?

Будет что то подобное?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$lang = array
(
    "ua" => array
    (
        "title" => "Славутич"
    ),
    
    "ru" => array
    (
        "title" => "Славутич"
    ),
    
    "en" => array
    (
        "title" => "Slavutich"
    ),
);
 
$my_lang = "en";
 
echo $lang[$my_lang]['title'];
?>
Кстати. Мне понравилось))))

Добавлено через 52 минуты
Вторичный вопрос. Как подредством метода GET передавать переменную в каждую ссылку, в каждую страницу?

Т.е туда где язык меняется на выбранный.
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
06.12.2012, 09:02
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function t($key){
    
    static $translate;
    
    if (!$translate){
        $lang = isset($_COOKIE['lang']) ? $_COOKIE['lang'] : 'en';
        
        switch ($lang){
            case 'ru':
                $lang = 'ru';
                break;
            case 'ua':
                $lang = 'ua';
                break;
            default:
                $lang = 'en';
        }
               
        $file = $lang . '.php';
        $translate = require($file);
    }
    
    if (isset($translate[$key]))
        return $translate[$key];
    return $key;
}
 
/** файл ru.php */
return array('hello' => 'привет'
             ,'bye' => 'пока'
             
             );
 
// перевод
echo t('hello');
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
07.12.2012, 00:30  [ТС]
alpex, thanks your.
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
14.12.2012, 17:09  [ТС]
Написал одну функцию сохранения языка в GET. Только для этого надо менять ссылки (хотя JS в помощь).

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function AddToGet($vars,$dvars)
{
    $v1 = explode("&",$vars);
    $array = array();
    $L_GET = $_GET;
    
    if($dvars != false)
    {
        if($dvars == "all") $L_GET = array();
    }
    
    for($i = 0; $i < count($v1); $i++)
    {
        $v2 = explode("=",$v1[$i]);
        if(!preg_match("/[\&]/i",$v2[1])) $array[$v2[0]] = $v2[1];
    }
    
    foreach($array as $key => $value)
    {
        if($value != "")
        {
            if(array_key_exists($key,$L_GET)){ if($L_GET[$key] != $value) $L_GET[$key] = $value; }
            else $L_GET[$key] = $value;
        }
    }
    
    foreach($L_GET as $key => $value) $return .= "$key=$value&";
    
    return substr($return,0,strlen($return)-1);
}
Использовать просто, сохранение языка можно сделать прямо в функцие, а саму функцию вставлять в ссылки после "?". Все работает (вроде бы) хорошо.



Добавлено через 5 минут
Как хотите, так и вертите. Недочеты и прочие проблемы с ф-ей писать мне не надо. ^_^

Добавлено через 2 минуты
Изменил немного:

Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function AddToGet($vars,$dvars)
{
    $v1 = explode("&",$vars);
    $array = array();
    $L_GET = $_GET;
    
    if($dvars != false)
    {
        if($dvars == "all") $L_GET = array();
    }
    
    for($i = 0; $i < count($v1); $i++)
    {
        $v2 = explode("=",$v1[$i]);
        if(!preg_match("/[\&]/i",$v2[1])) $array[$v2[0]] = $v2[1];
    }
    
    foreach($array as $key => $value)
    {
        if($value != "")
        {
            if(array_key_exists($key,$L_GET)){ if($L_GET[$key] != $value) $L_GET[$key] = $value; }
            else $L_GET[$key] = $value;
        }
    }
    
    foreach($L_GET as $key => $value)
    {
        if($value != "") $return .= "$key=$value&";
        else $return .= "$key&";
    }
    
    return substr($return,0,strlen($return)-1);
}


Добавлено через 7 минут
И примерчик:

PHP
1
2
echo "<p><a href='/index.php?". AddToGet("lang=$_GET['lang']&page=news","all") ."'>Главная - Новости</a></p>";
// Превретит из любого адреса в: http://localhost/index.php?lang=ru&page=news. Удаляет любые другие переменные из адреса.
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
14.12.2012, 17:16
не понял в чем разница
PHP
1
echo "<p><a href='/index.php?". AddToGet("lang={$_GET['lang']}&page=news","all") ."'>Главная - Новости</a></p>";
и простого написания
PHP
1
echo "<p><a href='/index.php?lang={$_GET['lang']}&page=news'>Главная - Новости</a></p>";
что твоя функция делает ?
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
14.12.2012, 18:23  [ТС]
Цитата Сообщение от crautcher Посмотреть сообщение
что твоя функция делает ?
Внимательно рассмотрите что в ней за код. Вы вроде лучше меня разбираетесь.

======================================== =============

У меня часто возникают ситуации когда надо оставить определённые переменные, или наоборот добавить их.

Например: ?page=news&numpage=2

Есть ссылка:
HTML5
1
<a href="?limit=30">Отображать по 30</a>
Мне надо их совместить. Это конечно можно проще сделать.

PHP
1
echo "<a href='?page=news&numpage=$_GET[numpage]&limit=30'>Отображать по 30</a>";
Но как же в этом варианте добавить какую нибуть информацию которая независима от страницы? Тоесть на каждой странице присутствует другая ссылка, нажатие по которой покажет нужную информацию (методом GET).

Например:
HTML5
1
<a href="?pageinfo">Показать данные о странице</a>
В зависимости от того, есть ли эта переменная или нет, будет менятся и кнопка.

И как же мне это сделать если нажатие по кнопке сотрет текущий адрес (?page=news&numpage=2&limit=30) ?

Добавлено через 11 минут
Цитата Сообщение от crautcher Посмотреть сообщение
не понял в чем разница
Разница в том что первый код удалить все переменные кроме тех которые остались.
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
14.12.2012, 18:31
Цитата Сообщение от Maksimchikfull Посмотреть сообщение
Например: ?page=news&numpage=2
Есть ссылка:
HTML5
1
<a href="?limit=30">Отображать по 30</a>
Мне надо их совместить.
ну так к адресу добавим
PHP
1
http_build_query($_GET)
и всё
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
14.12.2012, 18:50  [ТС]
crautcher, а удалить?

Добавлено через 2 минуты
И еще. Раньше не могли о ней сказать?!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.12.2012, 18:50
Помогаю со студенческими работами здесь

Как лучше всего организовать движение textView вниз?
Среда разработки - Android Studio. Как лучше всего организовать движение textView вниз? Через отдельный поток вызывать хэндлер и там...

Как лучше организовать систему расчета цены ноутбука
Имеется программа хранения ноутбуков, сами ноутбуки, их характеристики. Естественно что нужно рассчитывать цену на соответствующую модель...

Как лучше организовать файловую структуру хранения новостей на сайте
Как лучше организовать файловую структуру хранения новостей на сайте? Параметры новости: 1. иконка к новости (1 картинка) 2....

С помощью каких языков лучше и качественнее делать постраничную навигацию на сайте
Всем здрасте! С помощью каких языков(js или php)лучше и качественнее делать постраничную навигацию на сайте?

Какую систему ВОЗДУШНОГО охлаждения, лучше всего, использовать? процессор Core I7(второго поколения)
Скажите пожалуйста, какую систему воздушного охлаждения? Полностью с железом ещё не определился, но знаю, что будет, что-то из этого: ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru