Принудительное изменение языка из сценария создания пользовательского аккаунта через URL - PullRequest
1 голос
/ 07 июня 2010

Я создал собственный скрипт «Создание учетной записи», чтобы пользователи могли входить в систему из моего телефонного приложения.

То, что я хочу, - это возможность изменять ответы с сервера в зависимости от их локали. Поэтому, когда я запрашиваю страницу, я бы добавил lang = en или lang = zh и т. Д.

Это работает

http://mysite.com/phone/my_custom_account_creation.php?lang=en

Ответ:

<resource classification="error" code="Error (Code: 500)"> 
<message>Please enter your name:</message> 
</resource>

Это не работает:

http://mysite.com/phone/my_custom_account_creation.php?lang=zh

Ответ:

<resource classification="error" code="Error (Code: 500)"> 
<message>Please enter your name:</message> 
</resource>

Если я захожу в Joomla при установке языка по умолчанию на китайский, он работает.

<resource classification="error" code="Error (Code: 500)"> 
<message>请输入您的姓名。</message> 
</resource>

но

http://mysite.com/phone/my_custom_account_creation.php?lang=en не работает, вместо этого продолжает показывать китайскую версию.

Что я мог бы здесь сделать?

вот код, который я использую для регистрации:

<?php
header ("content-type: text/xml");

/*
 * Register a user from a phone interface using JAVA
 */

define( '_JEXEC', 1 ); 
//define('JPATH_BASE', dirname(__FILE__) );//this is when we are in the root
define('JPATH_BASE', dirname(__FILE__)."/../.." );//this is when we are in the root
define( 'DS', DIRECTORY_SEPARATOR );  

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

//My functions
require_once('../shared_functions.php');

$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();

//Don't use tokens for registration
//JRequest::checkToken() or jexit( 'Invalid Token' );

$user         = clone(JFactory::getUser());
$pathway          = & $mainframe->getPathway();
$config       = & JFactory::getConfig();
$authorize        = & JFactory::getACL();
$document       = & JFactory::getDocument();

$usersConfig = &JComponentHelper::getParams( 'com_users' );
if ($usersConfig->get('allowUserRegistration') == '0')
    {
        xmlError("Access Forbidden (Code 403)","Registration has been temporarily disabled");
        //JError::raiseError( 403, JText::_( 'Access Forbidden' ));
        return;
    }

$newUsertype = $usersConfig->get( 'new_usertype' );
if (!$newUsertype)
    {
        $newUsertype = 'Registered';
    }

if (!$user->bind( JRequest::get('post'), 'usertype' ))
    {
        xmlError("Error (Code: 500)",$user->getError());
        return;
        //JError::raiseError( 500, $user->getError());
    }

$user->set('id', 0);
$user->set('usertype', '');
$user->set('gid', $authorize->get_group_id( '', $newUsertype, 'ARO' ));

$date =& JFactory::getDate();
$user->set('registerDate', $date->toMySQL());


$useractivation = $usersConfig->get( 'useractivation' );
if ($useractivation == '1')
    {
        jimport('joomla.user.helper');
        $user->set('activation', md5( JUserHelper::genRandomPassword()) );
        $user->set('block', '1');
    }

if (!$user->save()) { // if the user is NOT saved...
    xmlError("Error (Code: 500)",$user->getError());
    //JError::raiseWarning('', JText::_( $user->getError())); // ...raise an Warning
    //return false; // if you're in a method/function return false
}


xmlMessage("ok",CODE_ACCOUNT_CREATED,"Success");

?>

1 Ответ

0 голосов
/ 08 июня 2010

Я получил это работает

$lang =& JFactory::getLanguage();
$lang->setLanguage( $_GET['lang'] );
$lang->load();

Я обнаружил, что язык должен быть в полном формате, хотя en-GB или zh-CN

...