getPreferredLanguage() public method

The language resolution is based on the user preferred languages and the languages supported by the application. The method will try to find the best match.
public getPreferredLanguage ( array $languages = [] ) : string
$languages array a list of the languages supported by the application. If this is empty, the current application language will be returned without further processing.
return string the language that the application should use.
Example #1
0
 public function testPrefferedLanguage()
 {
     $this->mockApplication(['language' => 'en']);
     $request = new Request();
     $request->acceptableLanguages = [];
     $this->assertEquals('en', $request->getPreferredLanguage());
     $request = new Request();
     $request->acceptableLanguages = ['de'];
     $this->assertEquals('en', $request->getPreferredLanguage());
     $request = new Request();
     $request->acceptableLanguages = ['en-us', 'de', 'ru-RU'];
     $this->assertEquals('en', $request->getPreferredLanguage(['en']));
     $request = new Request();
     $request->acceptableLanguages = ['en-us', 'de', 'ru-RU'];
     $this->assertEquals('de', $request->getPreferredLanguage(['ru', 'de']));
     $this->assertEquals('de-DE', $request->getPreferredLanguage(['ru', 'de-DE']));
     $request = new Request();
     $request->acceptableLanguages = ['en-us', 'de', 'ru-RU'];
     $this->assertEquals('de', $request->getPreferredLanguage(['de', 'ru']));
     $request = new Request();
     $request->acceptableLanguages = ['en-us', 'de', 'ru-RU'];
     $this->assertEquals('ru-ru', $request->getPreferredLanguage(['ru-ru']));
     $request = new Request();
     $request->acceptableLanguages = ['en-us', 'de'];
     $this->assertEquals('ru-ru', $request->getPreferredLanguage(['ru-ru', 'pl']));
     $this->assertEquals('ru-RU', $request->getPreferredLanguage(['ru-RU', 'pl']));
     $request = new Request();
     $request->acceptableLanguages = ['en-us', 'de'];
     $this->assertEquals('pl', $request->getPreferredLanguage(['pl', 'ru-ru']));
 }