https://github.com/locize/fluent_conv
fluent2js and js2fluent converter
https://github.com/locize/fluent_conv
Last synced: 9 months ago
JSON representation
fluent2js and js2fluent converter
- Host: GitHub
- URL: https://github.com/locize/fluent_conv
- Owner: locize
- Created: 2018-09-09T18:10:54.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-04-04T10:33:48.000Z (about 2 years ago)
- Last Synced: 2025-08-17T06:27:08.120Z (10 months ago)
- Language: JavaScript
- Size: 38.1 KB
- Stars: 4
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
[](https://travis-ci.org/locize/fluent_conv) [](https://npmjs.org/package/fluent_conv)
## Download
The source is available for download from
[GitHub](https://github.com/locize/fluent_conv/archive/master.zip).
Alternatively, you can install using npm:
```sh
npm install --save fluent_conv
```
You can then `import` or `require()` fluent_conv as normal:
```js
import fluent from 'fluent_conv'
// or
const fluent = require('fluent_conv')
fluent.ftl2js(str, (err, res) => {}, { respectComments: true })
```
Or you can direclty `import` or `require()` its functions:
```js
import ftl2js from 'fluent_conv/ftl2js'
// or
const ftl2js = require('fluent_conv/cjs/ftl2js')
```
## `ftl2js` optional parameters
```js
{
// If set to `false` will ignore all kind of comments.
// Useful for one-way conversion from ftl to js files.
respectComments: true,
}
```
## Usage
```js
const ftl = `
emails =
{ $unreadEmails ->
[one] You have one unread email.
*[other] You have { $unreadEmails } unread emails.
}
-brand-name =
{
*[nominative] Firefox
[accusative] Firefoxa
}
-another-term = another term
app-title = { -brand-name }
restart-app = Zrestartuj { -brand-name[accusative] }.
# Note: { $title } is a placeholder for the title of the web page
# captured in the screenshot. The default, for pages without titles, is
# creating-page-title-default.
login = Predefined value
.placeholder = example@email.com
.aria-label = Login input value
.title = Type your login email
logout = Logout
`
const js = {
emails:
"{ $unreadEmails ->\n [one] You have one unread email.\n *[other] You have { $unreadEmails } unread emails.\n}",
"-brand-name": "{\n *[nominative] Firefox\n [accusative] Firefoxa\n}",
"-another-term": "another term",
"app-title": "{ -brand-name }",
"restart-app": "Zrestartuj { -brand-name[accusative] }.",
login: {
comment:
"Note: { $title } is a placeholder for the title of the web page\ncaptured in the screenshot. The default, for pages without titles, is\ncreating-page-title-default.",
val: "Predefined value",
placeholder: "example@email.com",
"aria-label": "Login input value",
title: "Type your login email"
},
logout: "Logout"
}
import ftl2js from 'fluent_conv/ftl2js'
const res = ftl2js(ftl)
// res is like js
// or with callback
ftl2js(ftl, (err, res) => {
// res is like js
})
import js2ftl from 'fluent_conv/js2ftl'
const res = js2ftl(js)
// res is like ftl
// or with callback
js2ftl(js, (err, res) => {
// res is like ftl
})
```