Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Вывод lang переменных на другой сайт связанных с ипб

Опубликовано:

Предисловие:

Есть самописный портал к которому привязан IPBoard. С портала можно зарегистрироваться, авторизоваться, сменить пароль и выйти из IPB не заходя на сам форум. Так же на данный портал выводится некоторая информация из IPB типа новости, галерея, профиль и тд и тп..

 

Встала нужда добавить 2 языка: Английский и Русский. Сменить язык с этого портала я могу, а так же проверить какой язык у пользователя и какой язык стоит у системы по дефолту тоже.

Но я не хочу выдумывать велосипед и создавать новые lang файлы для этого портала. Мне удобнее дописать файлы lang ipb и уже из них вывести информацию в зависимости от языка пользователя.

 

Нужна ваша помощь в выдергивание функции которая работает с lang файлами в ipb или же ее подгрузка в портал, а следом вывод переменных из массивов lang файлов. Что бы я мог скажем использовать следующее:

<? echo $this->lang->words['title']; ?> Если стоит русский язык. Выводит русский текст, а если стоит английский, то английский текст.

Просто иначе придется писать:

<? if ($lang_user == 1) { echo $lang->ru['title']; } else {echo $lang->en['title']; } и работать со своими lang файлами.

Способ в принципе такой же, но кода в 2 раза больше. Конечно можно написать функцию и облегчить его до уровня первого варианта, но зачем? Оно уже есть в IPB.

Убил пару часов, но так ничего вывести у меня не получилось из lang файлов IPB.

 

Может кто работал и сможет мне помочь.

 

Спасибо за внимание.

Рекомендованные сообщения

Опубликовано:

$this->lang->loadLanguageFile( array( 'PACK_NAME' ), 'APP_KEY' );

 

PACK_NAME - имя пака где находятся языковые строки

APP_KEY - имя приложения

Опубликовано:
  • Автор

Спасибо, но не получилось.

 

Сделал так, решил для теста вывести хоть что то вот мой код:

 

<?
define('FORUM_PATH', $_SERVER['DOCUMENT_ROOT'].$forum.'/');
require_once( FORUM_PATH . 'initdata.php' );
require_once( FORUM_PATH . 'admin/api/member/api_member_login.php' );
require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );
require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' );
require_once( IPS_ROOT_PATH . 'sources/classes/class_localization.php' );//Класс подгрузил на всякий случай, но и без него не так и не сяк не работает.
$ipbRegistry = ipsRegistry::instance();
$ipbRegistry->init();
$DB         =  $ipbRegistry->DB();
$settings   =& $ipbRegistry->fetchSettings();
$request    =& $ipbRegistry->fetchRequest();
$lang       =  $ipbRegistry->getClass('class_localization');
$ipb_test_lang = $lang->loadLanguageFile( array( 'public_online' ), 'members' );
?>

 

Вывод делаю так:

<? echo $ipb_test_lang['online_page_title']; ?>

Но ничего не выводит. Где я сделал ошибку? Переменные $DB, $settings, $request используются нормально.

Опубликовано:

А для чего Вы присваиваете

$ipb_test_lang = $lang->loadLanguageFile( array( 'public_online' ), 'members' );

 

Вывод

$lang->words['online_page_title']

Опубликовано:
$lang->loadLanguageFile( array( 'public_online' ), 'members' );
print_r($lang->words);

Опубликовано:
  • Автор

Ну вообще думал с целью использовать скажем разные боксы под это дело.

Например для страница новостей портала loadLanguageFile( array( 'news' ), 'portal' )

Для страницы регистрации loadLanguageFile( array( 'regs' ), 'portal' )

 

И так далее. А так получится что придется разные переменные задавать или нет?

 

А и да оно заработало)

Изменено пользователем Pastuh

Опубликовано:

loadLanguageFile только подгружает указанные лэнг-паки, включая глобальный, если он не подгружен. И все.

Например для страница новостей портала loadLanguageFile( array( 'news' ), 'portal' )

Для страницы регистрации loadLanguageFile( array( 'regs' ), 'portal' )

Для одного и того же приложения, можете в массиве указывать PACK_NAME

$lang->loadLanguageFile( array( 'news', 'regs' ), 'portal' );

 

И так далее. А так получится что придется разные переменные задавать или нет?
Нет.
Опубликовано:
  • Автор

А хорошо спасибо понял тогда. Можно закрывать.

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.