175 lines
4.3 KiB
Markdown
175 lines
4.3 KiB
Markdown
# 🇬🇼 Localização para Guiné-Bissau
|
|
|
|
## ✅ Configuração Completa
|
|
|
|
O frontend está totalmente configurado para Guiné-Bissau, compatível com o backend.
|
|
|
|
## 💰 Moeda: XOF (Franco CFA)
|
|
|
|
### Configuração
|
|
- **Código ISO**: XOF
|
|
- **Símbolo**: FCFA
|
|
- **Locale**: pt-GW
|
|
- **Formato**: `1 000 FCFA` ou `1,0K FCFA` (compacto)
|
|
|
|
### Função de Formatação
|
|
|
|
```typescript
|
|
import { formatCurrency } from '@/utils/locale';
|
|
|
|
// Formato padrão
|
|
formatCurrency(1000000); // "1 000 000 FCFA"
|
|
|
|
// Formato compacto
|
|
formatCurrency(1000000, { compact: true }); // "1,0M FCFA"
|
|
|
|
// Com decimais
|
|
formatCurrency(1000.50, { decimals: 2 }); // "1 000,50 FCFA"
|
|
```
|
|
|
|
### Locais Corrigidos
|
|
|
|
✅ **Dashboard.tsx**
|
|
- Antes: `currency: 'AOA'` (Angola)
|
|
- Agora: Usa `formatCurrency()` com XOF
|
|
|
|
✅ **AgentsPage.tsx**
|
|
- Usa `formatNumber()` para estatísticas
|
|
- Usa `formatCurrency()` para valores monetários
|
|
|
|
✅ **Todos os componentes**
|
|
- Usam funções de `@/utils/locale`
|
|
|
|
## 📅 Datas: DD/MM/YYYY
|
|
|
|
### Configuração
|
|
- **Formato**: DD/MM/YYYY
|
|
- **Timezone**: Africa/Bissau
|
|
- **Locale**: pt-GW
|
|
|
|
### Funções
|
|
|
|
```typescript
|
|
import { formatDate, formatDateTime, formatLocalDate } from '@/utils/locale';
|
|
|
|
// Formata Date object
|
|
formatDate(new Date()); // "28/12/2024"
|
|
|
|
// Formata data e hora
|
|
formatDateTime(new Date()); // "28/12/2024 14:30"
|
|
|
|
// Converte LocalDate do backend (YYYY-MM-DD) para exibição
|
|
formatLocalDate('2024-12-28'); // "28/12/2024"
|
|
```
|
|
|
|
## 📞 Telefone: +245
|
|
|
|
### Formato
|
|
- **Código do país**: +245
|
|
- **Formato**: +245 XXX XXX XXX
|
|
|
|
### Função
|
|
|
|
```typescript
|
|
import { formatPhone } from '@/utils/locale';
|
|
|
|
formatPhone('955123456'); // "+245 955 123 456"
|
|
formatPhone('245955123456'); // "+245 955 123 456"
|
|
```
|
|
|
|
## 🔢 Números
|
|
|
|
### Formatação
|
|
- **Separador de milhares**: Espaço (ex: `1 000`)
|
|
- **Separador decimal**: Vírgula (ex: `1 000,50`)
|
|
- **Locale**: pt-GW
|
|
|
|
### Função
|
|
|
|
```typescript
|
|
import { formatNumber } from '@/utils/locale';
|
|
|
|
formatNumber(1000); // "1 000"
|
|
formatNumber(1000.50, 2); // "1 000,50"
|
|
```
|
|
|
|
## 🏦 Bancos (Mocks Atualizados)
|
|
|
|
Os mocks foram atualizados com bancos da Guiné-Bissau:
|
|
|
|
- Banco Central da Guiné-Bissau (BCGB)
|
|
- Banco da África Ocidental (BAO)
|
|
- Ecobank Guiné-Bissau
|
|
- Banco Atlântico Guiné-Bissau
|
|
- Banco Internacional da Guiné-Bissau
|
|
|
|
## 📋 Checklist de Compatibilidade
|
|
|
|
- [x] Moeda: XOF (Franco CFA) em todo o sistema
|
|
- [x] Datas: DD/MM/YYYY (formato Guiné-Bissau)
|
|
- [x] Timezone: Africa/Bissau
|
|
- [x] Locale: pt-GW
|
|
- [x] Telefone: +245
|
|
- [x] Números: Formato pt-GW (espaço para milhares, vírgula para decimais)
|
|
- [x] Dashboard: Usa formatCurrency() com XOF
|
|
- [x] AgentsPage: Usa formatNumber() e formatCurrency()
|
|
- [x] Mocks: Bancos da Guiné-Bissau
|
|
- [x] Backend: Compatível (application.yml configurado)
|
|
|
|
## 🔧 Arquivos Modificados
|
|
|
|
1. **src/utils/locale.ts**
|
|
- Funções de formatação para Guiné-Bissau
|
|
- formatCurrency() com suporte a XOF
|
|
- formatNumber() com locale pt-GW
|
|
- formatDate() e formatDateTime()
|
|
- formatPhone() com código +245
|
|
|
|
2. **src/pages/Dashboard.tsx**
|
|
- Removido formatação hardcoded (pt-AO, AOA)
|
|
- Usa formatCurrency() e formatNumber() de locale.ts
|
|
|
|
3. **src/modules/rh/pages/AgentsPage.tsx**
|
|
- Usa formatNumber() para estatísticas
|
|
- Usa formatCurrency() para valores monetários
|
|
|
|
4. **src/mocks/data.ts**
|
|
- Bancos atualizados para Guiné-Bissau
|
|
|
|
## 🎯 Uso Recomendado
|
|
|
|
**SEMPRE use as funções de `@/utils/locale`:**
|
|
|
|
```typescript
|
|
import {
|
|
formatCurrency,
|
|
formatNumber,
|
|
formatDate,
|
|
formatDateTime,
|
|
formatLocalDate,
|
|
formatPhone
|
|
} from '@/utils/locale';
|
|
|
|
// ✅ CORRETO
|
|
const price = formatCurrency(1000); // "1 000 FCFA"
|
|
const date = formatLocalDate('2024-12-28'); // "28/12/2024"
|
|
|
|
// ❌ ERRADO - Não use
|
|
const price = new Intl.NumberFormat('pt-AO', { currency: 'AOA' }); // Angola!
|
|
const price = value.toLocaleString(); // Locale padrão do navegador
|
|
```
|
|
|
|
## 📝 Notas Importantes
|
|
|
|
1. **XOF não tem subunidades**: O Franco CFA não tem centavos, então `decimals: 0` é o padrão
|
|
2. **Formato de número**: pt-GW usa espaço para milhares e vírgula para decimais
|
|
3. **Timezone**: Sempre use `Africa/Bissau` para datas
|
|
4. **Backend**: Envia datas como `YYYY-MM-DD` (LocalDate), frontend exibe como `DD/MM/YYYY`
|
|
|
|
---
|
|
|
|
**Status**: ✅ 100% Configurado para Guiné-Bissau
|
|
**Moeda**: ✅ XOF (Franco CFA)
|
|
**Última atualização**: Dezembro 2024
|
|
|