2026-06-03 10:43:17 +01:00
|
|
|
<!DOCTYPE html>
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
<html lang="{{ language or 'en' }}">
|
2026-06-03 10:43:17 +01:00
|
|
|
<head>
|
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
<title>{{ _('Tablet Management System') }}</title>
|
2026-06-20 08:38:42 +01:00
|
|
|
|
|
|
|
|
<!-- Tailwind CSS via CDN -->
|
|
|
|
|
<script src="https://cdn.tailwindcss.com"></script>
|
|
|
|
|
|
|
|
|
|
<!-- HTMX -->
|
|
|
|
|
<script src="https://unpkg.com/htmx.org@1.9.10"></script>
|
|
|
|
|
|
|
|
|
|
<!-- Custom styles -->
|
2026-06-03 10:43:17 +01:00
|
|
|
<style>
|
|
|
|
|
body {
|
2026-06-20 08:38:42 +01:00
|
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
|
2026-06-03 10:43:17 +01:00
|
|
|
}
|
2026-06-20 08:38:42 +01:00
|
|
|
|
|
|
|
|
/* HTMX loading spinner */
|
|
|
|
|
.htmx-indicator {
|
2026-06-03 10:43:17 +01:00
|
|
|
display: inline-block;
|
2026-06-20 08:38:42 +01:00
|
|
|
width: 20px;
|
|
|
|
|
height: 20px;
|
|
|
|
|
border: 3px solid rgba(0,0,0,.3);
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
border-top-color: #10b981;
|
|
|
|
|
animation: spin 1s ease-in-out infinite;
|
2026-06-03 10:43:17 +01:00
|
|
|
}
|
2026-06-20 08:38:42 +01:00
|
|
|
@keyframes spin {
|
|
|
|
|
to { transform: rotate(360deg); }
|
2026-06-20 01:20:39 +01:00
|
|
|
}
|
2026-06-20 08:38:42 +01:00
|
|
|
|
|
|
|
|
/* Hide HTMX indicator by default */
|
|
|
|
|
.htmx-indicator {
|
|
|
|
|
opacity: 0;
|
|
|
|
|
transition: opacity 200ms ease-in;
|
2026-06-20 01:20:39 +01:00
|
|
|
}
|
2026-06-20 08:38:42 +01:00
|
|
|
.htmx-request .htmx-indicator {
|
|
|
|
|
opacity: 1;
|
2026-06-20 01:20:39 +01:00
|
|
|
}
|
2026-06-20 08:38:42 +01:00
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
<!-- Tailwind config for custom colors -->
|
|
|
|
|
<script>
|
|
|
|
|
tailwind.config = {
|
|
|
|
|
theme: {
|
|
|
|
|
extend: {
|
|
|
|
|
colors: {
|
|
|
|
|
primary: {
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
50: '#ecfdf5',
|
|
|
|
|
100: '#d1fae5',
|
|
|
|
|
200: '#a7f3d0',
|
|
|
|
|
300: '#6ee7b7',
|
|
|
|
|
400: '#34d399',
|
|
|
|
|
500: '#10b981',
|
|
|
|
|
600: '#059669',
|
|
|
|
|
700: '#047857',
|
|
|
|
|
800: '#065f46',
|
|
|
|
|
900: '#064e3b',
|
2026-06-20 08:38:42 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-06-20 01:20:39 +01:00
|
|
|
}
|
|
|
|
|
}
|
2026-06-20 08:38:42 +01:00
|
|
|
</script>
|
2026-06-03 10:43:17 +01:00
|
|
|
</head>
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
<body class="bg-gray-50 text-gray-900">
|
|
|
|
|
<!-- Skip to main content -->
|
|
|
|
|
<a href="#main-content" class="sr-only focus:not-sr-only">Skip to main content</a>
|
|
|
|
|
|
|
|
|
|
<!-- Container -->
|
|
|
|
|
<div class="min-h-screen">
|
2026-06-20 08:38:42 +01:00
|
|
|
<!-- Header -->
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
<header class="bg-primary-600 text-white shadow-lg">
|
|
|
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
|
|
|
<div class="flex items-center justify-between h-16">
|
|
|
|
|
<!-- Logo / Title -->
|
|
|
|
|
<div class="flex items-center gap-3">
|
|
|
|
|
<svg class="w-8 h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
|
|
|
d="M12 19l9 2-9-18-9 18 9-2zm0 0v-8"></path>
|
|
|
|
|
</svg>
|
|
|
|
|
<h1 class="text-xl font-bold">{{ _('Tablet Management System') }}</h1>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- Language Switcher -->
|
|
|
|
|
<div class="flex items-center gap-2">
|
|
|
|
|
<span class="text-sm opacity-80">{{ _('Language') }}:</span>
|
|
|
|
|
{% for lang_code, lang_name in config['LANGUAGES'].items() %}
|
|
|
|
|
<a
|
|
|
|
|
href="?lang={{ lang_code }}"
|
|
|
|
|
class="px-2 py-1 text-sm rounded hover:bg-white/20 transition-colors
|
|
|
|
|
{% if language == lang_code %}bg-white/30 font-medium{% endif %}"
|
|
|
|
|
>
|
|
|
|
|
{{ lang_name }}
|
|
|
|
|
</a>
|
|
|
|
|
{% endfor %}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</header>
|
|
|
|
|
|
|
|
|
|
<!-- Main Content -->
|
|
|
|
|
<main id="main-content" class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
2026-06-20 08:38:42 +01:00
|
|
|
<!-- Flash Messages -->
|
|
|
|
|
{% with messages = get_flashed_messages(with_categories=true) %}
|
|
|
|
|
{% if messages %}
|
|
|
|
|
<div class="mb-6 space-y-3">
|
|
|
|
|
{% for category, message in messages %}
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
<div class="p-4 rounded-lg
|
|
|
|
|
{% if category == 'success' %}bg-green-100 text-green-800
|
|
|
|
|
{% elif category == 'error' %}bg-red-100 text-red-800
|
|
|
|
|
{% elif category == 'warning' %}bg-yellow-100 text-yellow-800
|
|
|
|
|
{% else %}bg-blue-100 text-blue-800{% endif %}">
|
|
|
|
|
<div class="flex items-center gap-2">
|
|
|
|
|
{% if category == 'success' %}
|
|
|
|
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
|
|
|
d="M5 13l4 4L19 7"></path>
|
|
|
|
|
</svg>
|
|
|
|
|
{% elif category == 'error' %}
|
|
|
|
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
|
|
|
d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
|
|
|
|
</svg>
|
|
|
|
|
{% endif %}
|
|
|
|
|
<span>{{ _(message) }}</span>
|
|
|
|
|
</div>
|
2026-06-20 08:38:42 +01:00
|
|
|
</div>
|
|
|
|
|
{% endfor %}
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% endwith %}
|
|
|
|
|
|
|
|
|
|
<!-- Navigation -->
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
<nav class="bg-primary-600 rounded-lg shadow-md mb-6" aria-label="Main navigation">
|
2026-06-20 08:38:42 +01:00
|
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
|
|
|
<div class="flex flex-wrap justify-center sm:justify-start gap-1 sm:gap-2 py-3">
|
|
|
|
|
<a href="/"
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
class="px-3 py-2 text-sm sm:text-base text-white rounded hover:bg-primary-700 transition-colors whitespace-nowrap">
|
|
|
|
|
{{ _('Home') }}
|
2026-06-20 08:38:42 +01:00
|
|
|
</a>
|
|
|
|
|
<a href="/add_tablet"
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
class="px-3 py-2 text-sm sm:text-base text-white rounded hover:bg-primary-700 transition-colors whitespace-nowrap">
|
|
|
|
|
{{ _('Add Tablet') }}
|
2026-06-20 08:38:42 +01:00
|
|
|
</a>
|
|
|
|
|
<a href="/add_user"
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
class="px-3 py-2 text-sm sm:text-base text-white rounded hover:bg-primary-700 transition-colors whitespace-nowrap">
|
|
|
|
|
{{ _('Add User') }}
|
2026-06-20 08:38:42 +01:00
|
|
|
</a>
|
|
|
|
|
<a href="/loan_tablet"
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
class="px-3 py-2 text-sm sm:text-base text-white rounded hover:bg-primary-700 transition-colors whitespace-nowrap">
|
|
|
|
|
{{ _('Loan Tablet') }}
|
2026-06-20 08:38:42 +01:00
|
|
|
</a>
|
|
|
|
|
<a href="/history"
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
class="px-3 py-2 text-sm sm:text-base text-white rounded hover:bg-primary-700 transition-colors whitespace-nowrap">
|
|
|
|
|
{{ _('History') }}
|
2026-06-20 08:38:42 +01:00
|
|
|
</a>
|
|
|
|
|
<a href="/user_loans"
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
class="px-3 py-2 text-sm sm:text-base text-white rounded hover:bg-primary-700 transition-colors whitespace-nowrap">
|
|
|
|
|
{{ _('User Loans') }}
|
2026-06-20 08:38:42 +01:00
|
|
|
</a>
|
|
|
|
|
<a href="/non_loanable_devices"
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
class="px-3 py-2 text-sm sm:text-base text-white rounded hover:bg-primary-700 transition-colors whitespace-nowrap">
|
|
|
|
|
{{ _('Non-Loanable Devices') }}
|
2026-06-20 08:38:42 +01:00
|
|
|
</a>
|
|
|
|
|
<a href="/project_management"
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
class="px-3 py-2 text-sm sm:text-base text-white rounded hover:bg-primary-700 transition-colors whitespace-nowrap">
|
|
|
|
|
{{ _('Project Management') }}
|
2026-06-20 08:38:42 +01:00
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</nav>
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
|
|
|
|
|
<!-- Page Content -->
|
2026-06-20 08:38:42 +01:00
|
|
|
{% block content %}{% endblock %}
|
|
|
|
|
</main>
|
feat(i18n): add Spanish localization support with Flask-Babel
- Add Flask-Babel for internationalization
- Configure app for Spanish (default) and English
- Add language switcher in navigation
- Wrap all UI text in templates with gettext()
- Create translation directory structure
- Add complete Spanish translations (58 strings)
- Add English translations (template)
- Compile .po to .mo files
- Add extract_translations.py script for future updates
- Add compile_translations.py script
Spanish is now the default language, with English available via ?lang=en
Translated strings include:
- Navigation (Home, Add Tablet, Add User, etc.)
- User Loans interface (Search, Filter, Status, etc.)
- Table headers (User, Tablet, Serial Number, etc.)
- Buttons (Loan, Return, Search, etc.)
- Messages (No users found, No active loans, etc.)
- All UI text across all templates
2026-06-20 09:58:13 +01:00
|
|
|
|
|
|
|
|
<!-- Footer -->
|
|
|
|
|
<footer class="mt-12 py-6 border-t border-gray-200">
|
|
|
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center text-sm text-gray-500">
|
|
|
|
|
<p>{{ _('Tablet Management System - Internal Tool') }}</p>
|
|
|
|
|
</div>
|
|
|
|
|
</footer>
|
2026-06-03 10:43:17 +01:00
|
|
|
</div>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|