Merge pull request #373 from dermotduffy/i-cannot-speak-pt_br
Update and wire in the pt_BR translations
This commit is contained in:
@@ -22,13 +22,13 @@
|
|||||||
"live_provider": "Provedor de visualização ao vivo para esta câmera",
|
"live_provider": "Provedor de visualização ao vivo para esta câmera",
|
||||||
"live_providers": {
|
"live_providers": {
|
||||||
"auto": "Automatico",
|
"auto": "Automatico",
|
||||||
"frigate": "Frigate",
|
"ha": "Home Assistant (HLS, LL-HLS ou WebRTC nativo)",
|
||||||
"frigate-jsmpeg": "Frigate JSMpeg",
|
"frigate-jsmpeg": "Frigate JSMpeg",
|
||||||
"webrtc": "WebRTC"
|
"webrtc-card": "Cartão WebRTC (de @AlexxIT)"
|
||||||
},
|
},
|
||||||
"webrtc": {
|
"webrtc_card": {
|
||||||
"entity": "Entidade de câmera WebRTC (não é uma câmera Frigate)",
|
"entity": "Entidade de câmera de cartão WebRTC (não é uma câmera Frigate)",
|
||||||
"url": "URL de câmera WebRTC"
|
"url": "URL da câmera do cartão WebRTC"
|
||||||
},
|
},
|
||||||
"zone": "Zona Frigate"
|
"zone": "Zona Frigate"
|
||||||
},
|
},
|
||||||
@@ -127,7 +127,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"image": {
|
"image": {
|
||||||
"src": "URL/dados da imagem estática para visualização de imagem",
|
"mode": "Modo de visualização de imagem",
|
||||||
|
"modes": {
|
||||||
|
"screensaver": "Logo Frigate embutido",
|
||||||
|
"url": "Imagem arbitrária especificada por URL",
|
||||||
|
"camera": "Instantâneo da câmera do Home Assistant, da entidade de câmera"
|
||||||
|
},
|
||||||
|
"url": "Imagem arbitrária especificada por URL",
|
||||||
"refresh_seconds": "Número de segundos após o qual atualizar (0 = nunca)"
|
"refresh_seconds": "Número de segundos após o qual atualizar (0 = nunca)"
|
||||||
},
|
},
|
||||||
"menu": {
|
"menu": {
|
||||||
@@ -209,10 +215,10 @@
|
|||||||
"no_live_camera": "O parâmetro camera_entity deve ser definido e válido para este provedor ativo",
|
"no_live_camera": "O parâmetro camera_entity deve ser definido e válido para este provedor ativo",
|
||||||
"invalid_configuration": "Configuração inválida",
|
"invalid_configuration": "Configuração inválida",
|
||||||
"invalid_configuration_no_hint": "Nenhuma dica de local disponível (tipo incorreto ou ausente?)",
|
"invalid_configuration_no_hint": "Nenhuma dica de local disponível (tipo incorreto ou ausente?)",
|
||||||
"upgrade_available": "Uma atualização de configuração de cartão automatizada está disponível, visite o editor de cartão visual",
|
"upgrade_available": "Uma atualização automatizada da configuração do cartão está disponível, visite o editor visual do cartão",
|
||||||
"webrtc_reported_error": "O componente WebRTC relatou um erro",
|
"webrtc_card_reported_error": "O cartão WebRTC relatou um erro",
|
||||||
"webrtc_waiting": "Aguardando o carregamento do cartão WebRTC ...",
|
"webrtc_card_waiting": "Aguardando o cartão WebRTC carregar ...",
|
||||||
"no_cameras": "Nenhuma câmera válida encontrada, você deve configurar pelo menos uma entrada de câmera",
|
"no_cameras": "Nenhuma câmera válida encontrada, você deve configurar pelo menos uma câmera",
|
||||||
"no_camera_id": "Não foi possível determinar o ID da câmera para a câmera a seguir, pode ser necessário definir o parâmetro 'id' manualmente",
|
"no_camera_id": "Não foi possível determinar o ID da câmera para a câmera a seguir, pode ser necessário definir o parâmetro 'id' manualmente",
|
||||||
"duplicate_camera_id": "Duplique o ID da câmera Frigate para a câmera a seguir, use o parâmetro 'id' para identificar exclusivamente as câmeras",
|
"duplicate_camera_id": "Duplique o ID da câmera Frigate para a câmera a seguir, use o parâmetro 'id' para identificar exclusivamente as câmeras",
|
||||||
"could_not_render_elements": "Não foi possível renderizar os elementos da imagem",
|
"could_not_render_elements": "Não foi possível renderizar os elementos da imagem",
|
||||||
|
|||||||
@@ -1,13 +1,28 @@
|
|||||||
import * as en from './languages/en.json';
|
import * as en from './languages/en.json';
|
||||||
|
import * as pt_BR from './languages/pt_br.json';
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
const languages: any = {
|
const languages: any = {
|
||||||
en: en,
|
en: en,
|
||||||
|
pt_BR: pt_BR,
|
||||||
};
|
};
|
||||||
|
|
||||||
export function localize(string: string, search = '', replace = ''): string {
|
export function localize(string: string, search = '', replace = ''): string {
|
||||||
const lang = (localStorage.getItem('selectedLanguage') || 'en').replace(/['"]+/g, '').replace('-', '_');
|
// Get the browser language.
|
||||||
|
let lang = localStorage
|
||||||
|
.getItem('selectedLanguage')
|
||||||
|
?.replace(/['"]+/g, '')
|
||||||
|
.replace('-', '_');
|
||||||
|
|
||||||
|
// If that's not specified, try to find the Home Assistant language.
|
||||||
|
if (!lang) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
const hass = (document.querySelector('home-assistant') as any)?.hass;
|
||||||
|
lang = hass.selectedLanguage || hass.language;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default to English is there's still no language setting.
|
||||||
|
lang = lang || 'en';
|
||||||
let translated: string;
|
let translated: string;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -16,7 +31,9 @@ export function localize(string: string, search = '', replace = ''): string {
|
|||||||
translated = string.split('.').reduce((o, i) => o[i], languages['en']);
|
translated = string.split('.').reduce((o, i) => o[i], languages['en']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (translated === undefined) translated = string.split('.').reduce((o, i) => o[i], languages['en']);
|
if (translated === undefined) {
|
||||||
|
translated = string.split('.').reduce((o, i) => o[i], languages['en']);
|
||||||
|
}
|
||||||
|
|
||||||
if (search !== '' && replace !== '') {
|
if (search !== '' && replace !== '') {
|
||||||
translated = translated.replace(search, replace);
|
translated = translated.replace(search, replace);
|
||||||
|
|||||||
Reference in New Issue
Block a user