kazupon / vue-i18n

:globe_with_meridians: Internationalization plugin for Vue.js
https://kazupon.github.io/vue-i18n/
MIT License
7.24k stars 860 forks source link

Parsing of language file fails when using functions #1680

Open TheDutchCoder opened 11 months ago

TheDutchCoder commented 11 months ago

Reporting a bug?

Consider the following two function calls: locationName(named('pointOfInterest'), false) locationName({ pointOfInterest: named('pointOfInterest'), includeParent: false })

With origin2:

export const locationName = ({ pointOfInterest, includeParent, abbreviatedParent = true }) => {
  // do something
}

The former can be used in a locale file and works fine, but the latter will fail parsing and will add part of the function call at the end of the parsed string:

image

Expected behavior

foo({ a: 'a' }) to be compiled correctly

Reproduction

Fiddle doesn't work ("Uncaught ReferenceError: VueI18n is not defined")

System Info

System:
    OS: macOS 13.4.1
    CPU: (10) arm64 Apple M1 Pro
    Memory: 374.34 MB / 16.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 18.16.1 - ~/.nvm/versions/node/v18.16.1/bin/node
    npm: 9.5.1 - ~/.nvm/versions/node/v18.16.1/bin/npm
  Browsers:
    Chrome: 115.0.5790.114
    Safari: 16.5.2
  npmPackages:
    vite-svg-loader: ^4.0.0 => 4.0.0

Screenshot

See main issue

Additional context

No response

Validations

TheDutchCoder commented 11 months ago

It seems to be an even deeper issue, you can't use functions at all...

If I define the function in the file itself, vite crashes with a 500. It works if I remove the local function. Imports also don't work (same 500 crash):

// import
import { someFunc } from '~/lib/someFunc` // This crashes Vite

// local
const someFunc = () => 'hello' // Calling this crashes Vite (someFunc is not defined).

export default {
  test: () => someFunc()
}