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. |
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'])); }