diff --git a/packages/vue-i18n-core/src/components/Translation.ts b/packages/vue-i18n-core/src/components/Translation.ts
index d91c7e852..426ec1287 100644
--- a/packages/vue-i18n-core/src/components/Translation.ts
+++ b/packages/vue-i18n-core/src/components/Translation.ts
@@ -58,7 +58,7 @@ export const TranslationImpl = /*#__PURE__*/ defineComponent({
}) as unknown as Composer & ComposerInternal)
return (): VNodeChild => {
- const keys = Object.keys(slots).filter(key => key !== '_')
+ const keys = Object.keys(slots).filter(key => key[0] !== '_')
const options = create() as TranslateOptions
if (props.locale) {
options.locale = props.locale
diff --git a/packages/vue-i18n-core/test/components/Translation.test.ts b/packages/vue-i18n-core/test/components/Translation.test.ts
index c6525e1dd..a6bb179b5 100644
--- a/packages/vue-i18n-core/test/components/Translation.test.ts
+++ b/packages/vue-i18n-core/test/components/Translation.test.ts
@@ -27,6 +27,7 @@ import type { Ref } from 'vue'
const messages = {
en: {
message: {
+ hello: 'hello',
language: 'English',
quantity: 'Quantity',
list: 'hello, {0}!',
@@ -38,6 +39,7 @@ const messages = {
},
ja: {
message: {
+ hello: 'こんにちは',
language: '日本語',
list: 'こんにちは、{0}!',
named: 'こんにちは、{name}!',
@@ -320,3 +322,53 @@ test('v-if / v-else', async () => {
`
hello, kazu_pon!
`
)
})
+
+test('vue/core slot changing', async () => {
+ const i18n = createI18n({
+ locale: 'en',
+ messages
+ })
+
+ const App = defineComponent({
+ setup() {
+ const { t, locale } = useI18n()
+ return { t, locale }
+ },
+ template: `{{ t('hello') }}
+
+`
+ })
+ const wrapper = await mount(App, i18n)
+
+ expect(wrapper.html()).toEqual(
+ `hello
`
+ )
+})
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0bebfdff5..61a5b09fc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -239,7 +239,7 @@ importers:
version: 8.4.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.4)
vitepress:
specifier: 1.5.0
- version: 1.5.0(@algolia/client-search@4.23.2)(@types/node@22.5.3)(@vue/composition-api@1.7.2(vue@3.5.13(typescript@5.5.4)))(jiti@1.21.0)(postcss@8.4.49)(search-insights@2.13.0)(terser@5.27.0)(tsx@4.11.2)(typescript@5.5.4)(yaml@2.3.4)
+ version: 1.5.0(@algolia/client-search@4.23.2)(@types/node@22.5.3)(@vue/composition-api@1.7.2(vue@3.5.13(typescript@5.5.4)))(jiti@1.21.0)(postcss@8.5.3)(search-insights@2.13.0)(terser@5.27.0)(tsx@4.11.2)(typescript@5.5.4)(yaml@2.3.4)
vitepress-plugin-llms:
specifier: ^1.1.0
version: 1.1.0
@@ -870,6 +870,10 @@ packages:
resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-string-parser@7.27.1':
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-validator-identifier@7.22.20':
resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
engines: {node: '>=6.9.0'}
@@ -878,6 +882,10 @@ packages:
resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-validator-identifier@7.27.1':
+ resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-validator-option@7.23.5':
resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
engines: {node: '>=6.9.0'}
@@ -900,6 +908,11 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
+ '@babel/parser@7.27.2':
+ resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
'@babel/plugin-syntax-jsx@7.23.3':
resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==}
engines: {node: '>=6.9.0'}
@@ -934,6 +947,10 @@ packages:
resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==}
engines: {node: '>=6.9.0'}
+ '@babel/types@7.27.1':
+ resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==}
+ engines: {node: '>=6.9.0'}
+
'@bcoe/v8-coverage@0.2.3':
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
@@ -2315,39 +2332,39 @@ packages:
'@vue/compiler-core@3.4.19':
resolution: {integrity: sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==}
- '@vue/compiler-core@3.5.12':
- resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==}
-
'@vue/compiler-core@3.5.13':
resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
+ '@vue/compiler-core@3.5.14':
+ resolution: {integrity: sha512-k7qMHMbKvoCXIxPhquKQVw3Twid3Kg4s7+oYURxLGRd56LiuHJVrvFKI4fm2AM3c8apqODPfVJGoh8nePbXMRA==}
+
'@vue/compiler-dom@3.4.19':
resolution: {integrity: sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==}
- '@vue/compiler-dom@3.5.12':
- resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==}
-
'@vue/compiler-dom@3.5.13':
resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
+ '@vue/compiler-dom@3.5.14':
+ resolution: {integrity: sha512-1aOCSqxGOea5I80U2hQJvXYpPm/aXo95xL/m/mMhgyPUsKe9jhjwWpziNAw7tYRnbz1I61rd9Mld4W9KmmRoug==}
+
'@vue/compiler-sfc@3.4.19':
resolution: {integrity: sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==}
- '@vue/compiler-sfc@3.5.12':
- resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==}
-
'@vue/compiler-sfc@3.5.13':
resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
+ '@vue/compiler-sfc@3.5.14':
+ resolution: {integrity: sha512-9T6m/9mMr81Lj58JpzsiSIjBgv2LiVoWjIVa7kuXHICUi8LiDSIotMpPRXYJsXKqyARrzjT24NAwttrMnMaCXA==}
+
'@vue/compiler-ssr@3.4.19':
resolution: {integrity: sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw==}
- '@vue/compiler-ssr@3.5.12':
- resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==}
-
'@vue/compiler-ssr@3.5.13':
resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
+ '@vue/compiler-ssr@3.5.14':
+ resolution: {integrity: sha512-Y0G7PcBxr1yllnHuS/NxNCSPWnRGH4Ogrp0tsLA5QemDZuJLs99YjAKQ7KqkHE0vCg4QTKlQzXLKCMF7WPSl7Q==}
+
'@vue/composition-api@1.7.2':
resolution: {integrity: sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw==}
peerDependencies:
@@ -2407,6 +2424,9 @@ packages:
'@vue/shared@3.5.13':
resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
+ '@vue/shared@3.5.14':
+ resolution: {integrity: sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==}
+
'@vueuse/core@11.1.0':
resolution: {integrity: sha512-P6dk79QYA6sKQnghrUz/1tHi0n9mrb/iO1WTMk/ElLmTyNqgDeSZ3wcDf6fRBGzRJbeG1dxzEOvLENMjr+E3fg==}
@@ -5050,6 +5070,9 @@ packages:
magic-string@0.30.12:
resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
+ magic-string@0.30.17:
+ resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+
magic-string@0.30.7:
resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==}
engines: {node: '>=12'}
@@ -5479,6 +5502,11 @@ packages:
nan@2.19.0:
resolution: {integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==}
+ nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -6001,6 +6029,10 @@ packages:
resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.3:
+ resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
+ engines: {node: ^10 || ^12 || >=14}
+
preact@10.19.4:
resolution: {integrity: sha512-dwaX5jAh0Ga8uENBX1hSOujmKWgx9RtL80KaKUFLc6jb4vCEAc3EeZ0rnQO/FO4VgjfPMfoLFWnNG8bHuZ9VLw==}
@@ -8134,10 +8166,14 @@ snapshots:
'@babel/helper-string-parser@7.24.8': {}
+ '@babel/helper-string-parser@7.27.1': {}
+
'@babel/helper-validator-identifier@7.22.20': {}
'@babel/helper-validator-identifier@7.24.7': {}
+ '@babel/helper-validator-identifier@7.27.1': {}
+
'@babel/helper-validator-option@7.23.5': {}
'@babel/helpers@7.23.9':
@@ -8162,6 +8198,10 @@ snapshots:
dependencies:
'@babel/types': 7.25.6
+ '@babel/parser@7.27.2':
+ dependencies:
+ '@babel/types': 7.27.1
+
'@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9)':
dependencies:
'@babel/core': 7.23.9
@@ -8213,6 +8253,11 @@ snapshots:
'@babel/helper-validator-identifier': 7.24.7
to-fast-properties: 2.0.0
+ '@babel/types@7.27.1':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.27.1
+
'@bcoe/v8-coverage@0.2.3': {}
'@docsearch/css@3.6.2': {}
@@ -9704,7 +9749,7 @@ snapshots:
'@babel/helper-module-imports': 7.22.15
'@babel/helper-plugin-utils': 7.22.5
'@babel/parser': 7.25.6
- '@vue/compiler-sfc': 3.5.12
+ '@vue/compiler-sfc': 3.5.14
'@vue/compiler-core@3.4.19':
dependencies:
@@ -9714,18 +9759,18 @@ snapshots:
estree-walker: 2.0.2
source-map-js: 1.0.2
- '@vue/compiler-core@3.5.12':
+ '@vue/compiler-core@3.5.13':
dependencies:
- '@babel/parser': 7.25.6
- '@vue/shared': 3.5.12
+ '@babel/parser': 7.27.2
+ '@vue/shared': 3.5.13
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.1
- '@vue/compiler-core@3.5.13':
+ '@vue/compiler-core@3.5.14':
dependencies:
- '@babel/parser': 7.25.6
- '@vue/shared': 3.5.13
+ '@babel/parser': 7.27.2
+ '@vue/shared': 3.5.14
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.1
@@ -9735,16 +9780,16 @@ snapshots:
'@vue/compiler-core': 3.4.19
'@vue/shared': 3.4.19
- '@vue/compiler-dom@3.5.12':
- dependencies:
- '@vue/compiler-core': 3.5.12
- '@vue/shared': 3.5.12
-
'@vue/compiler-dom@3.5.13':
dependencies:
'@vue/compiler-core': 3.5.13
'@vue/shared': 3.5.13
+ '@vue/compiler-dom@3.5.14':
+ dependencies:
+ '@vue/compiler-core': 3.5.14
+ '@vue/shared': 3.5.14
+
'@vue/compiler-sfc@3.4.19':
dependencies:
'@babel/parser': 7.23.9
@@ -9757,28 +9802,28 @@ snapshots:
postcss: 8.4.35
source-map-js: 1.0.2
- '@vue/compiler-sfc@3.5.12':
- dependencies:
- '@babel/parser': 7.25.6
- '@vue/compiler-core': 3.5.12
- '@vue/compiler-dom': 3.5.12
- '@vue/compiler-ssr': 3.5.12
- '@vue/shared': 3.5.12
- estree-walker: 2.0.2
- magic-string: 0.30.12
- postcss: 8.4.49
- source-map-js: 1.2.1
-
'@vue/compiler-sfc@3.5.13':
dependencies:
- '@babel/parser': 7.25.6
+ '@babel/parser': 7.27.2
'@vue/compiler-core': 3.5.13
'@vue/compiler-dom': 3.5.13
'@vue/compiler-ssr': 3.5.13
'@vue/shared': 3.5.13
estree-walker: 2.0.2
- magic-string: 0.30.12
- postcss: 8.4.49
+ magic-string: 0.30.17
+ postcss: 8.5.3
+ source-map-js: 1.2.1
+
+ '@vue/compiler-sfc@3.5.14':
+ dependencies:
+ '@babel/parser': 7.27.2
+ '@vue/compiler-core': 3.5.14
+ '@vue/compiler-dom': 3.5.14
+ '@vue/compiler-ssr': 3.5.14
+ '@vue/shared': 3.5.14
+ estree-walker: 2.0.2
+ magic-string: 0.30.17
+ postcss: 8.5.3
source-map-js: 1.2.1
'@vue/compiler-ssr@3.4.19':
@@ -9786,16 +9831,16 @@ snapshots:
'@vue/compiler-dom': 3.4.19
'@vue/shared': 3.4.19
- '@vue/compiler-ssr@3.5.12':
- dependencies:
- '@vue/compiler-dom': 3.5.12
- '@vue/shared': 3.5.12
-
'@vue/compiler-ssr@3.5.13':
dependencies:
'@vue/compiler-dom': 3.5.13
'@vue/shared': 3.5.13
+ '@vue/compiler-ssr@3.5.14':
+ dependencies:
+ '@vue/compiler-dom': 3.5.14
+ '@vue/shared': 3.5.14
+
'@vue/composition-api@1.7.2(vue@3.5.13(typescript@5.5.4))':
dependencies:
vue: 3.5.13(typescript@5.5.4)
@@ -9855,8 +9900,8 @@ snapshots:
'@vue/language-core@2.0.0(typescript@5.5.4)':
dependencies:
'@volar/language-core': 2.1.0
- '@vue/compiler-dom': 3.5.12
- '@vue/shared': 3.5.12
+ '@vue/compiler-dom': 3.5.14
+ '@vue/shared': 3.5.14
computeds: 0.0.1
minimatch: 9.0.5
path-browserify: 1.0.1
@@ -9898,6 +9943,8 @@ snapshots:
'@vue/shared@3.5.13': {}
+ '@vue/shared@3.5.14': {}
+
'@vueuse/core@11.1.0(@vue/composition-api@1.7.2(vue@3.5.13(typescript@5.5.4)))(vue@3.5.13(typescript@5.5.4))':
dependencies:
'@types/web-bluetooth': 0.0.20
@@ -12937,6 +12984,10 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
+ magic-string@0.30.17:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
magic-string@0.30.7:
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
@@ -13557,6 +13608,8 @@ snapshots:
nan@2.19.0:
optional: true
+ nanoid@3.3.11: {}
+
nanoid@3.3.7: {}
nanomatch@1.2.13(supports-color@6.1.0):
@@ -14085,6 +14138,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postcss@8.5.3:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
preact@10.19.4: {}
prelude-ls@1.2.1: {}
@@ -15849,7 +15908,7 @@ snapshots:
- '@75lb/nature'
- supports-color
- vitepress@1.5.0(@algolia/client-search@4.23.2)(@types/node@22.5.3)(@vue/composition-api@1.7.2(vue@3.5.13(typescript@5.5.4)))(jiti@1.21.0)(postcss@8.4.49)(search-insights@2.13.0)(terser@5.27.0)(tsx@4.11.2)(typescript@5.5.4)(yaml@2.3.4):
+ vitepress@1.5.0(@algolia/client-search@4.23.2)(@types/node@22.5.3)(@vue/composition-api@1.7.2(vue@3.5.13(typescript@5.5.4)))(jiti@1.21.0)(postcss@8.5.3)(search-insights@2.13.0)(terser@5.27.0)(tsx@4.11.2)(typescript@5.5.4)(yaml@2.3.4):
dependencies:
'@docsearch/css': 3.6.2
'@docsearch/js': 3.6.2(@algolia/client-search@4.23.2)(search-insights@2.13.0)
@@ -15870,7 +15929,7 @@ snapshots:
vite: 6.0.0(@types/node@22.5.3)(jiti@1.21.0)(terser@5.27.0)(tsx@4.11.2)(yaml@2.3.4)
vue: 3.5.13(typescript@5.5.4)
optionalDependencies:
- postcss: 8.4.49
+ postcss: 8.5.3
transitivePeerDependencies:
- '@algolia/client-search'
- '@types/node'