This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/master by this push:
new cc41b69830 CAUSEWAY-3321: adds translation support to tiles of any
cardinality
cc41b69830 is described below
commit cc41b69830701e0fc2e2051013be28c386a9eb81
Author: Andi Huber <[email protected]>
AuthorDate: Tue Feb 7 08:56:06 2023 +0100
CAUSEWAY-3321: adds translation support to tiles of any cardinality
---
.../core/metamodel/object/MmTitleUtil.java | 25 ++++++++++++++++-----
.../core/metamodel/object/_InternalTitleUtil.java | 26 +++++++++++++---------
...entNegotiationServiceForRestfulObjectsV1_0.java | 2 +-
3 files changed, 36 insertions(+), 17 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmTitleUtil.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmTitleUtil.java
index 8995f626fa..607057a737 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmTitleUtil.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmTitleUtil.java
@@ -18,10 +18,16 @@
*/
package org.apache.causeway.core.metamodel.object;
+import java.util.Optional;
import java.util.function.Predicate;
+import org.springframework.lang.Nullable;
+
+import org.apache.causeway.applib.services.i18n.TranslationContext;
+import org.apache.causeway.applib.services.i18n.TranslationService;
import
org.apache.causeway.core.metamodel.facets.object.title.TitleRenderRequest;
+import lombok.val;
import lombok.experimental.UtilityClass;
@UtilityClass
@@ -52,15 +58,24 @@ public class MmTitleUtil {
}
public static String formatAnyCardinalityAsTitle(
- int cardinality, // number of items
- String singularName) {
+ final int cardinality, // number of items
+ final String singularName,
+ final @Nullable TranslationService translationService) {
+
+ val nounTranslated = Optional.ofNullable(translationService)
+ .map(ts->ts.translate(TranslationContext.empty(),
singularName))
+ .orElse(singularName);
+ val entriesOfTranslated = Optional.ofNullable(translationService)
+ .map(ts->ts.translate(TranslationContext.empty(), "entries
of"))
+ .orElse("entries of");
+
switch (cardinality) {
case 0:
- return "No " + singularName;
+ return "No " + nounTranslated;
case 1:
- return "1 " + singularName;
+ return "1 " + nounTranslated;
default:
- return "" + cardinality + " entries of " + singularName;
+ return "" + cardinality + " " + entriesOfTranslated + " " +
nounTranslated;
}
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_InternalTitleUtil.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_InternalTitleUtil.java
index b5b776338e..1c8c97dd13 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_InternalTitleUtil.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_InternalTitleUtil.java
@@ -20,8 +20,7 @@ package org.apache.causeway.core.metamodel.object;
import java.util.Optional;
-import org.springframework.lang.Nullable;
-
+import org.apache.causeway.applib.services.i18n.TranslationContext;
import org.apache.causeway.core.metamodel.facets.collections.CollectionFacet;
import
org.apache.causeway.core.metamodel.facets.object.title.TitleRenderRequest;
import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
@@ -43,12 +42,12 @@ final class _InternalTitleUtil {
return managedObject.getTitle();
}
- return managedObject.getSpecification().isSingular()
+ val objSpec = managedObject.getSpecification();
+
+ return objSpec.isSingular()
? objectTitleString(titleRenderRequest)
.trim()
- : formatAnyCardinalityAsTitle(
-
managedObject.getSpecification().getFacet(CollectionFacet.class).size(managedObject),
- managedObject.getElementSpecification().orElse(null));
+ : formatAnyCardinalityAsTitle(objSpec, managedObject);
}
// -- HELPER
@@ -71,15 +70,20 @@ final class _InternalTitleUtil {
.orElseGet(()->getDefaultTitle(managedObject));
}
- private String formatAnyCardinalityAsTitle(final int size, final @Nullable
ObjectSpecification elementSpec) {
+ private String getDefaultTitle(final ManagedObject managedObject) {
+ return "A" + (" " +
managedObject.getSpecification().getSingularName()).toLowerCase();
+ }
+
+ private String formatAnyCardinalityAsTitle(@NonNull final
ObjectSpecification objSpec, @NonNull final ManagedObject managedObject) {
+ final int size =
objSpec.getFacet(CollectionFacet.class).size(managedObject);
+ val elementSpec = objSpec.getElementSpecification().orElse(null);
+
objSpec.getTranslationService().translate(TranslationContext.forClassName(objSpec.getCorrespondingClass()),
null);
+
final String noun = (elementSpec == null
||
elementSpec.getFullIdentifier().equals(Object.class.getName()))
? "object"
: elementSpec.getSingularName();
- return MmTitleUtil.formatAnyCardinalityAsTitle(size, noun);
+ return MmTitleUtil.formatAnyCardinalityAsTitle(size, noun,
objSpec.getTranslationService());
}
- private String getDefaultTitle(final ManagedObject managedObject) {
- return "A" + (" " +
managedObject.getSpecification().getSingularName()).toLowerCase();
- }
}
\ No newline at end of file
diff --git
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
index e5d8f93bf2..e353dbb8e9 100644
---
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
+++
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
@@ -321,7 +321,7 @@ implements ContentNegotiationService {
final Collection<ManagedObject> collectionAdapters,
final ObjectSpecification elementSpec) {
final String singularName = elementSpec.getSingularName();
- return
MmTitleUtil.formatAnyCardinalityAsTitle(collectionAdapters.size(),
singularName);
+ return
MmTitleUtil.formatAnyCardinalityAsTitle(collectionAdapters.size(),
singularName, elementSpec.getTranslationService());
}
/**