Merge pull request #1390 from Anahkiasen/feature/url_language
Add URL::to_language and HTML::link_to_language localization helpers
This commit is contained in:
commit
358e8abde6
|
@ -59,6 +59,17 @@ #### Generating a URL to an action with wildcard values:
|
||||||
|
|
||||||
$url = URL::to_action('user@profile', array($username));
|
$url = URL::to_action('user@profile', array($username));
|
||||||
|
|
||||||
|
<a name="urls-to-a-different-language"></a>
|
||||||
|
## URLs To A Different Language
|
||||||
|
|
||||||
|
#### Generating a URL to the same page in another language:
|
||||||
|
|
||||||
|
$url = URL::to_language('fr');
|
||||||
|
|
||||||
|
#### Generating a URL to your home page in another language:
|
||||||
|
|
||||||
|
$url = URL::to_language('fr', true);
|
||||||
|
|
||||||
<a name="urls-to-assets"></a>
|
<a name="urls-to-assets"></a>
|
||||||
## URLs To Assets
|
## URLs To Assets
|
||||||
|
|
||||||
|
|
|
@ -87,6 +87,17 @@ ### Generating a link to a controller action with wildcard values:
|
||||||
|
|
||||||
echo HTML::link_to_action('user@profile', 'User Profile', array($username));
|
echo HTML::link_to_action('user@profile', 'User Profile', array($username));
|
||||||
|
|
||||||
|
<a name="links-to-a-different-language"></a>
|
||||||
|
## Links To A Different Language
|
||||||
|
|
||||||
|
#### Generating a link to the same page in another language:
|
||||||
|
|
||||||
|
echo HTML::link_to_language('fr');
|
||||||
|
|
||||||
|
#### Generating a link to your home page another language
|
||||||
|
|
||||||
|
echo HTML::link_to_language('fr', true);
|
||||||
|
|
||||||
<a name="mail-to-links"></a>
|
<a name="mail-to-links"></a>
|
||||||
## Mail-To Links
|
## Mail-To Links
|
||||||
|
|
||||||
|
|
|
@ -247,6 +247,19 @@ public static function link_to_action($action, $title = null, $parameters = arra
|
||||||
return static::link(URL::to_action($action, $parameters), $title, $attributes);
|
return static::link(URL::to_action($action, $parameters), $title, $attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate an HTML link to a different language
|
||||||
|
*
|
||||||
|
* @param string $language
|
||||||
|
* @param string $title
|
||||||
|
* @param array $attributes
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function link_to_language($language, $title = null, $attributes = array())
|
||||||
|
{
|
||||||
|
return static::link(URL::to_language($language), $title, $attributes);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate an HTML mailto link.
|
* Generate an HTML mailto link.
|
||||||
*
|
*
|
||||||
|
@ -356,7 +369,7 @@ private static function listing($type, $list, $attributes = array())
|
||||||
|
|
||||||
return '<'.$type.static::attributes($attributes).'>'.$html.'</'.$type.'>';
|
return '<'.$type.static::attributes($attributes).'>'.$html.'</'.$type.'>';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate a definition list.
|
* Generate a definition list.
|
||||||
*
|
*
|
||||||
|
@ -369,13 +382,13 @@ public static function dl($list, $attributes = array())
|
||||||
$html = '';
|
$html = '';
|
||||||
|
|
||||||
if (count($list) == 0) return $html;
|
if (count($list) == 0) return $html;
|
||||||
|
|
||||||
foreach ($list as $term => $description)
|
foreach ($list as $term => $description)
|
||||||
{
|
{
|
||||||
$html .= '<dt>'.static::entities($term).'</dt>';
|
$html .= '<dt>'.static::entities($term).'</dt>';
|
||||||
$html .= '<dd>'.static::entities($description).'</dd>';
|
$html .= '<dd>'.static::entities($description).'</dd>';
|
||||||
}
|
}
|
||||||
|
|
||||||
return '<dl'.static::attributes($attributes).'>'.$html.'</dl>';
|
return '<dl'.static::attributes($attributes).'>'.$html.'</dl>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -106,6 +106,26 @@ public function testToRouteMethodGeneratesURLsToRoutes()
|
||||||
$this->assertEquals('http://localhost/index.php/url/test/taylor/otwell', URL::to_route('url-test-2', array('taylor', 'otwell')));
|
$this->assertEquals('http://localhost/index.php/url/test/taylor/otwell', URL::to_route('url-test-2', array('taylor', 'otwell')));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test the URL::to_language method.
|
||||||
|
*
|
||||||
|
* @group laravel
|
||||||
|
*/
|
||||||
|
public function testToLanguageMethodGeneratesURLsToDifferentLanguage()
|
||||||
|
{
|
||||||
|
URI::$uri = 'foo/bar';
|
||||||
|
Config::set('application.languages', array('sp', 'fr'));
|
||||||
|
Config::set('application.language', 'sp');
|
||||||
|
|
||||||
|
$this->assertEquals('http://localhost/index.php/fr/foo/bar', URL::to_language('fr'));
|
||||||
|
$this->assertEquals('http://localhost/index.php/fr/', URL::to_language('fr', true));
|
||||||
|
|
||||||
|
Config::set('application.index', '');
|
||||||
|
$this->assertEquals('http://localhost/fr/foo/bar', URL::to_language('fr'));
|
||||||
|
|
||||||
|
$this->assertEquals('http://localhost/sp/foo/bar', URL::to_language('en'));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test language based URL generation.
|
* Test language based URL generation.
|
||||||
|
|
|
@ -294,6 +294,31 @@ public static function to_route($name, $parameters = array())
|
||||||
return static::to($uri, $https);
|
return static::to($uri, $https);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the URL to switch language, keeping the current page or not
|
||||||
|
*
|
||||||
|
* @param string $language The new language
|
||||||
|
* @param boolean $reset Whether navigation should be reset
|
||||||
|
* @return string An URL
|
||||||
|
*/
|
||||||
|
public static function to_language($language, $reset = false)
|
||||||
|
{
|
||||||
|
// Get the url to use as base
|
||||||
|
$url = $reset ? URL::home() : URL::to(URI::current());
|
||||||
|
|
||||||
|
// Validate the language
|
||||||
|
if (!in_array($language, Config::get('application.languages')))
|
||||||
|
{
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the language we're switching from and the one we're going to
|
||||||
|
$from = '/'.Config::get('application.language').'/';
|
||||||
|
$to = '/'.$language.'/';
|
||||||
|
|
||||||
|
return str_replace($from, $to, $url);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Substitute the parameters in a given URI.
|
* Substitute the parameters in a given URI.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue