You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/03/29 16:14:15 UTC
isis git commit: ISIS-1123: member group names now also translated.
Repository: isis
Updated Branches:
refs/heads/master 0be6486e8 -> b5cbbb3eb
ISIS-1123: member group names now also translated.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/b5cbbb3e
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/b5cbbb3e
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/b5cbbb3e
Branch: refs/heads/master
Commit: b5cbbb3eb05c0ec7c90f7d394f0ece80c9f12508
Parents: 0be6486
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sun Mar 29 15:13:42 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sun Mar 29 15:13:42 2015 +0100
----------------------------------------------------------------------
.../members/order/MemberOrderFacetAbstract.java | 35 +++++-
.../annotprop/MemberOrderFacetAnnotation.java | 8 +-
.../annotprop/MemberOrderFacetFactory.java | 31 ++++-
.../annotprop/MemberOrderFacetProperties.java | 16 ++-
.../ordering/memberorder/DeweyOrderSetTest.java | 120 +++++++++++--------
.../MemberOrderAnnotationFacetFactoryTest.java | 42 +++++++
.../memberorder/MemberOrderComparatorTest.java | 90 +++++++++-----
.../src/main/webapp/WEB-INF/translations-en.po | 19 +++
.../src/main/webapp/WEB-INF/translations-es.po | 14 +++
.../src/main/webapp/WEB-INF/translations-nl.po | 18 ++-
.../src/main/webapp/WEB-INF/translations.po | 10 ++
11 files changed, 303 insertions(+), 100 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/b5cbbb3e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/MemberOrderFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/MemberOrderFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/MemberOrderFacetAbstract.java
index 365e48c..36436c5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/MemberOrderFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/MemberOrderFacetAbstract.java
@@ -20,29 +20,52 @@
package org.apache.isis.core.metamodel.facets.members.order;
import com.google.common.base.Strings;
-
+import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.MultipleValueFacetAbstract;
-import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
public abstract class MemberOrderFacetAbstract extends MultipleValueFacetAbstract implements MemberOrderFacet {
+
public static Class<? extends Facet> type() {
return MemberOrderFacet.class;
}
private final String name;
private final String sequence;
+ private final TranslationService translationService;
- public MemberOrderFacetAbstract(final String name, final String sequence, final FacetHolder holder) {
+ public MemberOrderFacetAbstract(
+ final String name,
+ final String sequence,
+ final TranslationService translationService,
+ final FacetHolder holder) {
super(type(), holder);
- this.name = valueElse(name, "");
+ this.translationService = translationService;
+ this.name = translatedValueElse(name, "");
this.sequence = valueElse(sequence, "1");
}
- private static String valueElse(final String name, final String string) {
- return !Strings.isNullOrEmpty(name) ? name : string;
+ private String translatedValueElse(final String name, final String defaultValue) {
+ final boolean nullOrEmpty = Strings.isNullOrEmpty(name);
+ if (nullOrEmpty) {
+ return defaultValue;
+ } else {
+ final IdentifiedHolder identifiedHolder = (IdentifiedHolder) getFacetHolder();
+ final String context = identifiedHolder.getIdentifier().getClassName();
+ return translationService.translate(context, name);
+ }
+ }
+
+ private static String valueElse(final String name, final String defaultValue) {
+ final boolean nullOrEmpty = Strings.isNullOrEmpty(name);
+ if (nullOrEmpty) {
+ return defaultValue;
+ } else {
+ return name;
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/b5cbbb3e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetAnnotation.java
index f9fcb11..eda0ace 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetAnnotation.java
@@ -19,13 +19,17 @@
package org.apache.isis.core.metamodel.facets.members.order.annotprop;
+import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacetAbstract;
public class MemberOrderFacetAnnotation extends MemberOrderFacetAbstract {
- public MemberOrderFacetAnnotation(final String name, final String sequence, final FacetHolder holder) {
- super(name, sequence, holder);
+ public MemberOrderFacetAnnotation(
+ final String name,
+ final String sequence,
+ final TranslationService translationService, final FacetHolder holder) {
+ super(name, sequence, translationService, holder);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b5cbbb3e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
index 991bcfa..f45e6e0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets.members.order.annotprop;
import java.util.Properties;
import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -29,8 +30,12 @@ import org.apache.isis.core.metamodel.facets.Annotations;
import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
-public class MemberOrderFacetFactory extends FacetFactoryAbstract implements ContributeeMemberFacetFactory {
+public class MemberOrderFacetFactory extends FacetFactoryAbstract implements ContributeeMemberFacetFactory, ServicesInjectorAware {
+
+ private ServicesInjector servicesInjector;
public MemberOrderFacetFactory() {
super(FeatureType.MEMBERS);
@@ -56,7 +61,7 @@ public class MemberOrderFacetFactory extends FacetFactoryAbstract implements Con
FacetUtil.addFacet(memberOrderFacet);
}
- private static MemberOrderFacet createFromMetadataPropertiesIfPossible(
+ private MemberOrderFacet createFromMetadataPropertiesIfPossible(
final ProcessContextWithMetadataProperties<? extends FacetHolder> pcwmp) {
final FacetHolder holder = pcwmp.getFacetHolder();
@@ -64,17 +69,33 @@ public class MemberOrderFacetFactory extends FacetFactoryAbstract implements Con
final MemberOrderFacet memberOrderFacet;
final Properties properties = pcwmp.metadataProperties("memberOrder");
if(properties != null) {
- memberOrderFacet = new MemberOrderFacetProperties(properties, holder);
+ memberOrderFacet = new MemberOrderFacetProperties(
+ properties,
+ servicesInjector.lookupService(TranslationService.class),
+ holder);
} else {
memberOrderFacet = null;
}
return memberOrderFacet;
}
- private static MemberOrderFacet createFromAnnotationIfPossible(final ProcessMethodContext processMethodContext) {
+ private MemberOrderFacet createFromAnnotationIfPossible(final ProcessMethodContext processMethodContext) {
final MemberOrder annotation = Annotations.getAnnotation(processMethodContext.getMethod(), MemberOrder.class);
- return annotation != null ? new MemberOrderFacetAnnotation(annotation.name(), annotation.sequence(), processMethodContext.getFacetHolder()) : null;
+ if (annotation != null) {
+ return new MemberOrderFacetAnnotation(
+ annotation.name(),
+ annotation.sequence(),
+ servicesInjector.lookupService(TranslationService.class),
+ processMethodContext.getFacetHolder());
+ }
+ else {
+ return null;
+ }
}
+ @Override
+ public void setServicesInjector(final ServicesInjector servicesInjector) {
+ this.servicesInjector = servicesInjector;
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b5cbbb3e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetProperties.java
index 8132c8c..b5cb9ae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetProperties.java
@@ -21,25 +21,29 @@ package org.apache.isis.core.metamodel.facets.members.order.annotprop;
import java.util.Properties;
+import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacetAbstract;
public class MemberOrderFacetProperties extends MemberOrderFacetAbstract {
- public MemberOrderFacetProperties(Properties properties, FacetHolder holder) {
- this(name(properties), sequence(properties), holder);
+ public MemberOrderFacetProperties(
+ final Properties properties,
+ final TranslationService translationService,
+ final FacetHolder holder) {
+ this(name(properties), sequence(properties), translationService, holder);
}
- private static String sequence(Properties properties) {
+ private static String sequence(final Properties properties) {
return properties.getProperty("sequence");
}
- private static String name(Properties properties) {
+ private static String name(final Properties properties) {
return properties.getProperty("name");
}
- private MemberOrderFacetProperties(final String name, final String sequence, final FacetHolder holder) {
- super(name, sequence, holder);
+ private MemberOrderFacetProperties(final String name, final String sequence, final TranslationService translationService, final FacetHolder holder) {
+ super(name, sequence, translationService, holder);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b5cbbb3e/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/DeweyOrderSetTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/DeweyOrderSetTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/DeweyOrderSetTest.java
index df51c51..bb194ba 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/DeweyOrderSetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/DeweyOrderSetTest.java
@@ -20,16 +20,20 @@
package org.apache.isis.core.metamodel.facets.ordering.memberorder;
import java.util.List;
-
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
import com.google.common.collect.ImmutableList;
-
+import org.hamcrest.Description;
+import org.jmock.Expectations;
+import org.jmock.api.Action;
+import org.jmock.api.Invocation;
+import org.junit.Rule;
+import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.layout.DeweyOrderSet;
import org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation;
+import org.apache.isis.core.metamodel.layout.DeweyOrderSet;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
public class DeweyOrderSetTest extends TestCase {
@@ -74,8 +78,28 @@ public class DeweyOrderSetTest extends TestCase {
private final List<IdentifiedHolder> nameAndAddressMembers = ImmutableList.of(lastNameMember, firstNameMember, houseNumberMember, streetNameMember, postalTownMember);
private final List<IdentifiedHolder> lastNameFirstNameAndPostalTown = ImmutableList.of(lastNameMember, firstNameMember, postalTownMember);
+ TranslationService mockTranslationService;
+
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
+
@Override
protected void setUp() {
+ mockTranslationService = context.mock(TranslationService.class);
+ context.checking(new Expectations() {{
+ allowing(mockTranslationService).translate(with(any(String.class)), with(any(String.class)));
+ will(new Action() {
+ @Override
+ public Object invoke(final Invocation invocation) throws Throwable {
+ return invocation.getParameter(1);
+ }
+
+ @Override
+ public void describeTo(final Description description) {
+ description.appendText("Returns parameter #1");
+ }
+ });
+ }});
}
@@ -84,8 +108,8 @@ public class DeweyOrderSetTest extends TestCase {
}
public void testDefaultGroup() {
- lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", lastNameMember));
- firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", firstNameMember));
+ lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, lastNameMember));
+ firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, firstNameMember));
final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(lastNameAndFirstName);
assertEquals("", orderSet.getGroupName());
@@ -94,8 +118,8 @@ public class DeweyOrderSetTest extends TestCase {
}
public void testDefaultGroupSize() {
- lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", lastNameMember));
- firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", firstNameMember));
+ lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, lastNameMember));
+ firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, firstNameMember));
final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(lastNameAndFirstName);
assertEquals(2, orderSet.size());
@@ -104,8 +128,8 @@ public class DeweyOrderSetTest extends TestCase {
}
public void testDefaultGroupTwoMembersSorted() {
- lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", lastNameMember));
- firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", firstNameMember));
+ lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, lastNameMember));
+ firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, firstNameMember));
final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(lastNameAndFirstName);
assertEquals(lastNameMember, orderSet.elementList().get(0));
@@ -113,8 +137,8 @@ public class DeweyOrderSetTest extends TestCase {
}
public void testTwoMembersAtDefaultGroupOtherWay() {
- lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", lastNameMember));
- firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", firstNameMember));
+ lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, lastNameMember));
+ firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, firstNameMember));
final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(lastNameAndFirstName);
assertEquals(firstNameMember, orderSet.elementList().get(0));
@@ -122,11 +146,11 @@ public class DeweyOrderSetTest extends TestCase {
}
public void testWithChildGroupDefaultGroupName() {
- lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", lastNameMember));
- firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", firstNameMember));
- houseNumberMember.addFacet(new MemberOrderFacetAnnotation("address", "1", houseNumberMember));
- streetNameMember.addFacet(new MemberOrderFacetAnnotation("address", "2", streetNameMember));
- postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "3", postalTownMember));
+ lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, lastNameMember));
+ firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, firstNameMember));
+ houseNumberMember.addFacet(new MemberOrderFacetAnnotation("address", "1", mockTranslationService, houseNumberMember));
+ streetNameMember.addFacet(new MemberOrderFacetAnnotation("address", "2", mockTranslationService, streetNameMember));
+ postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "3", mockTranslationService, postalTownMember));
final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(nameAndAddressMembers);
assertEquals("", orderSet.getGroupName());
@@ -135,11 +159,11 @@ public class DeweyOrderSetTest extends TestCase {
}
public void testWithChildGroupSize() {
- lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", lastNameMember));
- firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", firstNameMember));
- houseNumberMember.addFacet(new MemberOrderFacetAnnotation("address", "1", houseNumberMember));
- streetNameMember.addFacet(new MemberOrderFacetAnnotation("address", "2", streetNameMember));
- postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "3", postalTownMember));
+ lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, lastNameMember));
+ firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, firstNameMember));
+ houseNumberMember.addFacet(new MemberOrderFacetAnnotation("address", "1", mockTranslationService, houseNumberMember));
+ streetNameMember.addFacet(new MemberOrderFacetAnnotation("address", "2", mockTranslationService, streetNameMember));
+ postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "3", mockTranslationService, postalTownMember));
final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(nameAndAddressMembers);
assertEquals(1, orderSet.children().size());
@@ -147,11 +171,11 @@ public class DeweyOrderSetTest extends TestCase {
}
public void testWithChildGroupChildsGroupName() {
- lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", lastNameMember));
- firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", firstNameMember));
- houseNumberMember.addFacet(new MemberOrderFacetAnnotation("address", "1", houseNumberMember));
- streetNameMember.addFacet(new MemberOrderFacetAnnotation("address", "2", streetNameMember));
- postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "3", postalTownMember));
+ lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, lastNameMember));
+ firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, firstNameMember));
+ houseNumberMember.addFacet(new MemberOrderFacetAnnotation("address", "1", mockTranslationService, houseNumberMember));
+ streetNameMember.addFacet(new MemberOrderFacetAnnotation("address", "2", mockTranslationService, streetNameMember));
+ postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "3", mockTranslationService, postalTownMember));
final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(nameAndAddressMembers);
final List<?> children = orderSet.children();
@@ -162,11 +186,11 @@ public class DeweyOrderSetTest extends TestCase {
}
public void testWithChildGroupChildsGroupSize() {
- lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", lastNameMember));
- firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", firstNameMember));
- houseNumberMember.addFacet(new MemberOrderFacetAnnotation("address", "1", houseNumberMember));
- streetNameMember.addFacet(new MemberOrderFacetAnnotation("address", "2", streetNameMember));
- postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "3", postalTownMember));
+ lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, lastNameMember));
+ firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, firstNameMember));
+ houseNumberMember.addFacet(new MemberOrderFacetAnnotation("address", "1", mockTranslationService, houseNumberMember));
+ streetNameMember.addFacet(new MemberOrderFacetAnnotation("address", "2", mockTranslationService, streetNameMember));
+ postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "3", mockTranslationService, postalTownMember));
final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(nameAndAddressMembers);
final DeweyOrderSet childOrderSet = orderSet.children().get(0);
@@ -175,11 +199,11 @@ public class DeweyOrderSetTest extends TestCase {
}
public void testWithChildGroupChildsGroupElementOrdering() {
- lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", lastNameMember));
- firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", firstNameMember));
- houseNumberMember.addFacet(new MemberOrderFacetAnnotation("address", "6", houseNumberMember));
- streetNameMember.addFacet(new MemberOrderFacetAnnotation("address", "5", streetNameMember));
- postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "4", postalTownMember));
+ lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, lastNameMember));
+ firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, firstNameMember));
+ houseNumberMember.addFacet(new MemberOrderFacetAnnotation("address", "6", mockTranslationService, houseNumberMember));
+ streetNameMember.addFacet(new MemberOrderFacetAnnotation("address", "5", mockTranslationService, streetNameMember));
+ postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "4", mockTranslationService, postalTownMember));
final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(nameAndAddressMembers);
final DeweyOrderSet childOrderSet = orderSet.children().get(0);
@@ -189,11 +213,11 @@ public class DeweyOrderSetTest extends TestCase {
}
public void testWithChildGroupOrderedAtEnd() {
- houseNumberMember.addFacet(new MemberOrderFacetAnnotation("address", "6", houseNumberMember));
- streetNameMember.addFacet(new MemberOrderFacetAnnotation("address", "5", streetNameMember));
- postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "4", postalTownMember));
- lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "3", lastNameMember));
- firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", firstNameMember));
+ houseNumberMember.addFacet(new MemberOrderFacetAnnotation("address", "6", mockTranslationService, houseNumberMember));
+ streetNameMember.addFacet(new MemberOrderFacetAnnotation("address", "5", mockTranslationService, streetNameMember));
+ postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "4", mockTranslationService, postalTownMember));
+ lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "3", mockTranslationService, lastNameMember));
+ firstNameMember.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, firstNameMember));
final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(nameAndAddressMembers);
assertEquals(firstNameMember, orderSet.elementList().get(0));
@@ -213,16 +237,16 @@ public class DeweyOrderSetTest extends TestCase {
}
public void testDefaultGroupMixOfAnnotatedAndNotSize() {
- lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", lastNameMember));
- postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "2", postalTownMember));
+ lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, lastNameMember));
+ postalTownMember.addFacet(new MemberOrderFacetAnnotation("address", "2", mockTranslationService, postalTownMember));
final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(lastNameFirstNameAndPostalTown);
assertEquals(3, orderSet.elementList().size());
}
public void testDefaultGroupMixOfAnnotatedAndNotOrderedWithAnnotatedFirst() {
- lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", lastNameMember));
- postalTownMember.addFacet(new MemberOrderFacetAnnotation("", "2", postalTownMember));
+ lastNameMember.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, lastNameMember));
+ postalTownMember.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, postalTownMember));
final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(lastNameFirstNameAndPostalTown);
http://git-wip-us.apache.org/repos/asf/isis/blob/b5cbbb3e/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java
index 9cec106..0de1f3e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java
@@ -22,23 +22,65 @@ package org.apache.isis.core.metamodel.facets.ordering.memberorder;
import java.lang.reflect.Method;
import java.util.Collection;
+import org.hamcrest.Description;
+import org.jmock.Expectations;
+import org.jmock.api.Action;
+import org.jmock.api.Invocation;
+import org.junit.Rule;
import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation;
import org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetFactory;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
public class MemberOrderAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
private MemberOrderFacetFactory facetFactory;
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
+
+ TranslationService mockTranslationService;
+
+ ServicesInjector mockServicesInjector;
+
@Override
protected void setUp() throws Exception {
super.setUp();
+ mockServicesInjector = context.mock(ServicesInjector.class);
+ mockTranslationService = context.mock(TranslationService.class);
+
+
+ context.checking(new Expectations() {{
+ allowing(mockServicesInjector).lookupService(TranslationService.class);
+ will(returnValue(mockTranslationService));
+ }});
+
+ context.checking(new Expectations() {{
+ allowing(mockTranslationService).translate(with(any(String.class)), with(any(String.class)));
+ will(new Action() {
+ @Override
+ public Object invoke(final Invocation invocation) throws Throwable {
+ return invocation.getParameter(1);
+ }
+
+ @Override
+ public void describeTo(final Description description) {
+ description.appendText("Returns parameter #1");
+ }
+ });
+ }});
+
+
facetFactory = new MemberOrderFacetFactory();
+ facetFactory.setServicesInjector(mockServicesInjector);
+
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/b5cbbb3e/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderComparatorTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderComparatorTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderComparatorTest.java
index a24017e..8a7268a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderComparatorTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderComparatorTest.java
@@ -19,12 +19,18 @@
package org.apache.isis.core.metamodel.facets.ordering.memberorder;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
+import org.hamcrest.Description;
+import org.jmock.Expectations;
+import org.jmock.api.Action;
+import org.jmock.api.Invocation;
+import org.junit.Rule;
+import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.layout.memberorderfacet.MemberOrderComparator;
import org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation;
+import org.apache.isis.core.metamodel.layout.memberorderfacet.MemberOrderComparator;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
public class MemberOrderComparatorTest extends TestCase {
@@ -45,11 +51,33 @@ public class MemberOrderComparatorTest extends TestCase {
private final FacetedMethod m1 = FacetedMethod.createForProperty(Customer.class, "abc");
private final FacetedMethod m2 = FacetedMethod.createForProperty(Customer.class, "abc");
+ TranslationService mockTranslationService;
+
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
+
@Override
protected void setUp() {
comparator = new MemberOrderComparator(true);
laxComparator = new MemberOrderComparator(false);
+
+ mockTranslationService = context.mock(TranslationService.class);
+ context.checking(new Expectations() {{
+ allowing(mockTranslationService).translate(with(any(String.class)), with(any(String.class)));
+ will(new Action() {
+ @Override
+ public Object invoke(final Invocation invocation) throws Throwable {
+ return invocation.getParameter(1);
+ }
+
+ @Override
+ public void describeTo(final Description description) {
+ description.appendText("Returns parameter #1");
+ }
+ });
+ }});
+
}
@Override
@@ -57,74 +85,74 @@ public class MemberOrderComparatorTest extends TestCase {
}
public void testDefaultGroupOneComponent() {
- m1.addFacet(new MemberOrderFacetAnnotation("", "1", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("", "2", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, m2));
assertEquals(-1, comparator.compare(m1, m2));
}
public void testDefaultGroupOneComponentOtherWay() {
- m1.addFacet(new MemberOrderFacetAnnotation("", "2", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("", "1", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("", "2", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, m2));
assertEquals(+1, comparator.compare(m1, m2));
}
public void testDefaultGroupOneComponentSame() {
- m1.addFacet(new MemberOrderFacetAnnotation("", "1", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("", "1", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, m2));
assertEquals(0, comparator.compare(m1, m2));
}
public void testDefaultGroupOneSideRunsOutOfComponentsFirst() {
- m1.addFacet(new MemberOrderFacetAnnotation("", "1", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("", "1.1", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("", "1.1", mockTranslationService, m2));
assertEquals(-1, comparator.compare(m1, m2));
}
public void testDefaultGroupOneSideRunsOutOfComponentsFirstOtherWay() {
- m1.addFacet(new MemberOrderFacetAnnotation("", "1.1", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("", "1", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("", "1.1", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("", "1", mockTranslationService, m2));
assertEquals(+1, comparator.compare(m1, m2));
}
public void testDefaultGroupOneSideRunsTwoComponents() {
- m1.addFacet(new MemberOrderFacetAnnotation("", "1.1", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("", "1.2", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("", "1.1", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("", "1.2", mockTranslationService, m2));
assertEquals(-1, comparator.compare(m1, m2));
}
public void testDefaultGroupOneSideRunsTwoComponentsOtherWay() {
- m1.addFacet(new MemberOrderFacetAnnotation("", "1.2", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("", "1.1", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("", "1.2", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("", "1.1", mockTranslationService, m2));
assertEquals(+1, comparator.compare(m1, m2));
}
public void testDefaultGroupOneSideRunsLotsOfComponents() {
- m1.addFacet(new MemberOrderFacetAnnotation("", "1.2.5.8.3.3", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("", "1.2.5.8.3.4", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("", "1.2.5.8.3.3", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("", "1.2.5.8.3.4", mockTranslationService, m2));
assertEquals(-1, comparator.compare(m1, m2));
}
public void testDefaultGroupOneSideRunsLotsOfComponentsOtherWay() {
- m1.addFacet(new MemberOrderFacetAnnotation("", "1.2.5.8.3.4", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("", "1.2.5.8.3.3", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("", "1.2.5.8.3.4", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("", "1.2.5.8.3.3", mockTranslationService, m2));
assertEquals(+1, comparator.compare(m1, m2));
}
public void testDefaultGroupOneSideRunsLotsOfComponentsSame() {
- m1.addFacet(new MemberOrderFacetAnnotation("", "1.2.5.8.3.3", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("", "1.2.5.8.3.3", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("", "1.2.5.8.3.3", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("", "1.2.5.8.3.3", mockTranslationService, m2));
assertEquals(0, comparator.compare(m1, m2));
}
public void testNamedGroupOneSideRunsLotsOfComponents() {
- m1.addFacet(new MemberOrderFacetAnnotation("abc", "1.2.5.8.3.3", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("abc", "1.2.5.8.3.4", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("abc", "1.2.5.8.3.3", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("abc", "1.2.5.8.3.4", mockTranslationService, m2));
assertEquals(-1, comparator.compare(m1, m2));
}
public void testEnsuresInSameGroup() {
- m1.addFacet(new MemberOrderFacetAnnotation("abc", "1", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("def", "2", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("abc", "1", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("def", "2", mockTranslationService, m2));
try {
assertEquals(-1, comparator.compare(m1, m2));
fail("Exception should have been thrown");
@@ -134,14 +162,14 @@ public class MemberOrderComparatorTest extends TestCase {
}
public void testEnsuresInSameGroupCanBeDisabled() {
- m1.addFacet(new MemberOrderFacetAnnotation("abc", "1", m1));
- m2.addFacet(new MemberOrderFacetAnnotation("def", "2", m2));
+ m1.addFacet(new MemberOrderFacetAnnotation("abc", "1", mockTranslationService, m1));
+ m2.addFacet(new MemberOrderFacetAnnotation("def", "2", mockTranslationService, m2));
assertEquals(-1, laxComparator.compare(m1, m2));
}
public void testNonAnnotatedAfterAnnotated() {
// don't annotate m1
- m2.addFacet(new MemberOrderFacetAnnotation("def", "2", m2));
+ m2.addFacet(new MemberOrderFacetAnnotation("def", "2", mockTranslationService, m2));
assertEquals(+1, comparator.compare(m1, m2));
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b5cbbb3e/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-en.po
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-en.po b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-en.po
index 6f5a4a4..47b82d1 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-en.po
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-en.po
@@ -37,6 +37,11 @@ msgid "Discoverable"
msgstr "Discoverable"
+#: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS
+msgid "Domain Objects"
+msgstr "Domain Objects"
+
+
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
msgid "Download Translations"
msgstr "Download Translations"
@@ -62,6 +67,11 @@ msgid "Friendly Name"
msgstr "Friendly Name"
+#: domainapp.dom.modules.simple.SimpleObject
+msgid "General"
+msgstr "General"
+
+
#: domainapp.dom.app.homepage.HomePageService#homePage()
msgid "Home Page"
msgstr "Home Page"
@@ -110,6 +120,11 @@ msgid "Objects"
msgstr "Objects"
+#: org.apache.isis.applib.fixtures.FixtureType#OTHER
+msgid "Other"
+msgstr "Other"
+
+
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Parameters"
@@ -184,6 +199,10 @@ msgid "Update Name"
msgstr "Update Name"
+#: domainapp.dom.modules.simple.SimpleObject
+msgid "name"
+msgstr ""
+
http://git-wip-us.apache.org/repos/asf/isis/blob/b5cbbb3e/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-es.po
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-es.po b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-es.po
index 4f93a31..8b4c2d7 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-es.po
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-es.po
@@ -37,6 +37,11 @@ msgid "Discoverable"
msgstr "Descubrible"
+#: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS
+msgid "Domain Objects"
+msgstr "Domain Objects"
+
+
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
msgid "Download Translations"
msgstr "Descargar traducciones"
@@ -110,6 +115,11 @@ msgid "Objects"
msgstr "Objetos"
+#: org.apache.isis.applib.fixtures.FixtureType#OTHER
+msgid "Other"
+msgstr "Other"
+
+
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Parameters"
@@ -184,6 +194,10 @@ msgid "Update Name"
msgstr "Nombre de la ActualizaciĆ³n"
+#: domainapp.dom.modules.simple.SimpleObject
+msgid "name"
+msgstr ""
+
http://git-wip-us.apache.org/repos/asf/isis/blob/b5cbbb3e/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-nl.po
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-nl.po b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-nl.po
index 68c6776..4e35a22 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-nl.po
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-nl.po
@@ -34,7 +34,12 @@ msgstr "Creƫren"
#: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable
msgid "Discoverable"
-msgstr ""
+msgstr "Discoverable"
+
+
+#: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS
+msgid "Domain Objects"
+msgstr "Domain Objects"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
@@ -107,7 +112,12 @@ msgstr ""
#: domainapp.dom.app.homepage.HomePageViewModel#objects
msgid "Objects"
-msgstr ""
+msgstr "Objects"
+
+
+#: org.apache.isis.applib.fixtures.FixtureType#OTHER
+msgid "Other"
+msgstr "Other"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
@@ -184,6 +194,10 @@ msgid "Update Name"
msgstr "Updaten Naam"
+#: domainapp.dom.modules.simple.SimpleObject
+msgid "name"
+msgstr ""
+
http://git-wip-us.apache.org/repos/asf/isis/blob/b5cbbb3e/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations.po
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations.po b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations.po
index 2af7fe0..3644a28 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations.po
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations.po
@@ -67,6 +67,11 @@ msgid "Friendly Name"
msgstr ""
+#: domainapp.dom.modules.simple.SimpleObject
+msgid "General"
+msgstr "Common"
+
+
#: domainapp.dom.app.homepage.HomePageService#homePage()
msgid "Home Page"
msgstr ""
@@ -194,6 +199,11 @@ msgid "Update Name"
msgstr ""
+#: domainapp.dom.modules.simple.SimpleObject
+msgid "name"
+msgstr ""
+
+