Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 416879f3 authored by Donald Chai's avatar Donald Chai Committed by android-build-merger
Browse files

Merge "[aapt2] Pseudolocalize <plurals> values." am: a5e26c95

am: 735aaa63

Change-Id: Id1b6e3f5b28f86e73a74edf2428784aaba472ee3
parents b2615c49 735aaa63
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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_));
+21 −0
Original line number Diff line number Diff line
@@ -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();