Jump to content
  • 0

Мультиязычный сайт


Vombland
 Share

Question

3 answers to this question

Recommended Posts

  • 0

файл конфигурации /config.php

// массив с языками
$language_list = array(
'ru' => 'russian',
'en' => 'english',
'de' => 'german'
);

// язык по умолчанию
$language_default = 'ru';

русский языковой файл /languages/russian.php

DEFINE('_NAME_1','мама');
DEFINE('_NAME_2','мыла');
DEFINE('_NAME_3','раму');

английский языковой файл /languages/english.php

DEFINE('_NAME_1','mom');
DEFINE('_NAME_2','washed ');
DEFINE('_NAME_3','frame');

немецкий языковой файл /languages/german.php

DEFINE('_NAME_1','mama');
DEFINE('_NAME_2','gewaschen ');
DEFINE('_NAME_3','rahmen');

основной файл /index.php

// подключаем файл конфигурации
require_once('config.php');

// получаем язык из адресной строки. если его там нет. то используем язык по умолчанию
$language_site = (isset($_REQUEST['lang'])) ? $_REQUEST['lang'] : $language_default;

// проверяем существует ли ключ в массиве языков
$language_site = (array_key_exists($language_site, $language_list)) ? $language_list[$language_site] : $language_default;

// проверяем существует ли языковой файл и подключаем его
// предполагается что файл по умолчанию существует всегда
if(file_exists('languages/'.$language_list[$language_site].'.php')){
require_once('languages/'.$language_list[$language_site].'.php');
}else{
require_once('languages/'.$language_list[$language_default].'.php');
}

// ну и пример использование
echo _NAME_1 . ' ' . _NAME_2 . ' ' . _NAME_3;

Edited by Gold Dragon
Link to comment
Share on other sites

  • 0

Я как-то заморочился и мутил такую реализацию:

1. В базе таблица, вроде такой:

id | code | value | default_value | lang_id |

и ещё такой

id | lang_code | title |

2. Движок работал на xml+xsl, в шаблонах xsl были прописаны все-все штуки, в виде переменных которые должны зависеть от локали (у меня она передавалась в GET: ?lang=ru.

3. Массив слов выдергивался из базы и писался в файлики вида:

public_html/cache/lang/main_title.ru

или

public_html/cache/lang/new_user.en

в каждом таком файлике - перевод той или иной сущности, расширение, как нетрудно догадаться, код языка

4. Была написана функция, которая дёргает это добро из файлов и прикручивает к xml-дереву ветку с нужным переводом.

5. Файлы перезаписываются, когда в админке происходит редактирование языковых переменных.

6. Всё это работало, но энтузиазм иссяк, когда я понял, что в ручную набиваю русско-английский словарь, слов на 20 000, руками, через админку))

PS: паблика эта красота так и не увидела, т.к. написать в одиночку свою cms с нуля оказалось делом не подъёмным :dash:

PSS: эх, вспомнить приятно все эти изыскания... сколько всякой хрени было понаписано :lol:

Edited by Быколай
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy