Skip to content

Commit

Permalink
breaking: drop te behavior v8.x compatibility on v9 (#1845)
Browse files Browse the repository at this point in the history
  • Loading branch information
kazupon committed May 8, 2024
1 parent 17bfe78 commit 9170ec0
Show file tree
Hide file tree
Showing 6 changed files with 10 additions and 114 deletions.
42 changes: 6 additions & 36 deletions packages/vue-i18n-core/src/composer.ts
Expand Up @@ -13,8 +13,7 @@ import {
assign,
inBrowser,
deepCopy,
hasOwn,
warnOnce
hasOwn
} from '@intlify/shared'
import {
isTranslateFallbackWarn,
Expand Down Expand Up @@ -611,24 +610,6 @@ export interface ComposerOptions<
* @defaultValue `undefined`
*/
messageCompiler?: MessageCompiler
/**
* @remarks
* An option to make `te` behavior specification before v9.6
*
* @VueI18nTip
* :new: v9.10+
*
* @VueI18nWarning
* This flag will be removed in v10.
*
* @VueI18nSee [GitHub Issue](https://github.com/intlify/vue-i18n-next/issues/1738)
*
* @VueI18nSee [`te`](composition#te-key-locale)
*
* @defaultValue `false`
*
*/
translateExistCompatible?: boolean
}

/**
Expand Down Expand Up @@ -1954,17 +1935,6 @@ export function createComposer(options: any = {}): any {
const flatJson = options.flatJson
const _ref = inBrowser ? ref : shallowRef

const translateExistCompatible = !!options.translateExistCompatible
if (__DEV__) {
if (translateExistCompatible && !__TEST__) {
warnOnce(
getWarnMessage(
I18nWarnCodes.NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG
)
)
}
}

let _inheritLocale = isBoolean(options.inheritLocale)
? options.inheritLocale
: true
Expand Down Expand Up @@ -2414,11 +2384,11 @@ export function createComposer(options: any = {}): any {
const targetLocale = isString(locale) ? locale : _locale.value
const message = getLocaleMessage(targetLocale)
const resolved = _context.messageResolver(message, key)
return !translateExistCompatible
? isMessageAST(resolved) ||
isMessageFunction(resolved) ||
isString(resolved)
: resolved != null
return (
isMessageAST(resolved) ||
isMessageFunction(resolved) ||
isString(resolved)
)
},
() => [key],
'translate exists',
Expand Down
3 changes: 0 additions & 3 deletions packages/vue-i18n-core/src/legacy.ts
Expand Up @@ -1487,8 +1487,6 @@ function convertComposerOptions<
const datetimeFormats = options.datetimeFormats
const numberFormats = options.numberFormats
const flatJson = options.flatJson
const translateExistCompatible = (options as unknown as ComposerOptions)
.translateExistCompatible

return {
locale,
Expand All @@ -1509,7 +1507,6 @@ function convertComposerOptions<
escapeParameter,
messageResolver: options.messageResolver,
inheritLocale,
translateExistCompatible,
__i18n,
__root,
__injectWithOption
Expand Down
6 changes: 2 additions & 4 deletions packages/vue-i18n-core/src/warnings.ts
Expand Up @@ -8,9 +8,8 @@ export const I18nWarnCodes = {
FALLBACK_TO_ROOT: code, // 8
NOT_FOUND_PARENT_SCOPE: inc(), // 9
IGNORE_OBJ_FLATTEN: inc(), // 10
NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG: inc(), // 11
DEPRECATE_TC: inc(), // 12
__EXTEND_POINT__: inc() // 13
DEPRECATE_TC: inc(), // 11
__EXTEND_POINT__: inc() // 12
} as const

type I18nWarnCodes = (typeof I18nWarnCodes)[keyof typeof I18nWarnCodes]
Expand All @@ -19,7 +18,6 @@ export const warnMessages: { [code: number]: string } = {
[I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,
[I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`,
[I18nWarnCodes.IGNORE_OBJ_FLATTEN]: `Ignore object flatten: '{key}' key has an string value`,
[I18nWarnCodes.NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG]: `'translateExistCompatible' option will be dropped in the next major version.`,
[I18nWarnCodes.DEPRECATE_TC]: `'tc' and '$tc' has been deprecated in v10. Use 't' or '$t' instead. 'tc' and '$tc’ are going to remove in v11.`
}

Expand Down
69 changes: 0 additions & 69 deletions packages/vue-i18n-core/test/issues.test.ts
Expand Up @@ -1268,75 +1268,6 @@ test('issue #1717', async () => {
})
})

test('issue #1738', async () => {
const resources = {
en: {
messages: {
common: {
actions: {
cancel: 'Cancel'
}
}
}
},
nl: {
messages: {
common: {
actions: {
cancel: 'Cancel'
}
}
}
}
}

function loadTranslations(): Promise<typeof resources> {
return new Promise(resolve => resolve(resources))
}

function delay(ms: number) {
return new Promise(resolve => setTimeout(resolve, ms))
}

const i18n = createI18n({
locale: 'nl',
legacy: false,
translateExistCompatible: true,
fallbackLocale: 'en',
missingWarn: false,
silentFallbackWarn: true
})

const App = defineComponent({
setup() {
const { mergeLocaleMessage, te } = useI18n()
onMounted(() => {
setTimeout(async () => {
const data = await loadTranslations()

for (const key in data) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const { messages } = (data as any)[key]
mergeLocaleMessage(key, messages)
}
}, 100)
})
return { te }
},
template: `<div>
<p id="te1">{{ te('common') }} - expected true</p>
<p id="te2">{{ te('common.actions') }} - expected true</p>
</div>`
})

const wrapper = await mount(App, i18n)

await delay(110)

expect(wrapper.find('#te1')?.textContent).toEqual(`true - expected true`)
expect(wrapper.find('#te2')?.textContent).toEqual(`true - expected true`)
})

describe('issue #1768', () => {
test('Implicit fallback using locales', async () => {
const mockWarn = vi.spyOn(shared, 'warn')
Expand Down
2 changes: 1 addition & 1 deletion packages/vue-i18n-core/test/warnings.test.ts
@@ -1,5 +1,5 @@
import { I18nWarnCodes } from '../src/warnings'

test('I18nWarnCodes', () => {
expect(I18nWarnCodes.__EXTEND_POINT__).toBe(13)
expect(I18nWarnCodes.__EXTEND_POINT__).toBe(12)
})
2 changes: 1 addition & 1 deletion packages/vue-i18n/src/vue.d.ts
Expand Up @@ -718,7 +718,7 @@ declare module '@vue/runtime-core' {
* @param key - A target locale message key
* @param locale - A locale, optional, override locale that global scope or local scope
*
* @returns If found locale message, `true`, else `false`, Note that `false` is returned even if the value present in the key is not translatable, yet if `translateExistCompatible` is set to `true`, it will return `true` if the key is available, even if the value is not translatable.
* @returns If found locale message, `true`, else `false`, Note that `false` is returned even if the value present in the key is not translatable.
*/
$te<
Key extends string,
Expand Down

0 comments on commit 9170ec0

Please sign in to comment.