i18n-extend.js 902 B

1234567891011121314151617181920212223242526272829303132
  1. // 语句模式
  2. const MODE = {
  3. STATEMENTS: 's', //语句模式
  4. PHRASAL: 'p', //词组模式
  5. }
  6. const VueI18nPlugin = {
  7. install: function (Vue) {
  8. Vue.mixin({
  9. methods: {
  10. $ta(syntaxKey, mode) {
  11. let _mode = mode || MODE.STATEMENTS
  12. let keys = syntaxKey.split('|')
  13. let _this = this
  14. let locale = this.$i18n.locale
  15. let message = ''
  16. let splitter = locale == 'US' ? ' ' : ''
  17. // 拼接 message
  18. keys.forEach(key => {
  19. message += _this.$t(key) + splitter
  20. })
  21. // 英文环境语句模式下,转换单词大小写
  22. if (keys.length > 0 && _mode == MODE.STATEMENTS && locale == 'US') {
  23. message = message.charAt(0).toUpperCase() + message.toLowerCase().substring(1)
  24. }
  25. return message
  26. }
  27. }
  28. })
  29. }
  30. }
  31. export default VueI18nPlugin