panter / vue-i18next

Internationalization for vue using the i18next i18n ecosystem.
https://panter.github.io/vue-i18next/
176 stars 47 forks source link

keyPrefix should not be inherited by child components #75

Open bodograumann opened 5 years ago

bodograumann commented 5 years ago

When I set the keyPrefix option for a component and include a different component inside, the keyPrefix of that child component will also be set to the value I choose for the parent component. I think that should not be the case.

import Child from 'Child.js'
export default {
    components: { Child },
    i18nOptions: { keyPrefix: "view.home" } },
    template: `<section><h1>{{ $t("title") }}</h1><Child /></section`
}

Child could be used in multiple places and every time it will have a different prefix set.

I don’t think this is a good approach, because it makes the translations really hard to control.

If you really want to support it, I would suggest allowing a function for the keyPrefix option, which takes the parent prefix and returns the childs’ prefix.

In any case, please default to having no prefix, if the keyPrefix option is not given in a component.

bodograumann commented 5 years ago

I see the problem is also there for all other i18nOptions. Maybe there should be a new boolean option passDown, which defines whether the options will be inherited by the children of the current component.