diff options
author | 2019-05-31 23:52:21 -0700 | |
---|---|---|
committer | 2019-06-03 03:02:43 +0000 | |
commit | 4c3da0f8a4e3db7ae6a0dff3888d7faab3198bb1 (patch) | |
tree | 6f5c9d8f14fc1e82ab6eab99bbfe81ab91cb2b8d | |
parent | e7ac92cd7d47c53feb70e0ef3fd820affee87863 (diff) |
[aapt2] Pseudolocalize <plurals> values.
(.won slaer roF)
Bug: 134190774
Test: aapt2_tests
Change-Id: If307af4adfb1d556c41d7cb08590d1c25287f992
-rw-r--r-- | tools/aapt2/compile/PseudolocaleGenerator.cpp | 2 | ||||
-rw-r--r-- | tools/aapt2/compile/PseudolocaleGenerator_test.cpp | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/tools/aapt2/compile/PseudolocaleGenerator.cpp b/tools/aapt2/compile/PseudolocaleGenerator.cpp index c5de9e058907..5e0300b3071b 100644 --- a/tools/aapt2/compile/PseudolocaleGenerator.cpp +++ b/tools/aapt2/compile/PseudolocaleGenerator.cpp @@ -231,7 +231,7 @@ class Visitor : public ValueVisitor { Visitor sub_visitor(pool_, method_); if (plural->values[i]) { plural->values[i]->Accept(&sub_visitor); - if (sub_visitor.value) { + if (sub_visitor.item) { localized->values[i] = std::move(sub_visitor.item); } else { localized->values[i] = std::unique_ptr<Item>(plural->values[i]->Clone(pool_)); diff --git a/tools/aapt2/compile/PseudolocaleGenerator_test.cpp b/tools/aapt2/compile/PseudolocaleGenerator_test.cpp index 31358020ab60..e816c86e20a8 100644 --- a/tools/aapt2/compile/PseudolocaleGenerator_test.cpp +++ b/tools/aapt2/compile/PseudolocaleGenerator_test.cpp @@ -234,6 +234,27 @@ TEST(PseudolocaleGeneratorTest, PseudolocalizeOnlyDefaultConfigs) { test::ParseConfigOrDie("ar-rXB"))); } +TEST(PseudolocaleGeneratorTest, PluralsArePseudolocalized) { + std::unique_ptr<IAaptContext> context = test::ContextBuilder().Build(); + std::unique_ptr<ResourceTable> table = + test::ResourceTableBuilder().SetPackageId("com.pkg", 0x7F).Build(); + std::unique_ptr<Plural> plural = util::make_unique<Plural>(); + plural->values = {util::make_unique<String>(table->string_pool.MakeRef("zero")), + util::make_unique<String>(table->string_pool.MakeRef("one"))}; + ASSERT_TRUE(table->AddResource(test::ParseNameOrDie("com.pkg:plurals/foo"), ConfigDescription{}, + {}, std::move(plural), context->GetDiagnostics())); + std::unique_ptr<Plural> expected = util::make_unique<Plural>(); + expected->values = {util::make_unique<String>(table->string_pool.MakeRef("[žéŕö one]")), + util::make_unique<String>(table->string_pool.MakeRef("[öñé one]"))}; + + PseudolocaleGenerator generator; + ASSERT_TRUE(generator.Consume(context.get(), table.get())); + + const auto* actual = test::GetValueForConfig<Plural>(table.get(), "com.pkg:plurals/foo", + test::ParseConfigOrDie("en-rXA")); + EXPECT_TRUE(actual->Equals(expected.get())); +} + TEST(PseudolocaleGeneratorTest, RespectUntranslateableSections) { std::unique_ptr<IAaptContext> context = test::ContextBuilder().SetCompilationPackage("android").Build(); |