⧍⧍ āφāĻ—, ⧍ā§Ļ⧍ā§Ģ¡7 āĻŽāĻŋāύāĻŋāϟ āĻĒāĻĄāĻŧāϤ⧇

Vue 3 i18n āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋ 500+ āϕ⧀-āĻ — āĻĒā§āϰāĻĄāĻžāĻ•āĻļāύ⧇ āϚāĻŽāĻ• āĻ›āĻžāĻĄāĻŧāĻž

āĻŦāĻĄāĻŧ āĻ…ā§āϝāĻžāĻĒ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• Vue 3 i18n āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋: āϕ⧀ āύāĻžāĻŽāĻ•āϰāĻŖ, āĻĒā§āϞ⧁āϰāĻžāϞ, QA āĻšā§‡āĻ•, āĻāĻŦāĻ‚ āϰāĻŋāϞāĻŋāϜ āϧāĻžāĻĒ āϝāĻžāϤ⧇ āĻĒā§āϰāĻĄāĻžāĻ•āĻļāύ⧇ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻŽāĻŋāϏ āύāĻž āĻšāϝāĻŧāĨ¤

Vue 3 i18n āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋ 500+ āϕ⧀-āĻ — āĻĒā§āϰāĻĄāĻžāĻ•āĻļāύ⧇ āϚāĻŽāĻ• āĻ›āĻžāĻĄāĻŧāĻž

500+ i18n āϕ⧀-āĻ āϏāĻžāϧāĻžāϰāĻŖāϤ āϕ⧀ āϭ⧁āϞ āĻšāϝāĻŧ

āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇ āĻ•āϝāĻŧ⧇āĻ•āĻļāϟāĻž āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻĒ⧇āϰ⧋āϞ⧇āχ āĻĒā§āϰāĻĨāĻŽ āĻ­āĻžāĻ™āĻž āϜāĻŋāύāĻŋāϏ āϏāĻžāϧāĻžāϰāĻŖāϤ Vue I18n āύāϝāĻŧ—āĻāϟāĻž āĻ¸ā§āĻĨāĻŋāϰāϤāĻž (consistency)āĨ¤ āĻŽāĻžāύ⧁āώ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ¸ā§āϟāĻžāχāϞ⧇ āϕ⧀ āϝ⧋āĻ— āĻ•āϰ⧇, āĻāĻ•āχ āϧāĻžāϰāύāĻžāϕ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āύāĻžāĻŽā§‡ āĻĄā§āĻĒā§āϞāĻŋāϕ⧇āϟ āĻ•āϰ⧇, āĻāĻŦāĻ‚ āφāϰ āϕ⧇āω āύāĻŋāĻļā§āϚāĻŋāϤ āĻĨāĻžāϕ⧇ āύāĻž āϕ⧋āύ āĻŽā§‡āϏ⧇āϜāϗ⧁āϞ⧋ āĻŽā§āĻ›āϞ⧇ āύāĻŋāϰāĻžāĻĒāĻĻāĨ¤

āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻ…āύ⧁āĻŦāĻžāĻĻāĻ“ āφāϰ āĻŦāĻŋāϰāϞ āĻĨāĻžāϕ⧇ āύāĻžāĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āχāωāϜāĻžāϰ āĻĒāĻžāĻĨāϗ⧁āϞ⧋āϤ⧇āχ āĻĻ⧇āĻ–āĻž āĻĻ⧇āϝāĻŧ, āĻŦāĻŋāĻļ⧇āώ āĻ•āϰ⧇ āĻ•āĻŽ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻ¸ā§āĻ•ā§āϰāĻŋāύāϗ⧁āϞ⧋āĻ¤ā§‡â€”āϏ⧇āϟāĻŋāĻ‚āϏ, āĻāϰāϰ āĻ¸ā§āĻŸā§‡āϟ, āĻ–āĻžāϞāĻŋ āĻ¸ā§āĻŸā§‡āϟ, āĻāĻŦāĻ‚ āύ⧋āϟāĻŋāĻĢāĻŋāϕ⧇āĻļāύāϗ⧁āϞāĻŋāϤ⧇āĨ¤

āϝāĻ–āύ āϕ⧋āύ⧋ āĻ…āύ⧁āĻŦāĻžāĻĻ āύ⧇āχ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϏāĻžāϧāĻžāϰāĻŖāϤ āϤāĻŋāύ āϰāĻ•āĻŽ āĻĢāϞāĻžāĻĢāϞ āĻĻ⧇āϖ⧇: āĻ–āĻžāϞāĻŋ UI (āĻŦāĻžāϟāύ⧇ āϞ⧇āĻŦ⧇āϞ āύ⧇āχ), āĻ•āĻžāρāϚāĻž āϕ⧀ āĻĻ⧇āĻ–āĻž āϝāĻžāϝāĻŧ (āϝ⧇āĻŽāύ checkout.pay_now), āĻ•āĻŋāĻ‚āĻŦāĻž āĻĒ⧇āĻœā§‡āϰ āϕ⧋āύ⧋ āĻ…āĻ‚āĻļ āĻšāĻ āĻžā§Ž āĻ…āĻ¨ā§āϝ āĻ­āĻžāώāĻžāϝāĻŧ āϚāϞ⧇ āϝāĻžāϝāĻŧāĨ¤ āĻāϗ⧁āϞ⧋ āϕ⧋āύ⧋ āϛ⧋āϟ āĻŦāĻžāĻ— āĻŽāύ⧇ āĻ•āϰāĻžāϝāĻŧ āύāĻžâ€”āĻāϗ⧁āϞ⧋ āĻ…ā§āϝāĻžāĻĒāϟāĻžāϕ⧇ āĻ­āĻžāĻ™āĻž āĻĻ⧇āĻ–āĻžāϝāĻŧāĨ¤

āĻāχ āϜāĻ¨ā§āϝ Vue 3 i18n āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āφāĻĒāύāĻŋ āϝāĻž āĻŦāϞāĻŦ⧇āύ āϤāĻžāχ āĻ•āϰāĻŦ⧇; āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦāĻĄāĻŧ āφāĻ•āĻžāϰ⧇ āϟāĻŋāĻŽāϰāĻž āĻĒā§āϰāĻžāϝāĻŧāχ āĻāĻ•āĻŽāϤ āĻšāϝāĻŧ āύāĻž āϝ⧇ “āĻ•āĻžāϜ āĻļ⧇āĻˇâ€ āĻšāϞ⧇ āϕ⧀ āĻšāĻŦ⧇āĨ¤

āĻāĻ•āϟāĻŋ āĻĒā§āϰāϚāϞāĻŋāϤ āωāĻĻāĻžāĻšāϰāĻŖ: āĻāĻ•āϜāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰ āύāϤ⧁āύ "Invite teammate" āĻĢā§āϞ⧋ āĻĒāĻžāĻ āĻžāϝāĻŧ ā§Ēā§ĻāϟāĻž āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āύāĻŋāϝāĻŧ⧇āĨ¤ āχāĻ‚āϰ⧇āϜāĻŋ āĻĢāĻžāχāϞ āφāĻĒāĻĄā§‡āϟ āĻšāϝāĻŧ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĢāϰāĻžāϏāĻŋ āĻĢāĻžāχāϞ āĻšāϝāĻŧ āύāĻžāĨ¤ āĻ¸ā§āĻŸā§‡āϜāĻŋāĻ‚-āĻ āϏāĻŦ āĻ āĻŋāĻ• āĻĻ⧇āĻ–āĻžāϝāĻŧ āĻ•āĻžāϰāĻŖ āĻŸā§‡āĻ¸ā§āϟāĻžāϰ āχāĻ‚āϰ⧇āϜāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ āĻĒā§āϰāĻĄāĻžāĻ•āĻļāύ⧇ āĻĢāϰāĻžāϏāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰāĻž āĻŽāĻŋāĻļā§āϰ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ“ āĻ…āύ⧁āĻŦāĻžāĻĻāĻšā§€āύ UI āĻĻ⧇āϖ⧇āύ, āĻāĻŦāĻ‚ āϏāĻžāĻĒā§‹āĻ°ā§āĻŸā§‡ āĻ•āĻžāρāϚāĻž āϕ⧀-āϰ āĻ¸ā§āĻ•ā§āϰāĻŋāύāĻļāϟ āφāϏ⧇āĨ¤

āϏāĻŽāĻžāϧāĻžāύ āĻšāϞ⧋ āĻ…āύ⧁āĻŦāĻžāĻĻāĻŋāϤ UI-āĻāϰ āϜāĻ¨ā§āϝ "āĻ•āĻžāϜ āϏāĻŽā§āĻĒāĻ¨ā§āύ" āϕ⧀ āĻŽāĻžāύ⧇ āϤāĻž āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāĻžāĨ¤ āĻāϟāĻŋ āĻļ⧁āϧ⧁ "āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āϝ⧋āĻ— āĻšāϝāĻŧ⧇āϛ⧇" āĻšāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇ āύāĻžāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āĻĄā§‡āĻĢāĻŋāύāĻŋāĻļāύ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇: āϕ⧀ āϗ⧁āϞ⧋ āύāĻžāĻŽāĻ•āϰāĻŖ āύāĻŋāϝāĻŧāĻŽ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧇, locales āĻŦāĻŋāĻ˛ā§āĻĄ āĻšāϝāĻŧ āĻŽāĻŋāϏāĻŋāĻ‚-āϕ⧀ āϏāϤāĻ°ā§āĻ•āϤāĻž āĻ›āĻžāĻĄāĻŧāĻžāχ, plurals āĻ“ āĻ­ā§āϝāĻžāϰāĻŋāϝāĻŧ⧇āĻŦāϞāϗ⧁āϞ⧋ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻĄā§‡āϟāĻž āĻĻāĻŋāϝāĻŧ⧇ āϏāĻ āĻŋāĻ• āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻšāϝāĻŧ, āĻ…āĻ¨ā§āϤāϤ āĻāĻ•āϟāĻŋ āύāύ-āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϞ⧋āϕ⧇āϞ āϝāĻžāϚāĻžāχ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻāĻŦāĻ‚ āĻ•āĻĒāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āϰāĻž āĻšāĻšā§āϛ⧇ āϝāĻžāϤ⧇ āĻĒ⧁āϰāύ⧋ āϕ⧀āϗ⧁āϞāĻŋ āĻ­āĻžāϏāĻŽāĻžāύ āύāĻž āĻĨāĻžāϕ⧇āĨ¤

500+ āϕ⧀-āĻ āϜāϝāĻŧ āĻĒ⧇āϤ⧇ Localization-āϕ⧇ āĻāĻ•āϟāĻž āϰāĻŋāϞāĻŋāϜ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻšāĻŋāϏ⧇āĻŦ⧇ āύ⧇āĻ“āϝāĻŧāĻž āĻŦ⧁āĻĻā§āϧāĻŋāĻŽāĻžāύ⧇āϰ āĻ•āĻžāϜ, āύāĻž āϝ⧇ āĻļ⧇āώ āĻŽā§āĻšā§‚āĻ°ā§āϤ⧇ āĻļ⧁āϧ⧁ āĻĢāĻžāχāϞ āĻāĻĄāĻŋāϟ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤

āφāϰāĻ“ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āφāϗ⧇ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āύāĻŋāϝāĻŧāĻŽ āĻ āĻŋāĻ• āĻ•āϰ⧁āύ

āĻ•āϝāĻŧ⧇āĻ•āĻļāϟāĻŋ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻĒ⧇āϰ⧋āϞ⧇āχ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āĻžāϜ āφāϰ āĻ—ā§‹āϞāĻŽā§‡āϞ⧇ āĻ…āĻ‚āĻļ āύāϝāĻŧ—āĻ•āύāϏāĻŋāĻ¸ā§āĻŸā§‡āĻ¨ā§āϏāĻŋ āĻšāϝāĻŧ āĻŽā§‚āϞ āĻšā§āϝāĻžāϞ⧇āĻžā§āϜāĨ¤ āϛ⧋āϟ āĻāĻ•āϟāĻž āύāĻŋāϝāĻŧāĻŽ āϏ⧇āϟ āφāĻĒāύāĻžāϰ Vue 3 i18n āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋-āϕ⧇ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•ā§āĻŸā§‡āĻŦāϞ āĻ•āϰ⧇, āĻāĻŽāύāĻ•āĻŋ āϝāĻ–āύ āĻĒā§āϰāϤāĻŋ āϏāĻĒā§āϤāĻžāĻšā§‡ āĻāĻ•āĻžāϧāĻŋāĻ• āϞ⧋āĻ• āĻ•āĻĒāĻŋ āϛ⧁āρāϝāĻŧ⧇āĨ¤

āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ "āĻ•āύāϏ⧇āĻĒā§āϟ" āĻ•āĻŋ āϤāĻž āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϤāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• āϏāĻ¤ā§āϝ āĻ‰ā§ŽāϏ āϰāĻžāϖ⧁āύāĨ¤ āĻāĻ•āχ UI āϧāĻžāϰāύāĻž āϝāĻĻāĻŋ āĻĒāĻžāρāϚ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āφāϏ⧇ (āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, “Save changes”), āφāĻĒāύāĻŋ āĻāĻ•āϟāĻžāχ āϕ⧀ āϚāĻžāύ, āĻĒāĻžāρāϚāϟāĻž āĻ­ā§āϝāĻžāϰāĻŋāϝāĻŧ⧇āĻ¨ā§āϟ āύāĻž (save, saveChanges, save_update, saveBtn)āĨ¤ āĻĄā§āĻĒā§āϞāĻŋāϕ⧇āϟ āϕ⧀āϗ⧁āϞ⧋ āϏāĻŽāϝāĻŧ⧇āϰ āϏāĻžāĻĨ⧇ āĻ…āĻ°ā§āĻĨ⧇ āĻ­āĻžāϏāĻŽāĻžāύ āĻšāϝāĻŧ⧇ āĻĒāĻĄāĻŧ⧇, āĻāĻŦāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϏ⧇āχ āĻ…āϏāĻ™ā§āĻ—āϤāĻŋ āĻ…āύ⧁āĻ­āĻŦ āĻ•āϰ⧇āĨ¤

āĻĒāϰ⧇āϰ āϧāĻžāĻĒ—āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āϕ⧋āĻĨāĻžāϝāĻŧ āĻĨāĻžāĻ•āĻŦ⧇ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻžāĨ¤ āϟāĻŋāĻŽāϗ⧁āϞ⧋ āϏāĻžāϧāĻžāϰāĻŖāϤ āϭ⧁āϞāĻŦāĻļāϤ āĻāϟāĻžāϕ⧇ āĻŦāĻŋāĻ­āĻ•ā§āϤ āĻ•āϰ⧇: āĻ•āĻŋāϛ⧁ āĻŽā§‡āϏ⧇āĻœā§‡ āĻĒāĻžāĻ‚āϚ⧁āϝāĻŧ⧇āĻļāύ āĻ“ āϕ⧇āϏāĻŋāĻ‚ āĻĨāĻžāϕ⧇, āĻ…āĻ¨ā§āϝāϗ⧁āϞ⧋ āϕ⧋āĻĄā§‡ āφāĻļāĻž āĻ•āϰ⧇āĨ¤ āĻāĻ•āϟāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦ⧇āϛ⧇ āύāĻŋāύ āĻāĻŦāĻ‚ āϏ⧇āϟāĻŋ āĻŽā§‡āύ⧇ āϚāϞ⧁āύāĨ¤

āĻāĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āĻĄāĻŋāĻĢāĻ˛ā§āϟ:

  • āĻŦā§āϝāĻžāĻ•āϰāĻŖ, āĻĒāĻžāĻ‚āϚ⧁āϝāĻŧ⧇āĻļāύ, āĻāĻŦāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āϏāĻžāĻŽāύ⧇ āĻĻ⧇āĻ–āĻž āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ (āϝ⧇āĻŽāύ “(optional)”) āĻŽā§‡āϏ⧇āĻœā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āϰāĻžāϖ⧁āύāĨ¤
  • āĻ–āĻžāρāϟāĻŋ āĻĄā§‡āϟāĻž āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āϕ⧋āĻĄā§‡ āϰāĻžāϖ⧁āύ (āϤāĻžāϰāĻŋāĻ–, āĻ•āĻžāϰ⧇āĻ¨ā§āϏāĻŋ, āχāωāύāĻŋāϟ), āĻāĻŦāĻ‚ āĻĢāϞāĻžāĻĢāϞāϟāĻŋ i18n-āĻ āĻĒāĻžāϏ āĻ•āϰ⧁āύāĨ¤
  • āύāĻžāĻŽ āĻ“ āĻ•āĻžāωāĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻĒā§āϞ⧇āϏāĻšā§‹āĻ˛ā§āĻĄāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ, āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻ•āύāĻ•ā§āϝāĻžāϟāĻŋāύ⧇āĻļāύ āύāϝāĻŧāĨ¤
  • āĻŽā§‡āϏ⧇āĻœā§‡ HTML āĻŦā§āϝāĻŦāĻšāĻžāϰāϕ⧇ āĻŦāĻŋāĻļ⧇āώ āϕ⧇āϏ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻ¸ā§āĻĒāĻˇā§āϟ āύāĻŋāϝāĻŧāĻŽ āϰāĻžāϖ⧁āύ (āĻ…āύ⧁āĻŽā§‹āĻĻāĻŋāϤ āύāĻž āĻšāϞ⧇ āύāĻž āĻ•āϰāĻž āĻ­āĻžāϞ)āĨ¤

āϤāĻžāϰāĻĒāϰ Ownership āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰ⧁āύāĨ¤ āϕ⧇ āύāϤ⧁āύ āϕ⧀ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āϕ⧇ āĻŦ⧇āϏ-āĻ˛ā§āϝāĻžāĻ™ā§āϗ⧁āϝāĻŧ⧇āϜ āĻ•āĻĒāĻŋ āϰāĻŋāĻ­āĻŋāω āĻ•āϰāĻŦ⧇, āĻāĻŦāĻ‚ āϕ⧇ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϞ⧋āϕ⧇āϞ āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻ•āϰāĻŦā§‡â€”āĻāϰāĻ•āĻŽ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāύāĨ¤ āύāĻž āĻšāϞ⧇ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϗ⧁āϞ⧋ āϤāĻžāĻĄāĻŧāĻžāĻšā§āĻĄāĻŧā§‹āϝāĻŧ āϝ⧋āĻ— āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻ•āĻ–āύ⧋ āϰāĻŋāĻ­āĻŋāω āĻšāĻŦ⧇ āύāĻžāĨ¤

āĻ…āĻŦāĻļ⧇āώ⧇, āĻāĻ•āϟāĻŋ āĻĢāϞāĻŦā§āϝāĻžāĻ• āĻ¸ā§āĻŸā§āĻ°ā§āϝāĻžāĻŸā§‡āϜāĻŋ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟ āĻ•āϰ⧁āύāĨ¤ āϝāĻĻāĻŋ āϕ⧋āύ⧋ āϕ⧀ āĻŽāĻŋāϏ āĻšāϝāĻŧ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϕ⧀ āĻĻ⧇āĻ–āĻŦ⧇: āϕ⧀ āύāĻžāĻŽ, āĻĄāĻŋāĻĢāĻ˛ā§āϟ-āϞ⧋āϕ⧇āϞ āĻŸā§‡āĻ•ā§āϏāϟ, āύāĻž āĻ•āĻŋ āĻāĻ•āϟāĻž āύāĻŋāϰāĻžāĻĒāĻĻ āĻœā§‡āύ⧇āϰāĻŋāĻ• āĻŽā§‡āϏ⧇āϜ? āĻĒā§āϰāĻĄāĻžāĻ•āĻļāύ⧇ āĻ…āύ⧇āĻ• āϟāĻŋāĻŽ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧇ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϞ⧋āϕ⧇āϞ⧇ āĻĢāϞāĻŦā§āϝāĻžāĻ• āĻ•āϰāĻž āĻ“ āϞāĻ— āĻ•āϰāĻž, āϝāĻžāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻŦā§āϞāĻ• āύāĻž āĻšāϝāĻŧ āφāϰ āφāĻĒāύāĻŋāĻ“ āϏāĻŋāĻ—āĻ¨ā§āϝāĻžāϞ āĻĒāĻžāύ āϝ⧇ āĻ•āĻŋāϛ⧁ āϭ⧁āϞ āφāϛ⧇āĨ¤

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ AppMaster (Vue3 web UI plus real backend code)–āĻāϰ āĻŽāϤ⧋ āĻœā§‡āύāĻžāϰ⧇āϟāϰ āĻĻāĻŋāϝāĻŧ⧇ Vue 3 āĻ…ā§āϝāĻžāĻĒ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āύ, āĻāχ āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞ⧋ āϤāĻŦ⧁ āĻĒā§āϰāϝ⧋āĻœā§āϝāĨ¤ āĻŸā§āϰāĻžāĻ¨ā§āϏāϞ⧇āĻļāύāϕ⧇ "āĻļ⧁āϧ⧁ āĻĄā§‡āĻ­ āĻŸā§‡āĻ•ā§āϏāϟ" āĻšāĻŋāϏ⧇āĻŦ⧇ āύāĻž āĻĻ⧇āϖ⧇ āĻĒā§āϰ⧋āĻĄāĻžāĻ•ā§āϟ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āĻ¨â€”āĻāϤ⧇ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻļ⧇āώ āĻŽā§āĻšā§‚āĻ°ā§āϤ⧇āϰ āϚāĻŽāĻ• āφāĻĒāύāĻŋ āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϝāĻžāĻŦ⧇āύāĨ¤

āĻĒāĻĄāĻŧāϤ⧇ āϏāĻšāϜ āϰāĻžāĻ–āĻžāϰ āϜāĻ¨ā§āϝ āϕ⧀ āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āύāϭ⧇āύāĻļāύ

āĻ•āϝāĻŧ⧇āĻ•āĻļāϟāĻž āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻĒ⧇āϰ⧋āϞ⧇āχ āĻ•āύāϏāĻŋāĻ¸ā§āĻŸā§‡āĻ¨ā§āϏāĻŋ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ āϗ⧁āĻŖāĻŦ⧃āĻĻā§āϧāĻŋāĨ¤ āĻāĻ•āϟāĻžāχ āϕ⧀ āĻ¸ā§āϟāĻžāχāϞ āĻŦ⧇āϛ⧇ āύāĻŋāύ (āĻ…āϧāĻŋāĻ•āĻžāĻ‚āĻļ āϟāĻŋāĻŽ āĻĄāϟ āĻĒāĻžāĻĨ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϝ⧇āĻŽāύ billing.invoice.title) āĻāĻŦāĻ‚ āĻāϟāĻžāϕ⧇āχ āύāĻŋāϝāĻŧāĻŽ āĻŦāĻžāύāĻŋāϝāĻŧ⧇ āĻĻāĻŋāύāĨ¤ āĻĄāϟ, āĻ¸ā§āĻ˛ā§āϝāĻžāĻļ, snake_case, āĻ“ āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āϕ⧇āϏ āĻŽāĻŋāĻļā§āϰāĻŋāϤ āĻ•āϰāϞ⧇ āϏāĻžāĻ°ā§āϚ āĻ“ āϰāĻŋāĻ­āĻŋāω āϧ⧀āϰ āĻ•āϰ⧇āĨ¤

āĻ•āĻĒāĻŋāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āϟāĻŋāϕ⧇ āϟāĻŋāϕ⧇ āĻĨāĻžāĻ•āĻž āĻ¸ā§āĻŸā§‡āĻŦāϞ āϕ⧀āϗ⧁āϞ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ "Please enter your email" āϟāĻžāχāĻĒ⧇āϰ āϕ⧀ āĻ•āĻĒāĻŋāϰ āϏāĻžāĻŽāĻžāĻ¨ā§āϝ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇ āϭ⧇āϙ⧇ āĻĒāĻĄāĻŧāĻŦ⧇āĨ¤ āωāĻĻā§āĻĻ⧇āĻļā§āϝ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āύāĻžāĻŽ āĻĻāĻŋāύ āϝ⧇āĻŽāύ auth.email.required āĻŦāĻž auth.email.invalidāĨ¤

āĻĒā§āϰ⧋āĻĄāĻžāĻ•ā§āϟ āĻāϰāĻŋāϝāĻŧāĻž āĻŦāĻž UI āϏāĻžāϰāĻĢ⧇āϏ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻĒā§āϰāĻĨāĻŽā§‡ āĻ—ā§āϰ⧁āĻĒ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€āĨ¤ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āĻāĻ•āχ āĻŦāĻžāϞāϤāĻŋāϤ⧇ āĻ­āĻžāĻŦ⧁āύ: auth, billing, settings, support, dashboardāĨ¤ āĻāϤ⧇ āϞ⧋āϕ⧇āϞ āĻĢāĻžāχāϞāϗ⧁āϞ⧋ āĻ¸ā§āĻ•ā§āϝāĻžāύ āĻ•āϰāĻž āϏāĻšāϜ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻĄā§āĻĒā§āϞāĻŋāϕ⧇āϟ āĻ•āĻŽ āĻšāϝāĻŧ āϝāĻ–āύ āĻĻ⧁āχāϟāĻž āĻ¸ā§āĻ•ā§āϰāĻŋāύ āĻāĻ•āχ āϧāĻžāϰāύāĻž āϚāĻžāχāĨ¤

āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻāϰāĻŋāϝāĻŧāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻžāϧāĻžāϰāĻŖ UI āĻĒāĻŋāϏāϗ⧁āϞ⧋āϰ āϜāĻ¨ā§āϝ āϛ⧋āϟ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āϰāĻžāϖ⧁āύ:

  • Buttons: *.actions.save, *.actions.cancel
  • Labels: *.fields.email.label, *.fields.password.label
  • Hints/help text: *.fields.email.hint
  • Errors/validation: *.errors.required, *.errors.invalidFormat
  • Notifications/toasts: *.notices.saved, *.notices.failed

āĻĄāĻžāϝāĻŧāύāĻžāĻŽāĻŋāĻ• āĻŽā§‡āϏ⧇āϜāϗ⧁āϞāĻŋāϤ⧇ āϕ⧀ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāĻŦ⧇ āϏ⧇āϟāĻž āĻŦāϞ⧁āύ, āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āύāϝāĻŧāĨ¤ āĻŽā§‡āϏ⧇āϜāϕ⧇ āωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻšāĻŋāϏ⧇āĻŦ⧇ āύāĻžāĻŽ āĻĻāĻŋāύ āĻāĻŦāĻ‚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āĻ…āĻ‚āĻļāϗ⧁āϞ⧋āϰ āϜāĻ¨ā§āϝ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, {days} āϏāĻš billing.invoice.dueInDays billing.invoice.dueIn3Days-āĻāϰ āĻšā§‡āϝāĻŧ⧇ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰāĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ (Vue 3 i18n āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋-āϤ⧇ āĻ­āĻžāϞ⧋ āĻ•āĻžāϜ āĻ•āϰ⧇): orders.summary.itemsCount āϝ⧇āĻ–āĻžāύ⧇ {count} āĻĻāĻŋāϝāĻŧ⧇ āϏāĻ‚āĻ–ā§āϝāĻžāϟāĻŋ āĻĒāĻžāĻ āĻžāύ, āφāϰ orders.summary.total āϝ⧇āĻ–āĻžāύ⧇ {amount} āĻĻāĻŋāϝāĻŧ⧇ āϟāĻžāĻ•āĻž āĻĻ⧇āĻ–āĻžāύāĨ¤ āϕ⧋āĻĄā§‡ āϕ⧇āω āϕ⧀ āĻĒāĻĄāĻŧāϞ⧇ āϜāĻžāύāĻŦ⧇ āĻāϟāĻž āϕ⧋āĻĨāĻžāϝāĻŧ āϞāĻžāϗ⧇ āĻ“ āϕ⧇āύ āφāϛ⧇, āĻāĻŽāύāĻ•āĻŋ āϝāĻĻāĻŋ āĻĢāĻžāχāύāĻžāϞ āĻ•āĻĒāĻŋ āĻĒāϰ⧇ āĻŦāĻĻāϞ⧇ āϝāĻžāϝāĻŧāĨ¤

āĻŦāĻšā§āĻŦāϚāύ āύāĻŋāϝāĻŧāĻŽ āĻ“ āĻŽā§‡āϏ⧇āϜ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āϝāĻžāϤ⧇ āϚāĻŽāĻ• āύāĻž āĻĨāĻžāϕ⧇

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĒā§āϰāĻ¤ā§āϝ⧇āĻ• āĻ­āĻžāώāĻžāϕ⧇ āχāĻ‚āϰ⧇āϜāĻŋāϰ āĻŽāϤ⧋ āϧāϰ⧇āύ, plurals āϚ⧁āĻĒāĻŋāϚ⧁āĻĒāĻŋ āĻ­āĻžāϙ⧇āĨ¤ āĻļ⧁āϰ⧁āϰ āĻĻāĻŋāϕ⧇ āĻ āĻŋāĻ• āĻ•āϰ⧇ āύāĻŋāύ āĻ•āĻ–āύ ICU āĻŽā§‡āϏ⧇āϜ āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ āĻāĻŦāĻ‚ āĻ•āĻ–āύ āϏāĻžāϧāĻžāϰāĻŖ āĻĒā§āϞ⧇āϏāĻšā§‹āĻ˛ā§āĻĄāĻžāϰ āϝāĻĨ⧇āĻˇā§āϟāĨ¤

āϞ⧇āĻŦ⧇āϞ āĻ“ āϛ⧋āϟ UI āĻŸā§‡āĻ•ā§āϏāĻŸā§‡āϰ āϜāĻ¨ā§āϝ āϏāϰāϞ āϰāĻŋāĻĒā§āϞ⧇āϏāĻŽā§‡āĻ¨ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ āϝāĻž āϏāĻ‚āĻ–ā§āϝāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āύāĻž (āωāĻĻāĻžāĻšāϰāĻŖ: "Welcome, {name}")āĨ¤ āĻ—āĻŖāύāĻž-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āϝ⧇āϕ⧋āύ⧋ āϜāĻŋāύāĻŋāϏ⧇āϰ āϜāĻ¨ā§āϝ ICU āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ, āĻ•āĻžāϰāĻŖ āĻāϤ⧇ āϏāĻŦ āĻĢāĻ°ā§āĻŽ āĻāĻ• āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞ⧋ āĻ¸ā§āĻĒāĻˇā§āϟ āĻšāϝāĻŧāĨ¤

{
  "notifications.count": "{count, plural, =0 {No notifications} one {# notification} other {# notifications}}"
}

āĻ•āĻžāωāĻ¨ā§āϟ āĻŽā§‡āϏ⧇āϜāϗ⧁āϞ⧋ āĻāĻŽāύāĻ­āĻžāĻŦ⧇ āϞāĻŋāϖ⧁āύ āϝāĻžāϤ⧇ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āϰāĻž āϏāĻšāϜ āĻšāϝāĻŧāĨ¤ āĻĒ⧁āϰ⧋ āĻŦāĻžāĻ•ā§āϝ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϏāĻ‚āĻ–ā§āϝāĻžāϰ āĻĒā§āϞ⧇āϏāĻšā§‹āĻ˛ā§āĻĄāĻžāϰ (#) āύāĻžāĻŽā§‡āϰ āĻ•āĻžāϛ⧇ āϰāĻžāϖ⧁āύāĨ¤ āϕ⧋āĻĄā§‡ āĻāĻ•āχ āϕ⧀ reuse āĻ•āϰ⧇ "1 item" āĻ“ "2 items" āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āĻŽāϤ āϚāϤ⧁āϰ āĻļāĻ°ā§āϟāĻ•āĻžāϟ āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϚāϞ⧁āĻ¨â€”āĻ…āύ⧁āĻŦāĻžāĻĻāĻ•āϰāĻž āĻĒ⧁āϰ⧋ āĻŽā§‡āϏ⧇āϜ āĻĻ⧇āĻ–āϤ⧇ āϚāĻžāϝāĻŧ, āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϰ⧇āĻĄāĻŋ āĻ•āϰāĻž āĻšāĻŦ⧇ āϤāĻž āφāĻ¨ā§āĻĻāĻžāϜ āĻ•āϰāϤ⧇ āύāϝāĻŧāĨ¤

āĻšāĻžāϤ⧇-āĻ•āϞāĻŽā§‡ =0, one, āĻāĻŦāĻ‚ other āĻ…āĻ¨ā§āϤāϤ āϰāĻžāϖ⧁āύ, āĻāĻŦāĻ‚ 0-āĻāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻŋ āϕ⧀ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻž āĻ•āϰ⧇āύ āϤāĻž āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟ āĻ•āϰ⧁āύāĨ¤ āĻ•āĻŋāϛ⧁ āĻĒā§āϰ⧋āĻĄāĻžāĻ•ā§āϟ “0 items” āϚāĻžāύ, āĻ…āĻ¨ā§āϝāϰāĻž “No items” āϚāĻžāύāĨ¤ āĻāĻ•āϟāĻŋ āĻ¸ā§āϟāĻžāχāϞ āĻŦ⧇āϛ⧇ āύāĻŋāύ āĻāĻŦāĻ‚ āϏ⧇āϟāĻŋ āĻŽā§‡āύ⧇ āϚāϞ⧁āύ āϝāĻžāϤ⧇ UI āĻ•āύāϏāĻŋāĻ¸ā§āĻŸā§‡āĻ¨ā§āϟ āϞāĻžāϗ⧇āĨ¤

āφāϰāĻ“ āϞāĻ•ā§āĻˇā§āϝ āϰāĻžāϖ⧁āĻ¨â€”āĻ•āϝāĻŧ⧇āĻ• āĻ­āĻžāώāĻžāϝāĻŧ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻžāϰ āĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āĻĒā§āϞ⧁āϰāĻžāϞ āĻ•ā§āϝāĻžāϟāĻžāĻ—āϰāĻŋ āĻĨāĻžāϕ⧇āĨ¤ āĻ…āύ⧇āĻ• āĻ­āĻžāώāĻž “one vs many” āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧇ āύāĻžāĨ¤ āϝāĻĻāĻŋ āĻĒāϰ⧇ āύāϤ⧁āύ āϞ⧋āϕ⧇āϞ āϝ⧋āĻ— āĻ•āϰ⧇āύ, āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ one āĻ“ other āĻĨāĻžāĻ•āĻž āĻŽā§‡āϏ⧇āϜāϟāĻŋ āĻŦā§āϝāĻžāĻ•āϰāĻŖāĻ—āϤāĻ­āĻžāĻŦ⧇ āϭ⧁āϞ āĻšāϤ⧇ āĻĒāĻžāϰ⧇, āĻāĻŽāύāĻ•āĻŋ āϝāĻĻāĻŋ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻšāϝāĻŧāĨ¤

āĻļāĻŋāĻĒ āĻ•āϰāĻžāϰ āφāϗ⧇ UI-āϤ⧇ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻ•āĻžāωāĻ¨ā§āϟ āύāĻŋāϝāĻŧ⧇ āĻĒā§āϞ⧁āϰāĻžāϞāϗ⧁āϞ⧋ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧁āύ, āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ JSON āĻĻ⧇āϖ⧇ āύāϝāĻŧāĨ¤ āĻĻā§āϰ⧁āϤ āĻšā§‡āĻ• āĻšāĻŋāϏ⧇āĻŦ⧇ 0, 1, 2, 5, āĻ“ 21 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϏāĻŽāĻ¸ā§āϝāĻž āϧāϰāĻž āĻĒāĻĄāĻŧ⧇āĨ¤

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ Vue3 āĻ“āϝāĻŧ⧇āĻŦ āĻ…ā§āϝāĻžāĻĒ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āύ (āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ AppMaster-āĻāϰ āϏāĻžāĻĨ⧇), āĻāχ āĻŸā§‡āĻ¸ā§āϟāϟāĻŋ āϏ⧇āχ āĻāĻ•āϚ⧁āϝāĻŧāĻžāϞ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇ āĻ•āϰ⧁āύ āϝ⧇āĻ–āĻžāύ⧇ āĻŸā§‡āĻ•ā§āϏāϟāϟāĻŋ āĻĻ⧇āĻ–āĻž āϝāĻžāϝāĻŧāĨ¤ āϞ⧇āφāωāϟ āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞ⧋, āĻ•āĻžāϟāĻ…āĻĢ āĻŸā§‡āĻ•ā§āϏāϟ, āĻāĻŦāĻ‚ āĻ…āĻĻā§āϭ⧁āϤ āĻŦāĻžāĻ•ā§āϝāĻ—āĻ āύ āĻĒā§āϰāĻĨāĻŽā§‡ āϏ⧇āĻ–āĻžāύ⧇ āĻĻ⧇āĻ–āĻž āĻĻ⧇āϝāĻŧāĨ¤

āĻŦ⧃āĻĻā§āϧāĻŋ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧇ āϞ⧋āϕ⧇āϞ āĻĢāĻžāχāϞāϗ⧁āϞ⧋ āϏāĻ‚āĻ—āĻ āĻŋāϤ āĻ•āϰāĻž

One workspace for all locales
Create backend, web UI, and mobile apps in one place and reduce i18n drift.
Start building

āĻ•āϝāĻŧ⧇āĻ•āĻļāϟāĻž āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻĒāĻĄāĻŧāĻžāϰ āĻĒāϰ āĻāĻ•āϟāĻŋ āĻŦāĻĄāĻŧ en.json āĻŦā§‹āϤāϞ āĻ—āϞ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤ āĻāĻ•āχ āĻĢāĻžāχāϞ āĻāĻ•āĻžāϧāĻŋāĻ• āĻŽāĻžāύ⧁āώ āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ•āϰāϞ⧇ āĻŽāĻŋāĻļ.merge āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟ āĻŦāĻžāĻĄāĻŧ⧇, āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āϕ⧋āĻĨāĻžāϝāĻŧ āĻ•āĻĒāĻŋ āφāϛ⧇ āϤāĻž āĻšāĻžāϰāĻžāύāĨ¤ āĻ­āĻžāϞ⧋ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āφāĻĒāύāĻžāϰ Vue 3 i18n āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋-āϕ⧇ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āϰāĻžāϖ⧇ āĻāĻŽāύāĻ•āĻŋ āĻĒā§āϰ⧋āĻĄāĻžāĻ•ā§āϟ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϞ⧇āĻ“āĨ¤

āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦāĻŋāϤ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ

2 āĻĨ⧇āϕ⧇ 5 āϞ⧋āϕ⧇āϞ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ, āĻĢāĻŋāϚāĻžāϰ āĻ…āύ⧁āϏāĻžāϰ⧇ āĻ­āĻžāĻ— āĻ•āϰāĻž āϝāĻĨ⧇āĻˇā§āϟāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϞ⧋āϕ⧇āϞ⧇ āĻāĻ•āχ āĻĢāĻžāχāϞ āϞ⧇āφāωāϟ āϰāĻžāϖ⧁āύ āϝāĻžāϤ⧇ āϕ⧀ āϝ⧋āĻ— āĻ•āϰāĻž āĻĒā§‚āĻ°ā§āĻŦāĻžāύ⧁āĻŽāĻžāύāϝ⧋āĻ—ā§āϝāĨ¤

  • locales/en/common.json, locales/en/auth.json, locales/en/billing.json
  • locales/es/common.json, locales/es/auth.json, locales/es/billing.json
  • locales/index.ts (messages āϞ⧋āĻĄ āĻ“ āĻŽāĻžāĻ°ā§āϜ āĻ•āϰ⧇)

20+ āϞ⧋āϕ⧇āϞ āĻšāϞ⧇ āĻāĻ•āχ āϧāĻžāϰāĻŖāĻž āĻ¸ā§āϕ⧇āϞ āĻ•āϰ⧁āύ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĄā§āϰāĻŋāĻĢā§āϟ āĻ•āĻ āĻŋāύ āĻ•āϰ⧁āύāĨ¤ English-āϕ⧇ āϏ⧋āĻ°ā§āϏ āĻ…āĻĢ āĻŸā§āϰ⧁āĻĨ āĻšāĻŋāϏ⧇āĻŦ⧇ āύāĻŋāύ āĻāĻŦāĻ‚ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧁āύ āϝ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϞ⧋āϕ⧇āϞ āĻāĻ•āχ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻ“ āĻĢāĻžāχāϞ āύāĻžāĻŽ āĻŽāĻŋāϰāϰ āĻ•āϰāĻŦ⧇āĨ¤ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻĄā§‹āĻŽā§‡āχāύ āφāϏ⧇ (āωāĻĻāĻžāĻšāϰāĻŖ notifications), āϏ⧇āϟāĻŋ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϞ⧋āϕ⧇āϞ⧇āϰ āϜāĻ¨ā§āϝ āĻĨāĻžāĻ•āĻž āωāϚāĻŋāϤ, āĻāĻŽāύāĻ•āĻŋ āĻŸā§‡āĻ•ā§āϏāϟ āϏāĻžāĻŽāϝāĻŧāĻŋāĻ• āĻšāϞ⧇āĻ“āĨ¤

āĻĄā§‹āĻŽā§‡āχāύ āĻ…āύ⧁āϏāĻžāϰ⧇ āĻ­āĻžāĻ— āĻ•āϰāϞ⧇ āĻŽāĻŋāĻļ.merge āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟ āĻ•āĻŽā§‡ āĻ•āĻžāϰāĻŖ āĻĻ⧁āχāϜāύ āĻŽāĻžāύ⧁āώ āφāϞāĻžāĻĻāĻž āĻĢāĻžāχāϞ⧇ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āϝ⧋āĻ— āĻ•āϰāϞ⧇ āϤāĻžāϰāĻž āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āωāĻĒāϰ āĻĒāĻĻāĻžāĻ°ā§āĻĒāĻŖ āĻ•āϰ⧇ āύāĻžāĨ¤ āĻĄā§‹āĻŽā§‡āχāύāϗ⧁āϞ⧋ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āϕ⧀āĻ­āĻžāĻŦ⧇ āϤ⧈āϰāĻŋ āĻšāϝāĻŧ⧇āϛ⧇ āϤāĻž āĻŽā§‡āϞ⧇: common, navigation, errors, settings, reports, āĻāĻŦāĻ‚ āĻŦāĻĄāĻŧ āĻāϞāĻžāĻ•āĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻĢāĻŋāϚāĻžāϰ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰāĨ¤

āϕ⧀-āϗ⧁āϞ⧋ āĻ•āύāϏāĻŋāĻ¸ā§āĻŸā§‡āĻ¨ā§āϟ āϰāĻžāĻ–āĻž

āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĢāĻžāχāϞ⧇ āĻāĻ•āχ āϕ⧀ āĻļ⧇āχāĻĒ āϰāĻžāϖ⧁āύ: āĻāĻ•āχ āύ⧇āĻ¸ā§āϟāĻŋāĻ‚, āĻāĻ•āχ āϕ⧀ āύāĻžāĻŽ, āĻļ⧁āϧ⧁ āφāϞāĻžāĻĻāĻž āĻŸā§‡āĻ•ā§āϏāϟāĨ¤ āĻ­āĻžāώāĻž āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ “āĻ•ā§āϰāĻŋāϝāĻŧ⧇āϟāĻŋāĻ­â€ āϕ⧀ āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϚāϞ⧁āύ, āĻāĻŽāύāĻ•āĻŋ āϕ⧋āύ⧋ āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āϰāϤ⧇ āĻ•āĻˇā§āϟāĻ•āϰ āĻšāϞ⧇āĨ¤ āϝāĻĻāĻŋ āχāĻ‚āϰ⧇āϜāĻŋāϤ⧇ billing.invoice.status.paid āϞāĻžāϗ⧇, āĻĒā§āϰāϤāĻŋāϟāĻŋ āϞ⧋āϕ⧇āϞ⧇ āĻ…āĻŦāĻļā§āϝāχ āϏ⧇āχ āĻāĻ•āχ āϕ⧀ āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇āĨ¤

āϝ⧇āϗ⧁āϞ⧋ āϏāĻ¤ā§āϝāĻŋāχ āϏāĻžāϰāĻžāĻŦāĻŋāĻ­āĻžāϗ⧇ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āϤāĻžāĻĻ⧇āϰāχ āϏ⧇āĻ¨ā§āĻŸā§āϰāĻžāϞāĻžāχāϜ āĻ•āϰ⧁āύ: āĻŦāĻžāϟāύ āϞ⧇āĻŦ⧇āϞ, āĻœā§‡āύ⧇āϰāĻŋāĻ• āĻ­ā§āϝāĻžāϞāĻŋāĻĄā§‡āĻļāύ āĻāϰāϰ, āĻ—ā§āϞ⧋āĻŦāĻžāϞ āĻ¨ā§āϝāĻžāĻ­āĻŋāϗ⧇āĻļāύāĨ¤ āĻĢāĻŋāϚāĻžāϰ-āĻ¸ā§āĻĒ⧇āϏāĻŋāĻĢāĻŋāĻ• āĻ•āĻĒāĻŋ āĻĢāĻŋāϚāĻžāϰ⧇āϰ āĻĒāĻžāĻļ⧇āχ āϰāĻžāϖ⧁āύ, āĻāĻŽāύāĻ•āĻŋ āϝāĻĻāĻŋ āϏ⧇āϟāĻž āϰāĻŋāχāωāĻœā§‡āĻŦāϞ āĻŽāύ⧇ āĻšāϝāĻŧāĨ¤ “Save” common-āĻ āϝāĻžāĻŦ⧇; “Save payment method” billing-āĻ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

āĻĻā§€āĻ°ā§āϘ-āĻĢāĻ°ā§āĻŽ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ

āϞāĻŽā§āĻŦāĻž āĻšā§‡āĻ˛ā§āĻĒ āĻŸā§‡āĻ•ā§āϏāϟ, āĻ…āύāĻŦā§‹āĻ°ā§āĻĄāĻŋāĻ‚ āĻ¸ā§āĻŸā§‡āĻĒ, āχāĻŽā§‡āχāϞ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ āĻĻā§āϰ⧁āϤ āĻ—ā§‹āϞāĻŽā§‡āϞ⧇ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āύāĻŋāϝāĻŧāĻŽ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇:

  • āϞāĻ‚-āĻĢāĻ°ā§āĻŽ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āφāϞāĻžāĻĻāĻž āĻĄā§‹āĻŽā§‡āχāύ⧇ āϰāĻžāϖ⧁āύ (āωāĻĻāĻžāĻšāϰāĻŖ help āĻŦāĻž onboarding) āĻāĻŦāĻ‚ āĻ—āĻ­ā§€āϰ āύ⧇āĻ¸ā§āϟāĻŋāĻ‚ āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϚāϞ⧁āύāĨ¤
  • āĻāĻ• āϞāĻžāχāύ⧇āϰ āĻŦā§āϝāĻžāĻĒāĻžāϰ⧇ āĻŦāĻĄāĻŧ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϝāĻŧ⧇āϰ āĻŦāĻĻāϞ⧇ āϛ⧋āϟ āĻĒā§āϝāĻžāϰāĻžāĻ—ā§āϰāĻžāĻĢ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧁āύ, āϝāĻžāϤ⧇ āĻ…āύ⧁āĻŦāĻžāĻĻāĻ•āϰāĻž āύāĻŋāϰāĻžāĻĒāĻĻ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • āϝāĻĻāĻŋ āĻŽāĻžāĻ°ā§āϕ⧇āϟāĻŋāĻ‚ āĻŦāĻž āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻŦāĻžāϰāĻŦāĻžāϰ āĻŸā§‡āĻ•ā§āϏāϟ āĻāĻĄāĻŋāϟ āĻ•āϰ⧇, āϏ⧇āχ āĻŽā§‡āϏ⧇āϜāϗ⧁āϞ⧋ āĻĄā§‡āĻĄāĻŋāϕ⧇āĻŸā§‡āĻĄ āĻĢāĻžāχāϞ⧇ āϰāĻžāϖ⧁āύ āϝāĻžāϤ⧇ āϚāĻžāĻ™ā§āĻ—āĻž āĻ…āĻ‚āĻļāϗ⧁āϞ⧋ āĻ•āĻŽ āĻŦāĻŋāĻ˜ā§āύāĻŋāϤ āĻšāϝāĻŧāĨ¤
  • āχāĻŽā§‡āχāϞ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏāĻžāĻŦāĻœā§‡āĻ•ā§āϟ āĻ“ āĻŦāĻĄāĻŋ āφāϞāĻžāĻĻāĻžāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻĒā§āϞ⧇āϏāĻšā§‹āĻ˛ā§āĻĄāĻžāϰāϗ⧁āϞ⧋ āĻ•āύāϏāĻŋāĻ¸ā§āĻŸā§‡āĻ¨ā§āϟ āϰāĻžāϖ⧁āύ (āύāĻžāĻŽ, āϤāĻžāϰāĻŋāĻ–, āĻ…āĻ‚āĻ•)āĨ¤

āĻāχ āϏ⧇āϟāφāĻĒ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞ⧋ āϰāĻŋāĻ­āĻŋāω āĻ•āϰāĻž, āĻ•ā§āϰāĻŽāĻžāύ⧁āĻŦāĻžāĻĻ āĻ•āϰāĻž, āĻāĻŦāĻ‚ āϰāĻŋāϞāĻŋāĻœā§‡āϰ āĻ āĻŋāĻ• āφāϗ⧇ āĻ…āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻŋāϤ āĻ—ā§āϝāĻžāĻĒ āĻāĻĄāĻŧāĻžāύ⧋ āϏāĻšāϜ āĻ•āϰ⧇āĨ¤

āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āϝ⧋āĻ— āĻ“ āĻļāĻŋāĻĒ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϧāĻžāĻĒ⧇ āϧāĻžāĻĒ⧇ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋

āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ Vue 3 i18n āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋ āϟ⧁āϞ āύāĻŋāϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āύāϝāĻŧ—āĻŦāϰāĻ‚ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻāĻ•āχ āϛ⧋āϟ āϧāĻžāĻĒāϗ⧁āϞāĻŋ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰāĻžāĨ¤ āύāϤ⧁āύ UI āĻŸā§‡āĻ•ā§āϏāϟ āϕ⧋āύ⧋ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāύ⧇ āĻĒā§āϰāĻĄāĻžāĻ•āĻļāύ⧇ āĻĒ⧌āρāĻ›āĻžāĻŦ⧇ āύāĻž āϝāĻĻāĻŋ āύāĻž āϕ⧀ āĻĨāĻžāϕ⧇, āĻāĻ•āϟāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŽā§‡āϏ⧇āϜ āĻĨāĻžāϕ⧇, āĻāĻŦāĻ‚ āĻ¸ā§āĻĒāĻˇā§āϟ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻžāϏ āĻĨāĻžāϕ⧇āĨ¤

āĻļ⧁āϰ⧁āϤ⧇ āϕ⧀āϟāĻŋ āφāĻĒāύāĻžāϰ āĻŦ⧇āϏ āϞ⧋āϕ⧇āϞ⧇ (āĻĒā§āϰāĻžāϝāĻŧāχ en) āϝ⧋āĻ— āĻ•āϰ⧁āύāĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŸā§‡āĻ•ā§āϏāϟ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻ•āĻĒāĻŋāϰ āĻŽāϤ⧋ āϞāĻŋāϖ⧁āύ, āĻĒā§āϞ⧇āϏāĻšā§‹āĻ˛ā§āĻĄāĻžāϰ āύāϝāĻŧāĨ¤ āĻāϤ⧇ āĻĒā§āϰ⧋āĻĄāĻžāĻ•ā§āϟ āĻ“ QA-āϰ āϜāĻ¨ā§āϝ āĻĒāĻĄāĻŧāĻžāϰ āĻŽāϤ āĻ•āĻŋāϛ⧁ āĻĨāĻžāĻ•āĻŦ⧇ āĻāĻŦāĻ‚ āĻĒāϰ⧇ “āϰāĻšāĻ¸ā§āϝ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚â€ āĻšāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇ āύāĻžāĨ¤

āϕ⧀āϟāĻŋ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āĻŸā§‡ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒā§āϰāĻĨāĻŽ āĻĻāĻŋāύ āĻĨ⧇āϕ⧇āχ āĻĒā§āϝāĻžāϰāĻžāĻŽāϏ āĻ“ āĻĒā§āϞ⧁āϰāĻžāϞ āϞāϜāĻŋāĻ• āϝ⧋āĻ— āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āĻ…āύ⧁āĻŦāĻžāĻĻāĻ•āϰāĻž āĻŽā§‡āϏ⧇āĻœā§‡āϰ āĻĒ⧁āϰ⧋ āφāĻ•āĻžāϰ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

// simple param
$t('billing.invoiceDue', { date: formattedDate })

// plural
$t('files.selected', count, { count })

āϝāĻĻāĻŋ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āύāĻž āĻĨāĻžāϕ⧇, āϕ⧀āϗ⧁āϞ⧋ āĻĢāĻžāρāĻ•āĻž āϛ⧇āĻĄāĻŧ⧇ āĻĻ⧇āĻŦ⧇āύ āύāĻžāĨ¤ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϞ⧋āϕ⧇āϞ⧇ āĻĒā§āϞ⧇āϏāĻšā§‹āĻ˛ā§āĻĄāĻžāϰ āĻ…āύ⧁āĻŦāĻžāĻĻ āϝ⧋āĻ— āĻ•āϰ⧁āύ āĻŦāĻž āϏ⧇āϗ⧁āϞ⧋āϕ⧇ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ•āĻ­āĻžāĻŦ⧇ pending āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŽāĻžāĻ°ā§āĻ• āĻ•āϰ⧁āύ (āωāĻĻāĻžāĻšāϰāĻŖ: āĻŽāĻžāύāϟāĻŋ TODO: āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ)āĨ¤ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ…āĻ‚āĻļ āĻšāϞ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•ā§āĻŸā§‡āĻŦāϞāĻ­āĻžāĻŦ⧇ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰāĻž āĻāĻŦāĻ‚ āϰāĻŋāĻ­āĻŋāωāϝāĻŧāĻžāϰāϰāĻž āĻ…āϏāĻŽāĻžāĻĒā§āϤ āĻ•āĻĒāĻŋ āϏāĻšāĻœā§‡ āϖ⧁āρāĻœā§‡ āĻĒāĻžāϝāĻŧāĨ¤

āĻŽāĻžāĻ°ā§āϜ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻĻā§āϰ⧁āϤ āĻ…āĻŸā§‹āĻŽā§‡āĻŸā§‡āĻĄ āĻšā§‡āĻ• āϚāĻžāϞāĻžāύāĨ¤ āϏ⧇āϗ⧁āϞ⧋ āĻŦā§‹āϰāĻŋāĻ‚ āĻ“ āĻ¸ā§āĻŸā§āϰāĻŋāĻ•ā§āϟ āϰāĻžāϖ⧁āύ: āϞ⧋āϕ⧇āϞāϗ⧁āϞ⧋ āϜ⧁āĻĄāĻŧ⧇ āĻŽāĻŋāϏāĻŋāĻ‚ āϕ⧀, āφāύāχāωāϜāĻĄ āϕ⧀, āĻĒā§āϞ⧇āϏāĻšā§‹āĻ˛ā§āĻĄāĻžāϰ āĻŽāĻŋāϏāĻŽā§āϝāĻžāϚ (āϝ⧇āĻŽāύ {count}, {date} āĻŽāĻŋāϏāĻŋāĻ‚ āĻŦāĻž āϭ⧁āϞ āĻŦā§āϰ⧇āϏ), āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āĻ­āĻžāώāĻžāϰ āϜāĻ¨ā§āϝ āĻ…āĻŦ⧈āϧ āĻĒā§āϞ⧁āϰāĻžāϞ āĻĢāĻ°ā§āĻŽ, āĻāĻŦāĻ‚ āφāĻ•āĻ¸ā§āĻŽāĻŋāĻ• āĻ“āĻ­āĻžāϰāϰāĻžāχāϟāĨ¤

āĻļ⧇āώ⧇, āĻ•āĻŽāĻĒāĻ•ā§āώ⧇ āĻāĻ•āϟāĻŋ āύāύ-āĻŦ⧇āϏ āϞ⧋āϕ⧇āϞ⧇ āϛ⧋āϟ āĻāĻ•āϟāĻž UI āĻĒāĻžāϏ āĻ•āϰ⧁āύāĨ¤ āϞ⧇āĻ‚āĻĨāĻŋ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āϜāĻžāĻ°ā§āĻŽāĻžāύ āĻŦāĻž āĻĢāϰāĻžāϏāĻŋ āĻŽāϤ⧋ āĻ­āĻžāώāĻž āĻŦ⧇āϛ⧇ āύāĻŋāύ āϝāĻžāϤ⧇ āĻ“āĻ­āĻžāϰāĻĢā§āϞ⧋, āĻ•āĻžāϟāĻž āĻŦā§‹āϤāĻžāĻŽ āĻāĻŦāĻ‚ āĻ…āĻĻā§āϭ⧁āϤ āϞāĻžāχāύ āĻŦā§āϰ⧇āĻ• āϧāϰāĻž āĻĒāĻĄāĻŧ⧇āĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ Vue 3 UI AppMaster-āĻāϰ āĻŽāϤ⧋ āϕ⧋āύ⧋ āϟ⧁āϞ āĻĻāĻŋāϝāĻŧ⧇ āĻœā§‡āύāĻžāϰ⧇āϟ āĻŦāĻž āĻŽā§‡āχāύāĻŸā§‡āχāύ āĻ•āϰāĻž āĻšāϝāĻŧ, āĻāχ āϧāĻžāĻĒāϟāĻŋ āĻāĻ–āύāĻ“ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻžāϰāĻŖ āϞ⧇āφāωāϟ āĻĢāĻŋāϚāĻžāϰ āĻŦāĻĻāϞ⧇ āϗ⧇āϞ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧāĨ¤

āĻāχāϗ⧁āϞ⧋āϕ⧇ āϝ⧇āϕ⧋āύ⧋ āĻĢāĻŋāϚāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϰ "āĻĄā§‡āĻĢāĻŋāύāĻŋāĻļāύ āĻ…āĻĢ āĻĄāĻžāύ" āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧁āύāĨ¤

āϟāĻŋāĻŽāϗ⧁āϞ⧋ āϝ⧇ āϏāĻžāϧāĻžāϰāĻŖ āϭ⧁āϞāϗ⧁āϞ⧋ āĻŦāĻžāϰāĻŦāĻžāϰ āĻ•āϰ⧇

Test your workflow on a real build
Create a small internal tool and practice the i18n release checklist on a real app.
Start free

āϞ⧋āĻ•āĻžāϞāĻžāχāĻœā§‡āĻļāύāϕ⧇āχ āĻ•āĻˇā§āϟāϏāĻžāĻ§ā§āϝ āĻ•āϰ⧇ āϤ⧋āϞāĻžāϰ āĻĻā§āϰ⧁āϤāϤāĻŽ āωāĻĒāĻžāϝāĻŧ āĻšāϞ i18n āϕ⧀-āϕ⧇ āĻļ⧁āϧ⧁ "āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚" āĻŽāύ⧇ āĻ•āϰāĻžāĨ¤ āĻ•āϝāĻŧ⧇āĻ•āĻļāϟāĻž āϕ⧀ āĻšāϞ⧇ āϛ⧋āϟ āĻ…āĻ­ā§āϝāĻžāϏāϗ⧁āϞ⧋ āĻĒā§āϰāĻĄāĻžāĻ•āĻļāύ⧇ āĻŦāĻžāϗ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻšāϝāĻŧāĨ¤

āϕ⧀āϗ⧁āϞ⧋ āϝ⧇ āĻ­āĻžāϏ⧇, āϏāĻ‚āϘāĻ°ā§āώ āĻ•āϰ⧇, āĻŦāĻž āĻŽāĻŋāĻĨā§āϝāĻž āĻŦāϞ⧇

āϟāĻžāχāĻĒā§‹ āĻ“ āϕ⧇āϏāĻŋāĻ‚ āĻ­āĻŋāĻ¨ā§āύāϤāĻž āĻ•ā§āϞāĻžāϏāĻŋāĻ• āĻ•āĻžāϰāĻŖ: āĻāĻ•āϟāĻž āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ checkout.title, āĻ…āĻ¨ā§āϝ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ Checkout.titleāĨ¤ āϕ⧋āĻĄ āϰāĻŋāĻ­āĻŋāωāϤ⧇ āĻ āĻŋāĻ•āχ āĻŽāύ⧇ āĻšāϝāĻŧ, āĻĒāϰ⧇ āφāĻĒāύāĻžāϰ āĻĢāϞāĻŦā§āϝāĻžāĻ• āĻ­āĻžāώāĻž āϚ⧁āĻĒāϚāĻžāĻĒ āĻļāĻŋāĻĒ āĻšāϝāĻŧāĨ¤

āφāϰ⧇āĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āĻšāϞ⧋ āĻāĻ• āϕ⧀ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ…āĻ°ā§āĻĨ⧇ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāĨ¤ “Open” āĻšāϤ⧇ āĻĒāĻžāϰ⧇ “Open ticket” āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇ āĻāĻŦāĻ‚ “Open now” āĻ¸ā§āĻŸā§‹āϰ āĻĒ⧇āĻœā§‡āĨ¤ āĻāĻ•āχ āϕ⧀ reuse āĻ•āϰāϞ⧇ āĻ…āĻ¨ā§āϝ āĻ­āĻžāώāĻžāϝāĻŧ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāύ āϭ⧁āϞ āĻšāĻŦ⧇, āĻāĻŦāĻ‚ āĻ…āύ⧁āĻŦāĻžāĻĻāĻ•āϰāĻž āφāĻ¨ā§āĻĻāĻžāϜ āĻ•āϰāĻŦ⧇āĨ¤

āϏāĻšāϜ āύāĻŋāϝāĻŧāĻŽ: āĻāĻ•āϟāĻŋ āϕ⧀ = āĻāĻ•āϟāĻŋ āĻ…āĻ°ā§āĻĨāĨ¤ āϝāĻĻāĻŋ āĻ…āĻ°ā§āĻĨ āĻŦāĻĻāϞ⧇ āϝāĻžāϝāĻŧ, āύāϤ⧁āύ āϕ⧀ āĻŦāĻžāύāĻžāĻ¨â€”even āϝāĻĻāĻŋ āχāĻ‚āϰ⧇āϜāĻŋ āĻŸā§‡āĻ•ā§āϏāϟ āĻāĻ•āχ āĻĨāĻžāϕ⧇āĨ¤

“āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚-āφāĻ•ā§ƒāϤāĻŋāĻ°â€ āϧāĻžāϰāĻŖāĻž āĻĨ⧇āϕ⧇ āϞ⧇āφāωāϟ āĻŦāĻžāĻ—

āϟāĻŋāĻŽāϰāĻž āĻĒā§āϰāĻžāϝāĻŧāχ āĻĒāĻžāĻ‚āϚ⧁āϝāĻŧ⧇āĻļāύ, āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚, āĻŦāĻž āĻ•āĻŋāϛ⧁ HTML āĻŸā§āϰāĻžāĻ¨ā§āϏāϞ⧇āĻļāύ⧇ āĻšāĻžāĻ°ā§āĻĄāϕ⧋āĻĄ āĻ•āϰ⧇āĨ¤ āĻāϟāĻž āĻ•āĻžāϜ āĻ•āϰ⧇ āϝāϤāĻ•ā§āώāĻŖ āύāĻž āϕ⧋āύ⧋ āĻ­āĻžāώāĻžāϝāĻŧ āφāϞāĻžāĻĻāĻž āĻĒāĻžāĻ‚āϚ⧁āϝāĻŧ⧇āĻļāύ āϞāĻžāϗ⧇, āĻŦāĻž āφāĻĒāύāĻžāϰ UI āĻŽāĻžāĻ°ā§āĻ•āφāĻĒ āφāϞāĻžāĻĻāĻž āϰ⧂āĻĒ⧇ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰ⧇āĨ¤ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āĻŸā§‡ āĻŽāĻžāĻ°ā§āĻ•āφāĻĒ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āϰāĻžāϖ⧁āύ, āĻāĻŦāĻ‚ āĻŽā§‡āϏ⧇āϜāϗ⧁āϞ⧋āϕ⧇ āĻŸā§‡āĻ•ā§āϏāϟ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āϰāĻžāϖ⧁āύāĨ¤

āĻŽā§‹āĻŦāĻžāχāϞ⧇āχ āϏāĻŽāĻ¸ā§āϝāĻž āϞ⧁āĻ•āĻŋāϝāĻŧ⧇ āĻĨāĻžāϕ⧇āĨ¤ āχāĻ‚āϰ⧇āϜāĻŋāϤ⧇ āĻĢāĻŋāϟ āĻ•āϰāĻž āϞ⧇āĻŦ⧇āϞ āϜāĻžāĻ°ā§āĻŽāĻžāύ⧇ āϤāĻŋāύ āϞāĻžāχāύ āĻŦāĻžāĻ•ā§āϝ⧇ āϭ⧇āϙ⧇ āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰ⧇, āĻŦāĻž āĻĨāĻžāχ āĻ­āĻžāώāĻžāϝāĻŧ āĻ“āĻ­āĻžāϰāĻĢā§āϞ⧋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻļ⧁āϧ⧁ āĻāĻ• āĻ¸ā§āĻ•ā§āϰāĻŋāύ āϏāĻžāχāϜ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧇āύ, āϤāĻž āĻŽāĻŋāϏ āĻ•āϰāĻŦ⧇āύāĨ¤

āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻĻ⧇āĻ–āĻž āĻ…āĻĒāĻŦā§āϝāĻŦāĻšāĻžāϰāϗ⧁āϞ⧋: āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āχāĻ¨ā§āϏāĻžāĻ°ā§āϟ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āχāĻ‚āϰ⧇āϜāĻŋ āĻļāĻŦā§āĻĻāĻ•ā§āϰāĻŽ āϧāϰ⧇ āύ⧇āĻ“āϝāĻŧāĻž, āĻāĻ•āĻžāϧāĻŋāĻ• āϟ⧁āĻ•āϰ⧋ āϝ⧋āĻ— āĻ•āϰ⧇ āĻŽā§‡āϏ⧇āϜ āĻŦāĻžāύāĻžāύ⧋ āĻŦāĻĻāϞ⧇ āĻāĻ•āϟāĻŋāχ āĻŽā§‡āϏ⧇āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰāĻž, āĻĻā§€āĻ°ā§āϘ āĻ­ā§āϝāĻžāϞ⧁ (āĻĒā§āϰ⧋āĻĄāĻžāĻ•ā§āϟ āύāĻžāĻŽ, āĻ āĻŋāĻ•āĻžāύāĻž, āĻāϰāϰ āĻĄāĻŋāĻŸā§‡āχāϞ) āĻŸā§‡āĻ¸ā§āϟ āύāĻž āĻ•āϰāĻž, āϏāĻžāχāϞ⧇āĻ¨ā§āϟ āĻĢāϞāĻŦā§āϝāĻžāĻ• āĻāύ⧇āĻŦāϞ āĻ•āϰ⧇ āĻļāĻŋāĻĒ āĻ•āϰāĻž āϝāĻžāϤ⧇ āĻŽāĻŋāϏāĻŋāĻ‚ āϕ⧀ āχāĻ‚āϰ⧇āϜāĻŋāϤ⧇ "āĻ āĻŋāĻ•" āĻĻ⧇āĻ–āĻžāϝāĻŧ, āĻāĻŦāĻ‚ āχāĻ‚āϰ⧇āϜāĻŋ āĻŽāĻžāύ āĻāĻĄāĻŋāϟ āĻ•āϰ⧇ āϕ⧇āĻŦāϞ āϏ⧇āϟāĻžāχ āĻ•āĻĒāĻŋ-āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰāĻžāĨ¤

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϚāĻžāύ Vue 3 i18n āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋ 500+ āϕ⧀-āĻ āĻļāĻžāĻ¨ā§āϤ āĻĨāĻžāϕ⧇, āϕ⧀-āϗ⧁āϞ⧋āϕ⧇ āφāĻĒāύāĻžāϰ API āĻšāĻŋāϏāĻžāĻŦ⧇ āφāϚāϰāĻŖ āĻ•āϰ⧁āύ: āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ, āĻ¸ā§āĻĒ⧇āϏāĻŋāĻĢāĻŋāĻ•, āĻāĻŦāĻ‚ āĻŸā§‡āĻ¸ā§āĻŸā§‡āĻĄāĨ¤

āĻ…āύ⧁āĻŦāĻžāĻĻ āĻŽāĻŋāϏ āĻšāĻ“āϝāĻŧāĻž āφāϗ⧇ āϧāϰāĻžāϰ āϜāĻ¨ā§āϝ QA āϧāĻžāĻĒ

Ship new UI without surprises
Turn new flows into working screens quickly, then validate strings in a second locale.
Prototype now

āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻĨāĻžāĻ•āĻž āϏāĻšāĻœā§‡ āĻŽāĻŋāϏ āĻšāϝāĻŧ āĻ•āĻžāϰāĻŖ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ āĻāĻ–āύāĻ“ “āϚāϞāϛ⧇āĨ¤â€ āĻļ⧁āϧ⧁ āϕ⧀-āϤ⧇ āĻĢ⧇āϞāĻŦā§āϝāĻžāĻ• āĻ•āϰ⧇, āϭ⧁āϞ āϞ⧋āϕ⧇āϞ⧇ āϚāϞ⧇ āϝāĻžāϝāĻŧ, āĻŦāĻž āĻ–āĻžāϞāĻŋ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻĻ⧇āĻ–āĻžāϝāĻŧāĨ¤ āĻŸā§āϰāĻžāĻ¨ā§āϏāϞ⧇āĻļāύ āĻ•āĻžāĻ­āĻžāϰ⧇āϜāϕ⧇ āĻŸā§‡āĻ¸ā§āĻŸā§‡āϰ āĻŽāϤ⧋ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύ: āφāĻĒāύāĻŋ āϚāĻžāύ āĻĻā§āϰ⧁āϤ āĻĢāĻŋāĻĄāĻŦā§āϝāĻžāĻ• āφāϰ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ⧇ āϝāĻžāĻ“āϝāĻŧāĻžāϰ āφāϗ⧇ āϏāĻŽāĻ¸ā§āϝāĻž āϧāϰāĻž āĻĒāĻĄāĻŧ⧁āĻ•āĨ¤

āĻ…āĻŸā§‹āĻŽā§‡āĻŸā§‡āĻĄ āĻšā§‡āĻ• (āĻĒā§āϰāϤāĻŋ PR-āĻ āϚāĻžāϞāĻžāύ)

āĻŦāĻŋāĻ˛ā§āĻĄ āĻĢ⧇āϞ āĻ•āϰ⧇ āĻāĻŽāύ āĻšā§‡āĻ• āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ, āύāĻž āĻāĻŽāύ āĻšā§‡āĻ• āϝāĻž āĻļ⧁āϧ⧁ āĻ“āϝāĻŧāĻžāĻ°ā§āύāĻŋāĻ‚ āĻĒā§āϰāĻŋāĻ¨ā§āϟ āĻ•āϰ⧇ āϝāĻžāϕ⧇ āϕ⧇āω āĻĒāĻĄāĻŧ⧇ āύāĻžāĨ¤

  • āϕ⧋āĻĄāĻŦ⧇āϏ āĻ¸ā§āĻ•ā§āϝāĻžāύ āĻ•āϰ⧇ $t('...') āĻ“ t('...') āĻŦā§āϝāĻŦāĻšāĻžāϰ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āĻĒā§āϰāĻ¤ā§āϝ⧇āĻ• āĻŦā§āϝāĻŦāĻšā§ƒāϤ āϕ⧀ āĻŦ⧇āϏ āϞ⧋āϕ⧇āϞ⧇ āφāϛ⧇ āĻ•āĻŋ āύāĻž āϝāĻžāϚāĻžāχ āĻ•āϰ⧁āύāĨ¤
  • āϞ⧋āϕ⧇āϞāϗ⧁āϞ⧋āϰ āϕ⧀ āϏ⧇āϟ āϤ⧁āϞāύāĻž āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āϕ⧋āύ⧋ āϞ⧋āϕ⧇āϞ āϕ⧀ āĻŽāĻŋāϏ āĻ•āϰ⧇ āϤāĻžāĻšāϞ⧇ āĻĢ⧇āϞ āĻ•āϰ⧁āύ (āĻŦāĻļāĻ°ā§āϤ⧇ āĻ“āχ āϕ⧀ āϛ⧋āϟ, āϰāĻŋāĻ­āĻŋāω āĻ•āϰāĻž āĻāĻ•ā§āϏāϏ⧇āĻĒāĻļāύ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ āφāϛ⧇ āύāĻž)āĨ¤
  • āĻ…āϰāĻĢāĻžāύ āϕ⧀āϗ⧁āϞ⧋ āĻĢā§āĻ˛ā§āϝāĻžāĻ— āĻ•āϰ⧁āĻ¨â€”āϞ⧋āϕ⧇āϞ āĻĢāĻžāχāϞ⧇ āφāϛ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāĻšā§āϛ⧇ āύāĻžāĨ¤
  • āĻŽā§‡āϏ⧇āϜ āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āϝāĻžāϚāĻžāχ āĻ•āϰ⧁āύ (āĻĒā§āϞ⧇āϏāĻšā§‹āĻ˛ā§āĻĄāĻžāϰ, ICU/āĻĒā§āϞ⧁āϰāĻžāϞ āĻŦā§āϞāĻ•)āĨ¤ āĻāĻ•āϟāĻŋ āĻ­āĻžāĻ™āĻž āĻŽā§‡āϏ⧇āϜ āϰuntime-āĻ āĻĒ⧇āϜ āĻ•ā§āĻ°ā§āϝāĻžāĻļ āĻ•āϰāĻžāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • āĻĄā§āĻĒā§āϞāĻŋāϕ⧇āϟ āϕ⧀ āĻŦāĻž āĻ…āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āϕ⧇āϏāĻŋāĻ‚āϕ⧇ āĻāϰāϰ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύāĨ¤

āĻāĻ•ā§āϏāϏ⧇āĻĒāĻļāύ āϤāĻžāϞāĻŋāĻ•āĻž āϛ⧋āϟ āϰāĻžāϖ⧁āύ āĻāĻŦāĻ‚ āϟāĻŋāĻŽā§‡āϰ āĻŽāĻžāϞāĻŋāĻ•āĻžāύāĻžāϝāĻŧ āϰāĻžāϖ⧁āĻ¨â€”"āϝ⧇āϟāĻž CI āĻĒāĻžāϏ āĻ•āϰāĻžāϝāĻŧ āϏ⧇āϟāĻž āĻĨāĻžāĻ•āϞ⧇ āϚāϞāĻŦ⧇" āϧāĻžāρāĻšā§‡ āύāĻžāĨ¤

āϰUNTIME āĻ“ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞ āĻšā§‡āĻ• (āĻ¸ā§āĻŸā§‡āϜāĻŋāĻ‚)

CI āĻĨāĻžāĻ•āϞ⧇āĻ“ āĻ¸ā§āĻŸā§‡āϜāĻŋāĻ‚-āĻ āĻāĻ•āϟāĻŋ āύ⧇āϟ āϰāĻžāĻ–āĻž āĻ­āĻžāϞ āĻ•āĻžāϰāĻŖ āĻĒā§āϰāĻ•ā§ƒāϤ āχāωāϜāĻžāϰ āĻĒāĻžāĻĨāϗ⧁āϞ⧋ āĻāĻŽāύ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻŸā§āϰāĻŋāĻ—āĻžāϰ āĻ•āϰ⧇ āϝāĻž āφāĻĒāύāĻŋ āϭ⧁āϞ⧇ āϗ⧇āϛ⧇āύāĨ¤

āĻ¸ā§āĻŸā§‡āϜāĻŋāĻ‚-āĻ missing-translation āϞāĻ—āĻŋāĻ‚ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻĻā§āϰ⧁āϤ āĻĢāĻŋāĻ•ā§āϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϝāĻĨ⧇āĻˇā§āϟ āĻ•āύāĻŸā§‡āĻ•ā§āϏāϟ āĻĻāĻŋāύ: āϞ⧋āϕ⧇āϞ, āϰ⧁āϟ, āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟ āύāĻžāĻŽ (āϝāĻĻāĻŋ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ), āĻāĻŦāĻ‚ āĻŽāĻŋāϏāĻŋāĻ‚ āϕ⧀āĨ¤ āĻāϟāĻžāϕ⧇ āĻœā§‹āϰāĻžāϞ⧋ āĻ•āϰ⧁āĻ¨â€”āϝāĻĻāĻŋ āϏāĻšāĻœā§‡ āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāĻž āϝāĻžāϝāĻŧ, āϤāĻž āωāĻĒ⧇āĻ•ā§āώāĻŋāϤ āĻšāĻŦ⧇āĨ¤

āĻāĻ•āϟāĻŋ āĻĒāϏ⧁āĻĄā§‹-āϞ⧋āϕ⧇āϞ āϝ⧋āĻ— āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻĻā§āϰ⧁āϤ UI āĻĒāĻžāϏ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ āϏāĻšāϜ āĻāĻ•āϟāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āĻšāϞ⧋ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāĻ°ā§āĻŽ āĻ•āϰāĻž (āϞāĻŽā§āĻŦāĻž āĻ•āϰ⧇ āĻ“ āĻŽāĻžāĻ°ā§āĻ•āĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž) āϝāĻžāϤ⧇ āϞ⧇āφāωāϟ āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞ⧋ āĻšā§‹āϖ⧇ āĻĒāĻĄāĻŧ⧇, āωāĻĻāĻžāĻšāϰāĻŖ: [!!! 𝗧𝗲𝘅𝘁 𝗲𝘅đ—Ŋ𝗮đ—ģ𝗱𝗲𝗱 !!!]āĨ¤ āĻāϟāĻž āĻ•āĻžāĻŸā§‹ āĻŦā§‹āϤāĻžāĻŽ, āĻ­āĻžāĻ™āĻž āĻŸā§‡āĻŦāĻŋāϞ āĻšā§‡āĻĄāĻžāϰ, āĻāĻŦāĻ‚ āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚ āϏāĻŽāĻ¸ā§āϝāĻž āϧāϰāĻžāϝāĻŧāĨ¤

āĻ…āĻŦāĻļ⧇āώ⧇, āϰāĻŋāϞāĻŋāĻœā§‡āϰ āφāϗ⧇ ā§¨â€“ā§Š āϞ⧋āϕ⧇āϞ⧇ āφāĻĒāύāĻžāϰ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ-āĻ­ā§āϝāĻžāϞ⧁ āĻĒā§āϰāĻŦāĻžāĻšāϗ⧁āϞ⧋āϰ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āĻ¸ā§āĻĒāϟ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: āϏāĻžāχāύ-āχāύ, āĻšā§‡āĻ•āφāωāϟ/āĻĒ⧇āĻŽā§‡āĻ¨ā§āϟ, āϕ⧋āϰ āϏ⧇āϟāĻŋāĻ‚āϏ, āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āϝ⧇ āύāϤ⧁āύ āĻĢāĻŋāϚāĻžāϰ āϰāĻŋāϞāĻŋāϜ āĻ•āϰāϛ⧇āύāĨ¤ āĻāĻ–āĻžāύ⧇āχ āϧāϰāĻž āĻĒāĻĄāĻŧ⧇ "āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āϰāĻž āφāϛ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĒā§āϞ⧇āϏāĻšā§‹āĻ˛ā§āĻĄāĻžāϰ āϭ⧁āϞ" āĻŦāĻžāĻ—āĨ¤

āύāϤ⧁āύ āĻ­āĻžāώāĻž āϝ⧋āĻ— āĻ•āϰāĻž āĻ“ āĻ•ā§āϰāĻŽāĻžāĻ—āϤ āĻ•āĻĒāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰāĻž

āύāϤ⧁āύ āĻ­āĻžāώāĻž āϝ⧋āĻ— āĻ•āϰāĻž āϤāĻ–āύāχ āĻ—ā§‹āϞāĻŽā§‡āϞ⧇ āĻšāϝāĻŧ āϝāĻ–āύ āφāĻĒāύāĻŋ āĻāϟāĻžāϕ⧇ "āĻ•āĻĒāĻŋ āĻ•āĻžāϜ" āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧇āύ āύāĻž āϝ⧇ āĻāϟāĻž āφāϏāϞ⧇ āĻāĻ•āϟāĻŋ āϛ⧋āϟ āĻĒā§āϰ⧋āĻĄāĻžāĻ•ā§āϟ āϰāĻŋāϞāĻŋāϜāĨ¤ āφāĻĒāύāĻžāϰ Vue 3 i18n āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āϰāĻžāĻ–āϤ⧇ āϏāĻšāϜ āωāĻĒāĻžāϝāĻŧ āĻšāϞ⧋ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ āĻāĻŽāύāĻ­āĻžāĻŦ⧇ āĻŦāĻžāύāĻžāύ⧋ āϝāĻžāϤ⧇ incomplete āϞ⧋āϕ⧇āϞ āĻĨāĻžāĻ•āϞ⧇āĻ“ āĻŦāĻŋāĻ˛ā§āĻĄ āĻšāϝāĻŧ, āϤāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰāĻž āĻĻ⧇āĻ–āĻžāϰ āφāϗ⧇ āĻ—ā§āϝāĻžāĻĒāϗ⧁āϞ⧋ āĻ¸ā§āĻĒāĻˇā§āϟ āĻ•āϰ⧇ āϤ⧋āϞāĻž āϝāĻžāϝāĻŧāĨ¤

āύāϤ⧁āύ āϞ⧋āϕ⧇āϞ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āϏ⧋āĻ°ā§āϏ āϞ⧋āϕ⧇āϞ (āĻĒā§āϰāĻžāϝāĻŧāχ en) āĻĨ⧇āϕ⧇ āĻāĻ•āχ āĻĢāĻžāχāϞ āĻļ⧇āĻĒ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύāĨ¤ āφāϗ⧇ āĻ…āύ⧁āĻŦāĻžāĻĻ āύāϝāĻŧ, āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āĻ•āϰ⧁āύāĨ¤

  • āϏ⧋āĻ°ā§āϏ āĻĨ⧇āϕ⧇ āĻĢ⧁āϞ āϕ⧀ āϏ⧇āϟ āĻ•āĻĒāĻŋ āĻ•āϰ⧇ āύāϤ⧁āύ āϞ⧋āϕ⧇āϞ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ/āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύāĨ¤
  • āĻ­ā§āϝāĻžāϞ⧁āϗ⧁āϞ⧋ TODO āĻĒā§āϞ⧇āϏāĻšā§‹āĻ˛ā§āĻĄāĻžāϰ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŽāĻžāĻ°ā§āĻ• āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ QA-āϤ⧇ āĻŽāĻŋāϏāĻŋāĻ‚ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϗ⧁āϞ⧋ āĻĻ⧇āĻ–āĻž āϝāĻžāϝāĻŧāĨ¤
  • āĻ­āĻžāώāĻž āϏ⧁āχāϚāĻžāϰ⧇ āύāϤ⧁āύ āϞ⧋āϕ⧇āϞ āϝ⧋āĻ— āĻ•āϰ⧁āύ āĻļ⧁āϧ⧁ āĻŦ⧇āϏāĻŋāĻ• āĻ•āĻ­āĻžāϰ āĻ•āϰāĻž āĻšāϞ⧇āĨ¤
  • āĻ¸ā§āĻ•ā§āϰāĻŋāύ-āĻŦāĻžāχ-āĻ¸ā§āĻ•ā§āϰāĻŋāύ āĻĒāĻžāϏ āϚāĻžāϞāĻžāύ āϞ⧇āφāωāϟ āϏāĻŽāĻ¸ā§āϝāĻž āϧāϰāϤ⧇ (āĻĻā§€āĻ°ā§āϘ āĻļāĻŦā§āĻĻ, āĻ°â€ā§āϝāĻžāĻĒāĻŋāĻ‚)āĨ¤

āĻ…āύ⧁āĻŦāĻžāĻĻ āĻĒā§āϰāĻžāϝāĻŧāĻļāχ āĻĻ⧇āϰāĻŋāϤ⧇ āφāϏ⧇, āϤāĻžāχ āφāϗ⧇ āĻĨ⧇āϕ⧇āχ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧁āύ "āĻĒāĻžāϰāĻļāĻŋāϝāĻŧāĻžāϞ" āĻŽāĻžāύ⧇ āϕ⧀ āφāĻĒāύāĻžāϰ āĻĒā§āϰ⧋āĻĄāĻžāĻ•ā§āĻŸā§‡āĨ¤ āϝāĻĻāĻŋ āϕ⧋āύ⧋ āĻĢāĻŋāϚāĻžāϰ āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāϰ-āĻĢ⧇āϏāĻŋāĻ‚ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āĻĢāĻŋāϚāĻžāϰ āĻĢā§āĻ˛ā§āϝāĻžāĻ— āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āĻĢāĻŋāϚāĻžāϰ āĻ“ āϤāĻžāϰ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻāĻ•āϏāĻžāĻĨ⧇ āĻļāĻŋāĻĒ āĻšāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻļāĻŋāĻĒ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ, āĻ¸ā§āĻĒāĻˇā§āϟ āĻĢāϞāĻŦā§āϝāĻžāĻ• (āϝ⧇āĻŽāύ āχāĻ‚āϰ⧇āϜāĻŋ) āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧁āύ āĻ–āĻžāϞāĻŋ āϞ⧇āĻŦ⧇āϞ āĻ›āĻžāĻĄāĻŧāĻžāϰ āĻšā§‡āϝāĻŧ⧇, āϤāĻŦ⧇ āϏ⧇āϟāĻŋ āĻ¸ā§āĻŸā§‡āϜāĻŋāĻ‚-āĻ āĻœā§‹āϰāĻžāϞ⧋āĻ­āĻžāĻŦ⧇ āĻĻ⧇āĻ–āĻžāύāĨ¤

āĻ•āĻĒāĻŋ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϞ⧇ āϟāĻŋāĻŽāϗ⧁āϞ⧋ āϕ⧀ āĻ­āĻžāĻ™āĻžāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻļāĻŦā§āĻĻ āĻŦāĻĻāϞāĻžāύ, āϕ⧀ āĻ¸ā§āĻĨāĻŋāϰ āϰāĻžāϖ⧁āύāĨ¤ āϕ⧀-āϗ⧁āϞ⧋ āωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰāĻŦ⧇, āϏāĻ āĻŋāĻ• āĻŦāĻžāĻ•ā§āϝ āύāϝāĻŧāĨ¤ āϕ⧀ āϰāĻŋāĻĒā§āϞ⧇āϏ āĻŦāĻž āϰāĻŋāύ⧇āĻŽ āϤāĻ–āύāχ āĻ•āϰ⧁āύ āϝāĻ–āύ āĻ…āĻ°ā§āĻĨ āĻŦāĻĻāϞ⧇ āϝāĻžāϝāĻŧ, āĻāĻŦāĻ‚ āϤāĻž āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŋāϤ āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āĻ•āϰ⧇ āĻ•āϰ⧁āύāĨ¤

"āϜāĻžāĻŽā§āĻĒāĻŋ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚" āĻāĻĄāĻŧāĻžāϤ⧇, āϕ⧀āϗ⧁āϞ⧋ āĻĄāĻŋāĻĒā§āϰāĻŋāϕ⧇āϟ āĻ•āϰ⧁āύ āωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻ•āϰ⧇: āϕ⧀āϗ⧁āϞ⧋ āĻĄāĻŋāĻĒā§āϰāĻŋāϕ⧇āĻŸā§‡āĻĄ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŽāĻžāĻ°ā§āĻ• āĻ•āϰ⧁āύ āĻāĻ•āϟāĻŋ āϤāĻžāϰāĻŋāĻ– āĻ“ āϰāĻŋāĻĒā§āϞ⧇āϏāĻŽā§‡āĻ¨ā§āϟ āĻĻāĻŋāύ, āĻāĻ• āϰāĻŋāϞāĻŋāϜ āϏāĻžāχāϕ⧇āϞ āϰāĻžāϖ⧁āύ, āϤāĻžāϰāĻĒāϰ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āϕ⧋āύ⧋ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āύ⧇āχ āϤāĻ–āύ āϏāϰāĻžāύāĨ¤

āĻŸā§āϰāĻžāĻ¨ā§āϏāϞ⧇āĻļāύ āύ⧋āϟāϗ⧁āϞ⧋ āϕ⧀-āϰ āĻ•āĻžāϛ⧇ āϰāĻžāϖ⧁āύāĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ JSON āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āĻ•āĻŽā§‡āĻ¨ā§āϟ āϰāĻžāĻ–āĻž āύāĻž āϝāĻžāϝāĻŧ, āϛ⧋āϟ āĻāĻ•āϟāĻŋ āϏāĻšāϝ⧋āĻ—ā§€ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟ āĻŦāĻž āĻĒāĻžāĻļ⧇āϰ āĻŽā§‡āϟāĻžāĻĄā§‡āϟāĻž āĻĢāĻžāχāϞ āϰāĻžāϖ⧁āύ (āωāĻĻāĻžāĻšāϰāĻŖ: "checkout success screen āĻ āĻŦā§āϝāĻŦāĻšā§ƒāϤ")āĨ¤ āĻāϟāĻž āĻŦāĻŋāĻļ⧇āώāĻ­āĻžāĻŦ⧇ āϏāĻšāĻžāϝāĻŧāĻ• āϝāĻ–āύ āφāĻĒāύāĻžāϰ Vue 3 web app AppMaster-āĻāϰ āĻŽāϤ⧋ āϟ⧁āϞ āĻĨ⧇āϕ⧇ āĻœā§‡āύāĻžāϰ⧇āϟ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻāĻ•āĻžāϧāĻŋāĻ• āϞ⧋āĻ• āĻ•āĻĒāĻŋ āĻ“ UI āϟāĻžāϚ āĻ•āϰ⧇āĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ: ā§Ŧā§ĻāϟāĻŋ āύāϤ⧁āύ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āύāĻŋāϝāĻŧ⧇ āĻāĻ•āϟāĻŋ āĻĢāĻŋāϚāĻžāϰ āĻļāĻŋāĻĒ āĻ•āϰāĻž

Design data-driven UI text
Model PostgreSQL data visually, then reflect those fields consistently in labels and errors.
Design data

āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĒā§āϰāĻŋāĻ¨ā§āĻŸā§‡, āϟāĻŋāĻŽ āϤāĻŋāύ āĻ•āĻžāϜ āĻāĻ•āϏāĻ™ā§āϗ⧇ āĻļāĻŋāĻĒ āĻ•āϰ⧇: āύāϤ⧁āύ Settings āĻĒ⧇āϜ, āĻāĻ•āϟāĻŋ Billing āĻ¸ā§āĻ•ā§āϰāĻŋāύ, āĻāĻŦāĻ‚ āϤāĻŋāύāϟāĻŋ āχāĻŽā§‡āχāϞ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ (receipt, payment failed, trial ending)āĨ¤ āĻŽā§‹āϟ āĻĒā§āϰāĻžāϝāĻŧ ā§Ŧā§ĻāϟāĻŋ āύāϤ⧁āύ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚â€”āĻāĻ–āĻžāύ⧇āχ āϏāĻžāϧāĻžāϰāĻŖāϤ i18n āĻ—ā§‹āϞāĻŽā§‡āϞ āĻļ⧁āϰ⧁ āĻšāϝāĻŧāĨ¤

āϟāĻŋāĻŽ āϏāĻŽā§āĻŽāϤ āĻšāϝāĻŧ āϕ⧀āϗ⧁āϞ⧋ āĻĢāĻŋāϚāĻžāϰāĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻ—ā§āϰ⧁āĻĒ āĻ•āϰāĻžāϰ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āϏāĻžāϰāĻĢ⧇āϏ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĢāĻŋāϚāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ, āĻāĻŦāĻ‚ āϕ⧀āϗ⧁āϞ⧋ āϏāĻŦ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻāĻ•āχ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧇: feature.area.elementāĨ¤

// settings
"settings.profile.title": "Profile",
"settings.security.mfa.enable": "Enable two-factor authentication",

// billing
"billing.plan.current": "Current plan",
"billing.invoice.count": "{count} invoice | {count} invoices",

// email
"email.receipt.subject": "Your receipt",
"email.payment_failed.cta": "Update payment method"

āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āĻžāϜ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āφāϗ⧇, āĻĒā§āϞ⧁āϰāĻžāϞ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϗ⧁āϞ⧋ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻ­ā§āϝāĻžāϞ⧁ āĻĻāĻŋāϝāĻŧ⧇ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰāĻž āĻšāϝāĻŧ, āĻ…āύ⧁āĻŽāĻžāύ⧇āϰ āωāĻĒāϰ āύāϝāĻŧāĨ¤ billing.invoice.count-āĻāϰ āϜāĻ¨ā§āϝ QA 0, 1, 2, āĻāĻŦāĻ‚ 5 āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧇ (āϏāĻŋāĻĄāĻĄ āĻĄā§‡āϟāĻž āĻŦāĻž āĻĄā§‡āĻ­ āϟāĻ—āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇)āĨ¤ āĻāϟāĻž āĻ…āϚāϞ āϕ⧇āϏ āϧāϰāĻžāϰ āφāϗ⧇ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧ, āϝ⧇āĻŽāύ "0 invoice"āĨ¤

QA āϤāĻžāϰāĻĒāϰ āĻāĻ•āϟāĻŋ āĻĢā§‹āĻ•āĻžāϏāĻĄ āĻĢā§āϞ⧋ āϚāĻžāϞāĻžāϝāĻŧ āϝāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŽāĻŋāϏāĻŋāĻ‚ āϕ⧀ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧇: Settings āĻ“ Billing āϖ⧁āϞ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻŸā§āϝāĻžāĻŦ⧇ āĻāĻ•āĻŦāĻžāϰ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰāĻž, āĻ¸ā§āĻŸā§‡āϜāĻŋāĻ‚-āĻ āĻŸā§‡āĻ¸ā§āϟ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āχāĻŽā§‡āχāϞ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ āĻŸā§āϰāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž, āύāύ-āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϞ⧋āϕ⧇āϞ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻĒ āϚāĻžāϞāĻžāύ⧋, āĻāĻŦāĻ‚ āϞāϗ⧇ āϕ⧋āύ⧋ missing-translation āϏāϤāĻ°ā§āĻ•āϤāĻž āĻĨāĻžāĻ•āϞ⧇ āĻŦāĻŋāĻ˛ā§āĻĄ āĻĢ⧇āϞ āĻ•āϰāĻžāĨ¤

āĻāχ āĻ¸ā§āĻĒā§āϰāĻŋāĻ¨ā§āĻŸā§‡ QA āĻĻ⧁āϟāĻŋ āĻŽāĻŋāϏāĻŋāĻ‚ āϕ⧀ āĻĒ⧇āϝāĻŧ⧇āĻ›āĻŋāϞ: Billing āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇ āĻāĻ•āϟāĻŋ āϞ⧇āĻŦ⧇āϞ āĻ“ āĻāĻ•āϟāĻŋ āχāĻŽā§‡āχāϞ āϏāĻžāĻŦāĻœā§‡āĻ•ā§āϟāĨ¤ āϟāĻŋāĻŽ āĻāϗ⧁āϞ⧋ āϰāĻŋāϞāĻŋāĻœā§‡āϰ āφāϗ⧇ āĻ āĻŋāĻ• āĻ•āϰ⧇āĨ¤

āĻŦā§āϞāĻ• āĻ•āϰāĻž āĻšāĻŦ⧇ āύāĻžāĻ•āĻŋ āĻĢāϞāĻŦā§āϝāĻžāĻ• āϚāĻžāϞ⧁ āĻĨāĻžāĻ•āĻŦā§‡â€”āĻāχ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ⧇ āϤāĻžāϰāĻž āĻāĻ•āϟāĻŋ āϏāĻšāϜ āύāĻŋāϝāĻŧāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇: āχāωāϜāĻžāϰ-āĻĢ⧇āϏāĻŋāĻ‚ āĻ¸ā§āĻ•ā§āϰāĻŋāύ āĻ“ āĻŸā§āϰāĻžāĻ¨ā§āĻ¸ā§āϝāĻžāĻ•āĻļāύāĻžāϞ āχāĻŽā§‡āχāϞ āĻŦā§āϞāĻ• āĻ•āϰ⧇ āϰāĻŋāϞāĻŋāϜ; āĻ•āĻŽ āĻā§āρāĻ•āĻŋāĻĒā§‚āĻ°ā§āĻŖ āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύ-āĻ“āύāϞāĻŋ āĻŸā§‡āĻ•ā§āϏāϟ āϏāĻžāĻŽāϝāĻŧāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ­āĻžāώāĻžāϝāĻŧ āĻĢāϞāĻŦā§āϝāĻžāĻ• āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏ⧇āϟāĻŋāϰ āϜāĻ¨ā§āϝ āϟāĻŋāĻ•āĻŋāϟ āĻ“ āĻ¸ā§āĻĒāĻˇā§āϟ āĻĄā§‡āĻĄāϞāĻžāχāύ āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇āĨ¤

āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϧāĻžāĻĒ āĻ“ āĻāĻ•āϟāĻŋ āϏāĻšāϜ āϰāĻŋāϞāĻŋāϜ āĻšā§‡āĻ•āϞāĻŋāĻ¸ā§āϟ

āĻāĻ•āϟāĻŋ Vue 3 i18n āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋ āϤāĻ–āύāχ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻĨāĻžāϕ⧇ āϝāĻ–āύ āφāĻĒāύāĻŋ āĻŸā§āϰāĻžāĻ¨ā§āϏāϞ⧇āĻļāύāϕ⧇ āϕ⧋āĻĄā§‡āϰ āĻŽāϤ⧋ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧇āύ: āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻāĻ•āχāĻ­āĻžāĻŦ⧇ āϝ⧋āĻ— āĻ•āϰ⧁āύ, āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧁āύ, āĻāĻŦāĻ‚ āĻ¸ā§āϕ⧋āϰ āϰāĻžāϖ⧁āύāĨ¤

āϰāĻŋāϞāĻŋāϜ āĻšā§‡āĻ•āϞāĻŋāĻ¸ā§āϟ (āĻŽāĻžāĻ°ā§āĻœā§‡āϰ ā§Ģ āĻŽāĻŋāύāĻŋāϟ āφāϗ⧇)

  • Keys: āφāĻĒāύāĻžāϰ āύāĻžāĻŽāĻ•āϰāĻŖ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāϛ⧇ āĻāĻŦāĻ‚ āĻ¸ā§āϕ⧋āĻĒ āĻ¸ā§āĻĒāĻˇā§āϟ (āĻĒ⧇āϜ, āĻĢāĻŋāϚāĻžāϰ, āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟ)āĨ¤
  • Plurals: āĻ•āĻŽāĻĒāĻ•ā§āώ⧇ āĻāĻ• āĻ­āĻžāώāĻžāϝāĻŧ āĻŦāĻšā§-āϰ⧁āϞ āϏāĻš āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻšāĻšā§āϛ⧇ āĻ•āĻŋ āύāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύāĨ¤
  • Placeholders: āĻ­ā§āϝāĻžāϰāĻŋāϝāĻŧ⧇āĻŦāϞāϗ⧁āϞ⧋ āφāϛ⧇, āϏāĻŦ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻāĻ•āχ āύāĻžāĻŽā§‡ āφāϛ⧇, āĻāĻŦāĻ‚ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻĄā§‡āϟāĻž āĻĻāĻŋāϝāĻŧ⧇ āĻ āĻŋāĻ• āĻĻ⧇āĻ–āĻžāĻšā§āϛ⧇ āĻ•āĻŋ āύāĻž āϝāĻžāϚāĻžāχ āĻ•āϰ⧁āύāĨ¤
  • Fallbacks: āĻŽāĻŋāϏāĻŋāĻ‚-āϕ⧀ āφāϚāϰāĻŖ āφāĻĒāύāĻžāϰ āύ⧀āϤāĻŋ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻ•āĻŋ āύāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύāĨ¤
  • Screens: āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāύ āĻĻā§āϰ⧁āϤ āĻšā§‡āĻ• āĻ•āϰ⧁āύ āϝāĻž āĻ­āĻžāĻ™āĻž āϏāĻšāϜ (āĻŸā§‡āĻŦāĻŋāϞ, āĻŸā§‹āĻ¸ā§āϟ, āĻŽāĻĄāĻžāϞ, āĻ–āĻžāϞāĻŋ āĻ¸ā§āĻŸā§‡āϟ)āĨ¤

āĻ•āĻŋ āĻŽāĻžāĻĒāĻŦ⧇āύ (āϝāĻžāϤ⧇ āϏāĻŽāĻ¸ā§āϝāĻž āφāϗ⧇ āĻĻ⧇āĻ–āĻžāϝāĻŧ)

āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āϏāĻšāϜ āϏāĻ‚āĻ–ā§āϝāĻž āĻŦ⧇āϛ⧇ āύāĻŋāύ āĻāĻŦāĻ‚ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āϰāĻŋāĻ­āĻŋāω āĻ•āϰ⧁āύ: āĻŸā§‡āĻ¸ā§āϟ āϰāĻžāύ-āĻ āĻŽāĻŋāϏāĻŋāĻ‚-āϕ⧀ āϰ⧇āϟ, āύāύ-āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϞ⧋āϕ⧇āϞāϗ⧁āϞ⧋āϰ āĻ…āύ⧁āĻŦāĻžāĻĻāĻšā§€āύ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻ•ount, āĻāĻŦāĻ‚ āφāύāχāωāϜāĻĄ āϕ⧀ āĻ•ount (āĻ…āĻ°ā§āĻĨāĻžā§Ž āφāϰ āϕ⧋āĻĨāĻžāĻ“ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āύ⧇āχ)āĨ¤ āϝāĻĻāĻŋ āĻĒāĻžāϰ⧇āύ, āϰāĻŋāϞāĻŋāϜāĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āĻŸā§āϰ⧇āĻ¨ā§āĻĄ āĻĻ⧇āĻ–āĻž āϝāĻžāϝāĻŧ āĻāĻ•āĻ•āĻžāϞ⧀āύ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āĻšā§‡āϝāĻŧ⧇āĨ¤

āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āϝ⧋āĻ— āĻ•āϰāĻž, āĻ…āύ⧁āĻŦāĻžāĻĻ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž, āĻāĻŦāĻ‚ āϰ⧇āϜāĻžāĻ˛ā§āϟ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āϏāĻ āĻŋāĻ• āϧāĻžāĻĒāϗ⧁āϞ⧋ āϞāĻŋāϖ⧇ āϰāĻžāϖ⧁āύāĨ¤ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āϰāĻžāϖ⧁āύ āĻāĻŦāĻ‚ āϕ⧀ āύāĻžāĻŽāĻ•āϰāĻŖ āĻ“ āĻĒā§āϞ⧁āϰāĻžāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻĻāĻŋāύāĨ¤ āύāϤ⧁āύ āĻ•āύāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟāϰāϰāĻž āĻāϟāĻŋ āĻĒāĻĄāĻŧ⧇ āĻŦ⧁āĻā§‡ āύāĻŋāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āχāĻ¨ā§āϟāĻžāϰāύāĻžāϞ āϟ⧁āϞ āĻŦāĻžāύāĻžāύ, AppMaster (appmaster.io) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ Vue3 web app āĻ“ āĻ•āĻŽā§āĻĒā§āϝāĻžāύāĻŋāϝāĻŧāύ āĻŽā§‹āĻŦāĻžāχāϞ āĻ…ā§āϝāĻžāĻĒ āϜ⧁āĻĄāĻŧ⧇ UI āĻ•āĻĒāĻŋ āĻ“ āĻŸā§āϰāĻžāĻ¨ā§āϏāϞ⧇āĻļāύ āϕ⧀ āĻ•āύāϏāĻŋāĻ¸ā§āĻŸā§‡āĻ¨ā§āϟ āϰāĻžāĻ–āĻžāϟāĻž āϏāĻšāϜ āĻšāϤ⧇ āĻĒāĻžāϰ⧇, āĻ•āĻžāϰāĻŖ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻāĻ• āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻŽā§āϝāĻžāύ⧇āϜ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

āĻĒā§āϰāϤāĻŋ āĻ¸ā§āĻĒā§āϰāĻŋāĻ¨ā§āĻŸā§‡ āĻāĻ•āϟāĻŋ āϛ⧋āϟ i18n āĻšā§‡āϞāĻĨ āϟāĻžāĻ¸ā§āĻ• āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧁āύ: āĻĄā§‡āĻĄ āϕ⧀ āĻŽā§āϛ⧁āύ, āĻ…āϏāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻĒā§āϞ⧇āϏāĻšā§‹āĻ˛ā§āĻĄāĻžāϰ āĻ āĻŋāĻ• āĻ•āϰ⧁āύ, āĻāĻŦāĻ‚ āϏāĻžāĻŽā§āĻĒā§āϰāϤāĻŋāĻ• āĻŽāĻŋāϏāϗ⧁āϞ⧋ āϰāĻŋāĻ­āĻŋāω āĻ•āϰ⧁āύāĨ¤ āϛ⧋āϟ āĻ•ā§āϞāĻŋāύāφāĻĒ āĻāĻ•ā§āϏāĻĒā§āϞ⧋āϜāĻŋāĻ­ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻŸā§āϰāĻžāĻ¨ā§āϏāϞ⧇āĻļāύ āĻšāĻžāĻ¨ā§āϟāϕ⧇ āĻšāĻžāϰ āĻŽāĻžāύāĻžāϝāĻŧāĨ¤

āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϏāĻšāϜ
āĻ•āĻŋāϛ⧁ āφāĻļā§āϚāĻ°ā§āϝāϜāύāĻ•āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ

āĻŦāĻŋāύāĻžāĻŽā§‚āĻ˛ā§āϝ⧇āϰ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž āϏāĻš āĻ…ā§āϝāĻžāĻĒāĻŽāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύāĨ¤
āφāĻĒāύāĻŋ āϝāĻ–āύ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āĻšāĻŦ⧇āύ āϤāĻ–āύ āφāĻĒāύāĻŋ āϏāĻ āĻŋāĻ• āϏāĻĻāĻ¸ā§āϝāϤāĻž āĻŦ⧇āϛ⧇ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύ⧎

āĻāĻŦāĻžāϰ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϝāĻžāĻ•
Vue 3 i18n āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋ 500+ āϕ⧀-āĻ — āĻĒā§āϰāĻĄāĻžāĻ•āĻļāύ⧇ āϚāĻŽāĻ• āĻ›āĻžāĻĄāĻŧāĻž | AppMaster