fix appinfo parsing when a single localized option is provided

Signed-off-by: Robin Appelman <robin@icewind.nl>
This commit is contained in:
Robin Appelman 2018-04-12 12:28:25 +02:00 committed by Morris Jobke
parent 63dfbb2127
commit 46d0d0cda1
No known key found for this signature in database
GPG key ID: FE03C3A163FEDE68
4 changed files with 34 additions and 0 deletions

View file

@ -1004,6 +1004,11 @@ class OC_App {
}
protected static function findBestL10NOption(array $options, string $lang): string {
// only a single option
if (isset($options['@value'])) {
return $options['@value'];
}
$fallback = $similarLangFallback = $englishFallback = false;
$lang = strtolower($lang);

View file

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<info>
<id>files_encryption</id>
<name>Server-side Encryption</name>
<description lang="en">English</description>
<description lang="de">German</description>
<licence>AGPL</licence>
</info>

View file

@ -0,0 +1,7 @@
<?xml version="1.0"?>
<info>
<id>files_encryption</id>
<name>Server-side Encryption</name>
<description lang="en">English</description>
<licence>AGPL</licence>
</info>

View file

@ -9,6 +9,7 @@
namespace Test;
use OC\App\InfoParser;
use OC\AppConfig;
use OCP\IAppConfig;
@ -592,5 +593,18 @@ class AppTest extends \Test\TestCase {
public function testParseAppInfo(array $data, array $expected) {
$this->assertSame($expected, \OC_App::parseAppInfo($data));
}
public function testParseAppInfoL10N() {
$parser = new InfoParser();
$data = $parser->parse(\OC::$SERVERROOT. "/tests/data/app/description-multi-lang.xml");
$this->assertEquals('English', \OC_App::parseAppInfo($data, 'en')['description']);
$this->assertEquals('German', \OC_App::parseAppInfo($data, 'de')['description']);
}
public function testParseAppInfoL10NSingleLanguage() {
$parser = new InfoParser();
$data = $parser->parse(\OC::$SERVERROOT. "/tests/data/app/description-single-lang.xml");
$this->assertEquals('English', \OC_App::parseAppInfo($data, 'en')['description']);
}
}