6.6.0 • Published 5 years ago

telegraf-i18n v6.6.0

Weekly downloads
253
License
MIT
Repository
github
Last release
5 years ago

Build Status NPM Version js-standard-style

i18n for Telegraf

Internationalization middleware for Telegraf.

Installation

$ npm install telegraf-i18n

Example

const Telegraf = require('telegraf')
const TelegrafI18n = require('telegraf-i18n')

/* 
yaml and json are ok
Example directory structure:
├── locales
│   ├── en.yaml
│   ├── en-US.yaml
│   ├── it.json
│   └── ru.yaml
└── bot.js
*/

const i18n = new TelegrafI18n({
  defaultLanguage: 'en',
  allowMissing: false, // Default true
  directory: path.resolve(__dirname, 'locales')
})

// Also you can provide i18n data directly
i18n.loadLocale('en', {greeting: 'Hello!'})

const app = new Telegraf(process.env.BOT_TOKEN)

// telegraf-i18n can save current locale setting into session.
const i18n = new TelegrafI18n({
  useSession: true,
  defaultLanguageOnMissing: true, // implies allowMissing = true
  directory: path.resolve(__dirname, 'locales')
})

app.use(Telegraf.memorySession())
app.use(i18n.middleware())

app.hears('/start', (ctx) => {
  const message = ctx.i18n.t('greeting', {
    username: ctx.from.username
  })
  return ctx.reply(message)
})

app.startPolling()

See full example.

User context

Telegraf user context props and functions:

app.use((ctx) => {
  ctx.i18n.locale()                    // Get current locale 
  ctx.i18n.locale(code)                // Set current locale  
  ctx.i18n.t(resourceKey, [context])   // Get resource value (context will be used by template engine)
});

Helpers

const { match, reply } = require('telegraf-i18n')

// In case you use custom keyboard with localized labels.
bot.hears(match('keyboard.foo'), (ctx) => ...)

//Reply helper
bot.command('help', reply('help'))
6.6.0

5 years ago

6.5.0

5 years ago

6.4.0

5 years ago

6.3.0

6 years ago

6.2.0

6 years ago

6.1.1

6 years ago

6.1.0

6 years ago

6.0.4

7 years ago

6.0.3

7 years ago

6.0.2

7 years ago

6.0.1

7 years ago

6.0.0

7 years ago

5.0.2

7 years ago

5.0.1

7 years ago

5.0.0

7 years ago

4.2.5

7 years ago

4.2.4

7 years ago

4.2.3

7 years ago

4.2.2

7 years ago

4.2.1

7 years ago

4.2.0

8 years ago

4.1.0

8 years ago

4.0.0

8 years ago

3.3.0

8 years ago

3.2.0

8 years ago

3.1.0

8 years ago

3.0.0

8 years ago

2.1.0

8 years ago

2.0.0

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago