Blame view

babylon-vue-4.0.0/src/i18n/exceljs.js 1.88 KB
0f94839d   함상기   babylon client fo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  // convert xlsx file to json for vue-i18n

  import Excel from 'exceljs'

  import fs from 'fs'

  

  try {

    const workbook = new Excel.Workbook()

    await workbook.xlsx.readFile('src/i18n/i18n.xlsx')

  

    console.log('Starting loading i18n.xlsx');

  

    let output = {}

  

    let langList = []

    // 첫번째 시트 worksheets[0]

    workbook.worksheets[0].eachRow((row, rowNumber) => {

      if (rowNumber == 1) {

        // output 언어 종류 설정

        langList = row.values.slice(5) // excel 파일내 대분류,페이지명,컴포넌트명,용어 떼고 다음 컬럼부터 언어

        langList.forEach((lang) => {

          output[lang] = {}

        })

        // console.log('lang 종류', output)

      }

      if (rowNumber > 1) {

        const rows = row.values

        // console.log('rows', rows)

        // [empty, 'app', 'home', 'pageNames', 'selectLang', '언어선택', 'select languages']

        const category = rows[1]

        const page = rows[2]

        const component = rows[3]

        const target = rows[4]

  

        langList.forEach((lang, idx) => {

          if (!output[lang][category]) {

            output[lang][category] = {}

          }

          if (!output[lang][category][page]) {

            output[lang][category][page] = {}

          }

          if (!output[lang][category][page][component]) {

            output[lang][category][page][component] = {}

          }

          if (!output[lang][category][page][component][target]) {

            output[lang][category][page][component][target] = {}

          }

          output[lang][category][page][component][target] = rows[idx + 5]

        })

      }

    })

  

    // 언어별 파일로 저장

    langList.forEach((lang) => {

      fs.writeFile(`src/locales/${lang}.json`, JSON.stringify(output[lang]), (err) => {

        if (err) throw err

      })

    })

  

    console.log('End loading i18n.xlsx');

  

  } catch (err) {

    console.log('fail to convert xlsx to json', err)

  }