diff --git a/src/Bones.UI/composables/useTranslations.ts b/src/Bones.UI/composables/useTranslations.ts index c17d411..7ec3d18 100644 --- a/src/Bones.UI/composables/useTranslations.ts +++ b/src/Bones.UI/composables/useTranslations.ts @@ -7,8 +7,8 @@ export function useTranslations() { const $tr = (code: string, defaultValue: string, ...parameters: (string | number)[]): string => { let translation = _translations.value.find(t => t.code === code)?.value ?? defaultValue; if (translation && parameters.length) { - for (let p of parameters) { - translation = translation.replace(`{${parameters.indexOf(p)}}`, p.toString()); + for (let i = 0; i < parameters.length; i++) { + translation = translation.replace(`{${i}}`, parameters[i].toString()); } } return translation; diff --git a/tests/Bones.UI.Tests/tests/plugins.test.ts b/tests/Bones.UI.Tests/tests/plugins.test.ts new file mode 100644 index 0000000..ccd0ea4 --- /dev/null +++ b/tests/Bones.UI.Tests/tests/plugins.test.ts @@ -0,0 +1,21 @@ +import { useTranslations } from '@dative-gpi/bones-ui'; + +describe('Translation plugin', () => { + const { $tr } = useTranslations(); + + it('should return the correct default value with formatted parameter', () => { + const result = $tr('code', 'default value : {0}m', "72"); + expect(result).toBe('default value : 72m'); + }); + + it('should return the correct default value with formatted parameters', () => { + const result = $tr('code', 'default value : {0}m, {1}°C', "72", 85); + expect(result).toBe('default value : 72m, 85°C'); + }); + + it('should return the correct default value with equals formatted parameters', () => { + const result = $tr('code', 'default value : {0}m, {1}°C', "72", "72"); + expect(result).toBe('default value : 72m, 72°C'); + }); +}); +