6.6.0 • Published 7 years ago

telegraf-i18n v6.6.0

Weekly downloads
253
License
MIT
Repository
github
Last release
7 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

7 years ago

6.5.0

7 years ago

6.4.0

7 years ago

6.3.0

8 years ago

6.2.0

8 years ago

6.1.1

8 years ago

6.1.0

8 years ago

6.0.4

9 years ago

6.0.3

9 years ago

6.0.2

9 years ago

6.0.1

9 years ago

6.0.0

9 years ago

5.0.2

9 years ago

5.0.1

9 years ago

5.0.0

9 years ago

4.2.5

9 years ago

4.2.4

9 years ago

4.2.3

9 years ago

4.2.2

9 years ago

4.2.1

9 years ago

4.2.0

9 years ago

4.1.0

9 years ago

4.0.0

9 years ago

3.3.0

9 years ago

3.2.0

10 years ago

3.1.0

10 years ago

3.0.0

10 years ago

2.1.0

10 years ago

2.0.0

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.0

10 years ago