or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

tessl/pypi-flask-babel

Adds i18n/l10n support for Flask applications.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/flask-babel@4.0.x

To install, run

npx @tessl/cli install tessl/pypi-flask-babel@4.0.0

0

# Flask-Babel

1

2

Flask-Babel provides internationalization (i18n) and localization (l10n) support for Flask web applications. Built on top of Python Babel and pytz libraries, it enables developers to create multi-language Flask applications with utilities for message translation, date/time formatting, number formatting, and locale-aware content rendering.

3

4

## Package Information

5

6

- **Package Name**: flask-babel

7

- **Language**: Python

8

- **Installation**: `pip install flask-babel`

9

10

## Core Imports

11

12

```python

13

from flask_babel import Babel, gettext, ngettext, format_datetime

14

```

15

16

Common pattern for Flask applications:

17

18

```python

19

from flask_babel import Babel

20

from flask_babel import gettext as _, ngettext, lazy_gettext

21

```

22

23

## Basic Usage

24

25

```python

26

from flask import Flask

27

from flask_babel import Babel, gettext, ngettext, get_locale

28

29

app = Flask(__name__)

30

app.config['BABEL_DEFAULT_LOCALE'] = 'en'

31

app.config['BABEL_DEFAULT_TIMEZONE'] = 'UTC'

32

33

babel = Babel(app)

34

35

@babel.localeselector

36

def get_locale():

37

return request.accept_languages.best_match(['en', 'es', 'fr'])

38

39

@app.route('/')

40

def index():

41

# Simple translation

42

message = gettext('Hello World!')

43

44

# Plural translation

45

count = 5

46

plural_message = ngettext(

47

'%(num)d item found',

48

'%(num)d items found',

49

count

50

)

51

52

# Date formatting

53

from datetime import datetime

54

from flask_babel import format_datetime

55

now = datetime.utcnow()

56

formatted_date = format_datetime(now, 'medium')

57

58

return f"{message}<br>{plural_message}<br>{formatted_date}"

59

```

60

61

## Architecture

62

63

Flask-Babel integrates with Flask's application context and provides:

64

65

- **Babel**: Main configuration class that initializes i18n support

66

- **Domain**: Manages translation catalogs and message domains

67

- **Context Integration**: Automatic locale detection and timezone handling via Flask's request context

68

- **Lazy Evaluation**: LazyString objects for translations that resolve at render time

69

- **Jinja2 Integration**: Automatic template filters and functions for formatting

70

71

## Capabilities

72

73

### Application Configuration

74

75

Initialize and configure Flask-Babel for your Flask application with locale selectors, timezone handling, and translation directory management.

76

77

```python { .api }

78

class Babel:

79

def __init__(self, app=None, date_formats=None, configure_jinja=True, *args, **kwargs): ...

80

def init_app(self, app, default_locale='en', default_domain='messages',

81

default_translation_directories='translations', default_timezone='UTC',

82

locale_selector=None, timezone_selector=None): ...

83

def list_translations(self): ...

84

```

85

86

[Configuration](./configuration.md)

87

88

### Translation Functions

89

90

Translate strings with support for pluralization, context, and lazy evaluation. Includes immediate and lazy translation functions for different use cases.

91

92

```python { .api }

93

def gettext(string, **variables): ...

94

def ngettext(singular, plural, num, **variables): ...

95

def pgettext(context, string, **variables): ...

96

def lazy_gettext(string, **variables): ...

97

def lazy_ngettext(singular, plural, num, **variables): ...

98

```

99

100

[Translation](./translation.md)

101

102

### Date, Time, and Number Formatting

103

104

Format dates, times, numbers, and currencies according to the current locale with support for custom formats and timezone conversion.

105

106

```python { .api }

107

def format_datetime(datetime=None, format=None, rebase=True): ...

108

def format_date(date=None, format=None, rebase=True): ...

109

def format_time(time=None, format=None, rebase=True): ...

110

def format_currency(number, currency, format=None, currency_digits=True, format_type='standard'): ...

111

def format_number(number): ...

112

```

113

114

[Formatting](./formatting.md)