codeconsole commented on code in PR #15974:
URL: https://github.com/apache/grails-core/pull/15974#discussion_r3565447412
##########
grails-forge/grails-forge-core/src/main/resources/i18n/messages_sk.properties:
##########
@@ -53,4 +53,51 @@ typeMismatch.java.lang.Long=Položka {0} musí byť celé číslo
typeMismatch.java.lang.Short=Položka {0} musí byť celé číslo
typeMismatch.java.math.BigDecimal=Položka {0} musí byť desatinné číslo
typeMismatch.java.math.BigInteger=Položka {0} musí byť celé číslo
+typeMismatch=Položka {0} má nesprávny typ
Review Comment:
Dropped the shadowed line in e03e68c5ff — kept `nezhodný typ` since as the
last entry it was the value actually in effect. Removed from both the forge
bundle and the profiles mirror, and the integrity spec now asserts no bundle
declares the same key twice (parsing raw lines, since `Properties` collapses
duplicates).
##########
grails-forge/grails-forge-core/src/main/resources/assets/javascripts/welcome.js:
##########
@@ -106,11 +106,51 @@
state.key = defaultKey;
state.dir = 1;
setSortIndicator(table, defaultTh, 'ascending', 'asc');
Review Comment:
Updated in e03e68c5ff — the comment now says the server already renders rows
in that order, so the indicator-only initialization reads as intentional.
##########
grails-forge/grails-forge-core/src/main/resources/gsp/main.gsp:
##########
@@ -26,33 +51,42 @@
<i class="bi bi-globe
me-1"></i>${currentLocale.getDisplayName(currentLocale)}
</a>
<ul class="dropdown-menu dropdown-menu-end"
aria-labelledby="localeDropdown">
+ <%-- The default language stays pinned on top: a user
who switched to a
+ language they cannot read must always find a
recognizable way back. --%>
+ <g:set var="defaultLocale"
value="${java.util.Locale.ENGLISH}"/>
Review Comment:
Done in e03e68c5ff — the pin now resolves `spring.web.locale` via
`StringUtils.parseLocale` and falls back to `Locale.ENGLISH` when unset, so a
configured default locale is what stays pinned.
##########
grails-forge/grails-forge-core/src/main/resources/gsp/index.gsp:
##########
@@ -332,8 +379,40 @@
</tbody>
</table>
</div>
+ <p id="plugins-empty" class="small text-body-secondary
d-none mb-0"><g:message code="welcome.filter.none"/></p>
</div>
</div>
+
+ <%-- ACTUATORS: shown only when Spring Boot Actuator is
present and exposes web endpoints --%>
+ <g:set var="actuatorSupplierType"
+
value="${ClassUtils.isPresent('org.springframework.boot.actuate.endpoint.web.WebEndpointsSupplier',
null) ?
ClassUtils.forName('org.springframework.boot.actuate.endpoint.web.WebEndpointsSupplier',
null) : null}"/>
+ <g:set var="actuatorEndpoints"
+ value="${actuatorSupplierType &&
applicationContext.getBeanNamesForType(actuatorSupplierType) ?
applicationContext.getBean(actuatorSupplierType).endpoints.toList().sort {
it.endpointId.toString() } : []}"/>
+ <g:if test="${actuatorEndpoints}">
+ <g:set var="actuatorBasePath"
+
value="${grailsApplication.config.getProperty('management.endpoints.web.base-path')
?: '/actuator'}"/>
+ <div class="card border-1 shadow-sm mt-4">
+ <div class="card-body">
+ <div class="d-flex align-items-center
justify-content-between mb-3">
+ <h6 class="card-title mb-0
fw-semibold"><g:message code="welcome.actuators"/></h6>
+ <span class="badge bg-body-tertiary text-body
border">
+ ${actuatorEndpoints.size()}
+ </span>
+ </div>
+ <ul class="list-group list-group-flush small">
+ <g:each var="endpoint"
in="${actuatorEndpoints}">
+ <li class="list-group-item d-flex
justify-content-between align-items-center px-0">
+ <span
class="fw-medium">${endpoint.endpointId}</span>
+ <a
href="${request.contextPath}${actuatorBasePath}/${endpoint.rootPath}"
target="_blank" rel="noopener"
Review Comment:
Good catch — in e03e68c5ff the links now build against
`management.server.port` (plus `management.server.base-path`) when a separate
management port is configured, so the card stays useful instead of 404ing.
Same-port setups keep using the app's context path.
##########
grails-forge/grails-forge-core/src/main/resources/i18n/messages.properties:
##########
@@ -54,3 +54,49 @@ typeMismatch.java.lang.Short=Property {0} must be a valid
number
typeMismatch.java.math.BigDecimal=Property {0} must be a valid number
typeMismatch.java.math.BigInteger=Property {0} must be a valid number
typeMismatch=Property {0} is type-mismatched
+
+# Welcome page
+welcome.title=Welcome to Grails
+welcome.congratulations=Congratulations, you have successfully started a
Grails application.
+welcome.default.page=At the moment this is the default page, feel free to
modify it to either redirect to a controller or display whatever content you
may choose.
+welcome.runtime.versions=Runtime versions
+welcome.application=Application
+welcome.reloading.active=Reloading active
+welcome.reloading.inactive=Reloading inactive
+welcome.app.name=Name
+welcome.app.version=Version
+welcome.app.profile=Profile
+welcome.app.environment=Environment
+welcome.server=Server
+welcome.server.servlet.container=Servlet Container
+welcome.server.host=Host
+welcome.server.os=OS
+welcome.artefact.counts=Artefact counts
+welcome.artefact.controllers=Controllers
+welcome.artefact.domains=Domains
+welcome.artefact.services=Services
+welcome.artefact.taglibs=Tag Libraries
+welcome.controllers.title=Available Controllers
+welcome.controllers.click=Click a controller to execute its default action.
+welcome.namespace.default=Default namespace
+welcome.plugins.title=Installed plugins
+welcome.plugins.name=Name
+welcome.plugins.version=Version
+welcome.plugins.load.order=Load order
+welcome.plugins.sort.name=Sort by name
+welcome.plugins.sort.version=Sort by version
+welcome.plugins.sort.order=Sort by load order
+welcome.filter.name=Filter by name
+welcome.filter.none=No matches
+layout.guides.title=Grails Guides
+layout.guides.text=Building your first Grails app? Looking to add security, or
create a Single-Page-App? Check out the Grails Guides for step-by-step
tutorials.
+layout.docs.title=Documentation
+layout.docs.text=Ready to dig in? You can find in-depth documentation for all
the features of Grails in the User Guide.
+layout.community.title=Join the Community
+layout.community.text=Get feedback and share your experience with other Grails
developers on the Grails mailing lists, GitHub discussions, or the community
Slack channel.
+layout.theme.toggle=Toggle theme
+layout.theme.light=Light
+layout.theme.dark=Dark
+layout.theme.auto=Auto
+layout.loading=Loading...
+welcome.actuators=Actuators
Review Comment:
It's deliberate — 'Actuators' is the Spring Boot product name (zh_CN's
"Actuator" included). Added a comment above the key in every bundle in
e03e68c5ff so it doesn't get reported as a missing translation.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]