npm.io
1.0.0 • Published 2 years ago

xml-locales

Licence
—
Version
1.0.0
Deps
2
Size
26 kB
Vulns
6
Weekly
0
Stars
2

xml-locales

NPM

This is core package to work with localization files in xml.

Installation

npm install xml-locales
yarn add xml-locales
pnpm add xml-locales

This package, which works with XML files, has one root node named resources. This root node has child nodes named string. For example:

<resources>
  <string name="key1">value1</string>
  <string name="key2">value2</string>
</resources> 

Properties

Args Type Required Description
xmlData string | Buffer | XmlJsonData false Data of the xml document
xmlOptions object false It represents the options for the XML parser.
xmlOptions

The xmlOptions is used to customize the behavior of the XML parser and builder in the XmlLocales class.

Prop Type Required Description
parserOptions X2jOptionsOptional false Options to customize how the XML data is parsed. See below for details. For more information, see here
builderOptions XmlBuilderOptionsOptional false Options to customize how the XML data is built. See below for details. For more information, see here
formateOptions XMLFormatterOptions false Options to customize the formatting of the XML data. See below for details. For more information, see here
Default Parser Options (X2jOptionsOptional)
Option Value
trimValues false
ignoreDeclaration true
attributeNamePrefix 'key_'
alwaysCreateTextNode true
ignoreAttributes false
Default Builder Options (XmlBuilderOptionsOptional)
Option Value
ignoreAttributes false
attributeNamePrefix 'key_'
processEntities false
Default Formatter Options (XMLFormatterOptions)
Option Value
collapseContent true
indentation ' '

Usage

import {XmlLocales} from 'xml-locales'

const xmlData = `
<resources>
  <string name="key1">value1</string>
  <string name="key2">value2</string>
</resources>
`

const xmlLocales = new XmlLocales(xmlData)
const jsonData = xmlLocales.add({keys: ['newKey'], values: ['newValue']}).toXML()

console.log(jsonData)

Output:

<resources>
   <string name="key1">value1</string>
   <string name="key2">value2</string>
   <string name="newKey">newValue</string>
</resources>
Update key/value
import {XmlLocales} from 'xml-locales'

const xmlData = `
<resources>
  <string name="key1">value1</string>
  <string name="key2">value2</string>
</resources>
`

const xmlLocales = new XmlLocales(xmlData)
const jsonData = xmlLocales.add({keys: ['newKey'], values: ['newValue']})
.update({oldValues: ['key1'], newValues: ['firstKey']})
.update({oldValues: ['value2'], newValues: ['secondValue']})
.toXML()

console.log(jsonData)

Output:

<resources>
   <string name="firstKey">value1</string>
   <string name="key2">secondValue</string>
</resources>
Delete by key/value
import {XmlLocales} from 'xml-locales'

const xmlData = `
<resources>
  <string name="key1">value1</string>
  <string name="key2">value2</string>
</resources>
`

const xmlLocales = new XmlLocales(xmlData)
const jsonData = xmlLocales.add({keys: ['newKey'], values: ['newValue']})
.deleteByKey('key1')
.deleteByValue('value2')
.toXML()

console.log(jsonData)

Output:

<resources>
</resources>
XML and JSON
import {XmlLocales} from 'xml-locales'

const xmlData = `
<resources>
  <string name="key1">value1</string>
  <string name="key2">value2</string>
</resources>
`

const xmlLocales = new XmlLocales(xmlData)
const xmlString = xmlLocales.toXML()
const jsonXml = xmlLocales.toJSON()

console.log(xmlString) // output XML
console.log(jsonXml) // output JSON

Output XML:

<resources>
  <string name="newKey2">newValue2</string>
  <string name="newKey">newValue</string>
  <string name="key2">value2</string>
  <string name="firstKey">value1</string>
</resources>

Output JSON:

{
 "resources": {
  "string": [
   {
    "key_name": "key1",
    "#text": "value1"
   },
   {
    "key_name": "key2",
    "#text": "value2"
   }
  ]
 }
}
Chaining
import {XmlLocales} from 'xml-locales'

const xmlData = `
<resources>
  <string name="key1">value1</string>
  <string name="key2">value2</string>
</resources>
`

const xmlLocales = new XmlLocales(xmlData)

const jsonData = xmlLocales.add({keys: ['newKey'], values: ['newValue']})
.add({keys: ['newKey2'], values: ['newValue2']})
.update({oldValues: ['key1'], newValues: ['firstKey']})
.sort('desc')
.toXML()

console.log(jsonData)

Output:

<resources>
  <string name="newKey2">newValue2</string>
  <string name="newKey">newValue</string>
  <string name="key2">value2</string>
  <string name="firstKey">value1</string>
</resources>

Packages

Package version
xml-locales NPM
@xml-locales/cli NPM

Keywords