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]

Reply via email to