9 changed files with 2585 additions and 0 deletions
@ -0,0 +1,44 @@ |
|||||
|
const appMessages = { |
||||
|
"zh-CN": { |
||||
|
app: { |
||||
|
sidebarTitle: "\u5ba2\u6237 GeoTag\u7ba1\u7406\u7cfb\u7edf", |
||||
|
headerSearch: { |
||||
|
placeholder: "\u83dc\u5355\u641c\u7d22\uff0c\u652f\u6301\u6807\u9898\u3001URL\u6a21\u7cca\u67e5\u8be2", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"en-US": { |
||||
|
app: { |
||||
|
sidebarTitle: "GeoTag Customer Management System", |
||||
|
headerSearch: { |
||||
|
placeholder: "Search menu by title or URL", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"fr-FR": { |
||||
|
app: { |
||||
|
sidebarTitle: "Systeme de gestion des clients GeoTag", |
||||
|
headerSearch: { |
||||
|
placeholder: "Rechercher un menu par titre ou URL", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"es-ES": { |
||||
|
app: { |
||||
|
sidebarTitle: "Sistema de gestion de clientes GeoTag", |
||||
|
headerSearch: { |
||||
|
placeholder: "Buscar menu por titulo o URL", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"pt-BR": { |
||||
|
app: { |
||||
|
sidebarTitle: "Sistema de gestao de clientes GeoTag", |
||||
|
headerSearch: { |
||||
|
placeholder: "Pesquisar menu por titulo ou URL", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
export default appMessages; |
||||
@ -0,0 +1,449 @@ |
|||||
|
const deviceFlowMessages = { |
||||
|
"zh-CN": { |
||||
|
device: { |
||||
|
table: { |
||||
|
mac: "\u8bbe\u5907MAC", |
||||
|
}, |
||||
|
dialog: { |
||||
|
detail: { |
||||
|
id: "\u8bbe\u5907ID", |
||||
|
}, |
||||
|
}, |
||||
|
claim: { |
||||
|
dialogTitle: "\u8ba4\u9886\u8bbe\u5907", |
||||
|
query: { |
||||
|
orderCode: "\u8ba2\u5355\u53f7", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
orderCode: "\u8bf7\u8f93\u5165\u8ba2\u5355\u53f7", |
||||
|
}, |
||||
|
tip: "\u8bf7\u6839\u636e\u8ba2\u5355\u53f7\u67e5\u627e\u8bbe\u5907\u5e76\u9009\u62e9\u9700\u8981\u8ba4\u9886\u7684\u8bbe\u5907", |
||||
|
empty: "\u6682\u65e0\u5339\u914d\u7684\u8bbe\u5907\u6570\u636e", |
||||
|
selectedCount: "\u5df2\u9009\u62e9\u8bbe\u5907\uff1a{count} \u53f0", |
||||
|
confirmButton: "\u786e\u8ba4\u8ba4\u9886", |
||||
|
detailTitle: "\u8bbe\u5907\u8be6\u60c5", |
||||
|
detail: { |
||||
|
batchNo: "\u6279\u6b21\u53f7", |
||||
|
}, |
||||
|
message: { |
||||
|
enterOrderCode: "\u8bf7\u5148\u8f93\u5165\u8ba2\u5355\u53f7", |
||||
|
queryFirst: "\u8bf7\u5148\u6839\u636e\u8ba2\u5355\u53f7\u67e5\u8be2\u8bbe\u5907", |
||||
|
selectAtLeastOne: "\u8bf7\u81f3\u5c11\u9009\u62e9\u4e00\u53f0\u8bbe\u5907", |
||||
|
confirmClaim: "\u786e\u8ba4\u8ba4\u9886\u5df2\u9009\u4e2d\u7684 {count} \u53f0\u8bbe\u5907\u5417\uff1f", |
||||
|
claimSuccess: "\u8ba4\u9886\u6210\u529f", |
||||
|
}, |
||||
|
}, |
||||
|
trajectory: { |
||||
|
dialogTitle: "\u8bbe\u5907\u8f68\u8ff9", |
||||
|
dialogTitleWithSn: "\u8bbe\u5907\u8f68\u8ff9 - {sn}", |
||||
|
summary: { |
||||
|
id: "\u8bbe\u5907ID", |
||||
|
sn: "\u5e8f\u5217\u53f7", |
||||
|
alias: "\u540d\u79f0", |
||||
|
remark: "\u8bbe\u5907\u5907\u6ce8", |
||||
|
pointCount: "\u5df2\u5c55\u793a\u8f68\u8ff9\u70b9", |
||||
|
totalLimit: "\u5171 {total} \u6761\uff0c\u5f53\u524d\u4ec5\u5c55\u793a\u6700\u8fd1 {count} \u6761", |
||||
|
}, |
||||
|
filter: { |
||||
|
locationTime: "\u4f4d\u7f6e\u65f6\u95f4", |
||||
|
startPlaceholder: "\u5f00\u59cb\u65f6\u95f4", |
||||
|
endPlaceholder: "\u7ed3\u675f\u65f6\u95f4", |
||||
|
}, |
||||
|
tabs: { |
||||
|
map: "\u5730\u56fe\u8f68\u8ff9", |
||||
|
table: "\u8f68\u8ff9\u660e\u7ec6", |
||||
|
}, |
||||
|
provider: { |
||||
|
label: "\u5730\u56fe\u670d\u52a1", |
||||
|
maptiler: "MapTiler", |
||||
|
amap: "\u9ad8\u5fb7\u5730\u56fe", |
||||
|
google: "\u8c37\u6b4c\u5730\u56fe", |
||||
|
}, |
||||
|
empty: "\u6682\u65e0\u8f68\u8ff9\u6570\u636e", |
||||
|
table: { |
||||
|
time: "\u4f4d\u7f6e\u65f6\u95f4", |
||||
|
coordinates: "\u7ecf\u7eac\u5ea6", |
||||
|
address: "\u5730\u5740", |
||||
|
battery: "\u7535\u91cf", |
||||
|
}, |
||||
|
marker: { |
||||
|
startShort: "\u8d77", |
||||
|
endShort: "\u7ec8", |
||||
|
}, |
||||
|
message: { |
||||
|
missingDevice: "\u672a\u83b7\u53d6\u5230\u8bbe\u5907\u4fe1\u606f\uff0c\u65e0\u6cd5\u67e5\u770b\u8f68\u8ff9", |
||||
|
missingMapKey: "\u5f53\u524d\u4f01\u4e1a\u672a\u914d\u7f6e\u5730\u56fe Key", |
||||
|
mapConfigLoadFailed: "\u5730\u56fe\u914d\u7f6e\u52a0\u8f7d\u5931\u8d25", |
||||
|
trajectoryLoadFailed: "\u8f68\u8ff9\u52a0\u8f7d\u5931\u8d25", |
||||
|
missingAmapKey: "\u5f53\u524d\u4f01\u4e1a\u672a\u914d\u7f6e\u9ad8\u5fb7\u5730\u56fe Key", |
||||
|
amapLoadFailed: "\u9ad8\u5fb7\u5730\u56fe\u52a0\u8f7d\u5931\u8d25", |
||||
|
missingGoogleKey: "\u5f53\u524d\u4f01\u4e1a\u672a\u914d\u7f6e\u8c37\u6b4c\u5730\u56fe Key", |
||||
|
googleLoadFailed: "\u8c37\u6b4c\u5730\u56fe\u52a0\u8f7d\u5931\u8d25", |
||||
|
missingMaptilerKey: "\u5f53\u524d\u4f01\u4e1a\u672a\u914d\u7f6e MapTiler Key", |
||||
|
maptilerLoadFailed: "MapTiler \u5730\u56fe\u52a0\u8f7d\u5931\u8d25", |
||||
|
amapConvertFailed: "\u9ad8\u5fb7\u5750\u6807\u8f6c\u6362\u5931\u8d25", |
||||
|
startTime: "\u5f00\u59cb\u65f6\u95f4", |
||||
|
endTime: "\u7ed3\u675f\u65f6\u95f4", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"en-US": { |
||||
|
device: { |
||||
|
table: { |
||||
|
mac: "Device MAC", |
||||
|
}, |
||||
|
dialog: { |
||||
|
detail: { |
||||
|
id: "Device ID", |
||||
|
}, |
||||
|
}, |
||||
|
claim: { |
||||
|
dialogTitle: "Claim Device", |
||||
|
query: { |
||||
|
orderCode: "Order No.", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
orderCode: "Enter order no.", |
||||
|
}, |
||||
|
tip: "Search devices by order number and select the devices to claim.", |
||||
|
empty: "No matching device data", |
||||
|
selectedCount: "Selected devices: {count}", |
||||
|
confirmButton: "Confirm Claim", |
||||
|
detailTitle: "Device Detail", |
||||
|
detail: { |
||||
|
batchNo: "Batch No.", |
||||
|
}, |
||||
|
message: { |
||||
|
enterOrderCode: "Please enter the order number first", |
||||
|
queryFirst: "Please query devices by order number first", |
||||
|
selectAtLeastOne: "Please select at least one device", |
||||
|
confirmClaim: "Confirm claiming {count} selected devices?", |
||||
|
claimSuccess: "Claim successful", |
||||
|
}, |
||||
|
}, |
||||
|
trajectory: { |
||||
|
dialogTitle: "Device Trajectory", |
||||
|
dialogTitleWithSn: "Device Trajectory - {sn}", |
||||
|
summary: { |
||||
|
id: "Device ID", |
||||
|
sn: "Serial No.", |
||||
|
alias: "Name", |
||||
|
remark: "Device Remark", |
||||
|
pointCount: "Displayed Points", |
||||
|
totalLimit: "Total {total}, currently showing the latest {count}", |
||||
|
}, |
||||
|
filter: { |
||||
|
locationTime: "Location Time", |
||||
|
startPlaceholder: "Start Time", |
||||
|
endPlaceholder: "End Time", |
||||
|
}, |
||||
|
tabs: { |
||||
|
map: "Map Trajectory", |
||||
|
table: "Trajectory Details", |
||||
|
}, |
||||
|
provider: { |
||||
|
label: "Map Service", |
||||
|
maptiler: "MapTiler", |
||||
|
amap: "Amap", |
||||
|
google: "Google Maps", |
||||
|
}, |
||||
|
empty: "No trajectory data", |
||||
|
table: { |
||||
|
time: "Location Time", |
||||
|
coordinates: "Coordinates", |
||||
|
address: "Address", |
||||
|
battery: "Battery", |
||||
|
}, |
||||
|
marker: { |
||||
|
startShort: "S", |
||||
|
endShort: "E", |
||||
|
}, |
||||
|
message: { |
||||
|
missingDevice: "Device information is unavailable, so the trajectory cannot be displayed", |
||||
|
missingMapKey: "No map key is configured for the current business", |
||||
|
mapConfigLoadFailed: "Failed to load map configuration", |
||||
|
trajectoryLoadFailed: "Failed to load trajectory", |
||||
|
missingAmapKey: "No Amap key is configured for the current business", |
||||
|
amapLoadFailed: "Failed to load Amap", |
||||
|
missingGoogleKey: "No Google Maps key is configured for the current business", |
||||
|
googleLoadFailed: "Failed to load Google Maps", |
||||
|
missingMaptilerKey: "No MapTiler key is configured for the current business", |
||||
|
maptilerLoadFailed: "Failed to load MapTiler map", |
||||
|
amapConvertFailed: "Failed to convert Amap coordinates", |
||||
|
startTime: "Start Time", |
||||
|
endTime: "End Time", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"fr-FR": { |
||||
|
device: { |
||||
|
table: { |
||||
|
mac: "MAC appareil", |
||||
|
}, |
||||
|
dialog: { |
||||
|
detail: { |
||||
|
id: "ID appareil", |
||||
|
}, |
||||
|
}, |
||||
|
claim: { |
||||
|
dialogTitle: "Reclamer appareil", |
||||
|
query: { |
||||
|
orderCode: "Numero de commande", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
orderCode: "Saisir le numero de commande", |
||||
|
}, |
||||
|
tip: "Recherchez les appareils par numero de commande puis selectionnez ceux a reclamer.", |
||||
|
empty: "Aucune donnee appareil correspondante", |
||||
|
selectedCount: "Appareils selectionnes : {count}", |
||||
|
confirmButton: "Confirmer la reclamation", |
||||
|
detailTitle: "Detail appareil", |
||||
|
detail: { |
||||
|
batchNo: "Numero de lot", |
||||
|
}, |
||||
|
message: { |
||||
|
enterOrderCode: "Veuillez d'abord saisir le numero de commande", |
||||
|
queryFirst: "Veuillez d'abord rechercher les appareils par numero de commande", |
||||
|
selectAtLeastOne: "Veuillez selectionner au moins un appareil", |
||||
|
confirmClaim: "Confirmer la reclamation des {count} appareils selectionnes ?", |
||||
|
claimSuccess: "Reclamation reussie", |
||||
|
}, |
||||
|
}, |
||||
|
trajectory: { |
||||
|
dialogTitle: "Trajectoire appareil", |
||||
|
dialogTitleWithSn: "Trajectoire appareil - {sn}", |
||||
|
summary: { |
||||
|
id: "ID appareil", |
||||
|
sn: "Numero de serie", |
||||
|
alias: "Nom", |
||||
|
remark: "Remarque appareil", |
||||
|
pointCount: "Points affiches", |
||||
|
totalLimit: "Total {total}, seuls les {count} plus recents sont affiches", |
||||
|
}, |
||||
|
filter: { |
||||
|
locationTime: "Heure de position", |
||||
|
startPlaceholder: "Heure de debut", |
||||
|
endPlaceholder: "Heure de fin", |
||||
|
}, |
||||
|
tabs: { |
||||
|
map: "Trajectoire carte", |
||||
|
table: "Details de trajectoire", |
||||
|
}, |
||||
|
provider: { |
||||
|
label: "Service de carte", |
||||
|
maptiler: "MapTiler", |
||||
|
amap: "Amap", |
||||
|
google: "Google Maps", |
||||
|
}, |
||||
|
empty: "Aucune donnee de trajectoire", |
||||
|
table: { |
||||
|
time: "Heure de position", |
||||
|
coordinates: "Coordonnees", |
||||
|
address: "Adresse", |
||||
|
battery: "Batterie", |
||||
|
}, |
||||
|
marker: { |
||||
|
startShort: "D", |
||||
|
endShort: "F", |
||||
|
}, |
||||
|
message: { |
||||
|
missingDevice: "Les informations appareil sont indisponibles, impossible d'afficher la trajectoire", |
||||
|
missingMapKey: "Aucune cle de carte n'est configuree pour l'entreprise actuelle", |
||||
|
mapConfigLoadFailed: "Echec du chargement de la configuration de carte", |
||||
|
trajectoryLoadFailed: "Echec du chargement de la trajectoire", |
||||
|
missingAmapKey: "Aucune cle Amap n'est configuree pour l'entreprise actuelle", |
||||
|
amapLoadFailed: "Echec du chargement d'Amap", |
||||
|
missingGoogleKey: "Aucune cle Google Maps n'est configuree pour l'entreprise actuelle", |
||||
|
googleLoadFailed: "Echec du chargement de Google Maps", |
||||
|
missingMaptilerKey: "Aucune cle MapTiler n'est configuree pour l'entreprise actuelle", |
||||
|
maptilerLoadFailed: "Echec du chargement de la carte MapTiler", |
||||
|
amapConvertFailed: "Echec de conversion des coordonnees Amap", |
||||
|
startTime: "Heure de debut", |
||||
|
endTime: "Heure de fin", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"es-ES": { |
||||
|
device: { |
||||
|
table: { |
||||
|
mac: "MAC del dispositivo", |
||||
|
}, |
||||
|
dialog: { |
||||
|
detail: { |
||||
|
id: "ID del dispositivo", |
||||
|
}, |
||||
|
}, |
||||
|
claim: { |
||||
|
dialogTitle: "Reclamar dispositivo", |
||||
|
query: { |
||||
|
orderCode: "Numero de pedido", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
orderCode: "Ingrese el numero de pedido", |
||||
|
}, |
||||
|
tip: "Busque dispositivos por numero de pedido y seleccione los que desea reclamar.", |
||||
|
empty: "No hay datos de dispositivos coincidentes", |
||||
|
selectedCount: "Dispositivos seleccionados: {count}", |
||||
|
confirmButton: "Confirmar reclamo", |
||||
|
detailTitle: "Detalle del dispositivo", |
||||
|
detail: { |
||||
|
batchNo: "Numero de lote", |
||||
|
}, |
||||
|
message: { |
||||
|
enterOrderCode: "Primero ingrese el numero de pedido", |
||||
|
queryFirst: "Primero consulte los dispositivos por numero de pedido", |
||||
|
selectAtLeastOne: "Seleccione al menos un dispositivo", |
||||
|
confirmClaim: "Confirmar el reclamo de {count} dispositivos seleccionados?", |
||||
|
claimSuccess: "Reclamo exitoso", |
||||
|
}, |
||||
|
}, |
||||
|
trajectory: { |
||||
|
dialogTitle: "Trayectoria del dispositivo", |
||||
|
dialogTitleWithSn: "Trayectoria del dispositivo - {sn}", |
||||
|
summary: { |
||||
|
id: "ID del dispositivo", |
||||
|
sn: "Numero de serie", |
||||
|
alias: "Nombre", |
||||
|
remark: "Observacion del dispositivo", |
||||
|
pointCount: "Puntos mostrados", |
||||
|
totalLimit: "Total {total}, actualmente solo se muestran los ultimos {count}", |
||||
|
}, |
||||
|
filter: { |
||||
|
locationTime: "Hora de ubicacion", |
||||
|
startPlaceholder: "Hora de inicio", |
||||
|
endPlaceholder: "Hora de fin", |
||||
|
}, |
||||
|
tabs: { |
||||
|
map: "Trayectoria en mapa", |
||||
|
table: "Detalle de trayectoria", |
||||
|
}, |
||||
|
provider: { |
||||
|
label: "Servicio de mapa", |
||||
|
maptiler: "MapTiler", |
||||
|
amap: "Amap", |
||||
|
google: "Google Maps", |
||||
|
}, |
||||
|
empty: "No hay datos de trayectoria", |
||||
|
table: { |
||||
|
time: "Hora de ubicacion", |
||||
|
coordinates: "Coordenadas", |
||||
|
address: "Direccion", |
||||
|
battery: "Bateria", |
||||
|
}, |
||||
|
marker: { |
||||
|
startShort: "I", |
||||
|
endShort: "F", |
||||
|
}, |
||||
|
message: { |
||||
|
missingDevice: "No se dispone de informacion del dispositivo, no es posible mostrar la trayectoria", |
||||
|
missingMapKey: "La empresa actual no tiene configurada una clave de mapa", |
||||
|
mapConfigLoadFailed: "No se pudo cargar la configuracion del mapa", |
||||
|
trajectoryLoadFailed: "No se pudo cargar la trayectoria", |
||||
|
missingAmapKey: "La empresa actual no tiene configurada una clave de Amap", |
||||
|
amapLoadFailed: "No se pudo cargar Amap", |
||||
|
missingGoogleKey: "La empresa actual no tiene configurada una clave de Google Maps", |
||||
|
googleLoadFailed: "No se pudo cargar Google Maps", |
||||
|
missingMaptilerKey: "La empresa actual no tiene configurada una clave de MapTiler", |
||||
|
maptilerLoadFailed: "No se pudo cargar el mapa de MapTiler", |
||||
|
amapConvertFailed: "No se pudieron convertir las coordenadas de Amap", |
||||
|
startTime: "Hora de inicio", |
||||
|
endTime: "Hora de fin", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"pt-BR": { |
||||
|
device: { |
||||
|
table: { |
||||
|
mac: "MAC do dispositivo", |
||||
|
}, |
||||
|
dialog: { |
||||
|
detail: { |
||||
|
id: "ID do dispositivo", |
||||
|
}, |
||||
|
}, |
||||
|
claim: { |
||||
|
dialogTitle: "Reivindicar dispositivo", |
||||
|
query: { |
||||
|
orderCode: "Numero do pedido", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
orderCode: "Digite o numero do pedido", |
||||
|
}, |
||||
|
tip: "Pesquise dispositivos pelo numero do pedido e selecione os que deseja reivindicar.", |
||||
|
empty: "Nenhum dado de dispositivo correspondente", |
||||
|
selectedCount: "Dispositivos selecionados: {count}", |
||||
|
confirmButton: "Confirmar reivindicacao", |
||||
|
detailTitle: "Detalhe do dispositivo", |
||||
|
detail: { |
||||
|
batchNo: "Numero do lote", |
||||
|
}, |
||||
|
message: { |
||||
|
enterOrderCode: "Digite primeiro o numero do pedido", |
||||
|
queryFirst: "Pesquise primeiro os dispositivos pelo numero do pedido", |
||||
|
selectAtLeastOne: "Selecione pelo menos um dispositivo", |
||||
|
confirmClaim: "Confirmar a reivindicacao de {count} dispositivos selecionados?", |
||||
|
claimSuccess: "Reivindicacao concluida com sucesso", |
||||
|
}, |
||||
|
}, |
||||
|
trajectory: { |
||||
|
dialogTitle: "Trajetoria do dispositivo", |
||||
|
dialogTitleWithSn: "Trajetoria do dispositivo - {sn}", |
||||
|
summary: { |
||||
|
id: "ID do dispositivo", |
||||
|
sn: "Numero de serie", |
||||
|
alias: "Nome", |
||||
|
remark: "Observacao do dispositivo", |
||||
|
pointCount: "Pontos exibidos", |
||||
|
totalLimit: "Total {total}, atualmente sao exibidos apenas os ultimos {count}", |
||||
|
}, |
||||
|
filter: { |
||||
|
locationTime: "Horario da posicao", |
||||
|
startPlaceholder: "Horario inicial", |
||||
|
endPlaceholder: "Horario final", |
||||
|
}, |
||||
|
tabs: { |
||||
|
map: "Trajetoria no mapa", |
||||
|
table: "Detalhes da trajetoria", |
||||
|
}, |
||||
|
provider: { |
||||
|
label: "Servico de mapa", |
||||
|
maptiler: "MapTiler", |
||||
|
amap: "Amap", |
||||
|
google: "Google Maps", |
||||
|
}, |
||||
|
empty: "Nenhum dado de trajetoria", |
||||
|
table: { |
||||
|
time: "Horario da posicao", |
||||
|
coordinates: "Coordenadas", |
||||
|
address: "Endereco", |
||||
|
battery: "Bateria", |
||||
|
}, |
||||
|
marker: { |
||||
|
startShort: "I", |
||||
|
endShort: "F", |
||||
|
}, |
||||
|
message: { |
||||
|
missingDevice: "As informacoes do dispositivo nao estao disponiveis, nao e possivel exibir a trajetoria", |
||||
|
missingMapKey: "Nenhuma chave de mapa foi configurada para a empresa atual", |
||||
|
mapConfigLoadFailed: "Falha ao carregar a configuracao do mapa", |
||||
|
trajectoryLoadFailed: "Falha ao carregar a trajetoria", |
||||
|
missingAmapKey: "Nenhuma chave do Amap foi configurada para a empresa atual", |
||||
|
amapLoadFailed: "Falha ao carregar o Amap", |
||||
|
missingGoogleKey: "Nenhuma chave do Google Maps foi configurada para a empresa atual", |
||||
|
googleLoadFailed: "Falha ao carregar o Google Maps", |
||||
|
missingMaptilerKey: "Nenhuma chave do MapTiler foi configurada para a empresa atual", |
||||
|
maptilerLoadFailed: "Falha ao carregar o mapa do MapTiler", |
||||
|
amapConvertFailed: "Falha ao converter as coordenadas do Amap", |
||||
|
startTime: "Horario inicial", |
||||
|
endTime: "Horario final", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
export default deviceFlowMessages; |
||||
@ -0,0 +1,861 @@ |
|||||
|
const deviceZh = { |
||||
|
query: { |
||||
|
orderCode: "\u8ba2\u5355\u53f7", |
||||
|
model: "\u578b\u53f7", |
||||
|
sn: "\u5e8f\u5217\u53f7", |
||||
|
alias: "\u540d\u79f0", |
||||
|
lastAddress: "\u5730\u5740", |
||||
|
remark: "\u8bbe\u5907\u5907\u6ce8", |
||||
|
activationStatus: "\u662f\u5426\u542f\u7528", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
orderCode: "\u8bf7\u8f93\u5165\u8ba2\u5355\u53f7", |
||||
|
model: "\u8bf7\u8f93\u5165\u578b\u53f7", |
||||
|
sn: "\u8bf7\u8f93\u5165\u5e8f\u5217\u53f7", |
||||
|
alias: "\u8bf7\u8f93\u5165\u540d\u79f0", |
||||
|
lastAddress: "\u8bf7\u8f93\u5165\u5730\u5740", |
||||
|
remark: "\u8bf7\u8f93\u5165\u8bbe\u5907\u5907\u6ce8", |
||||
|
activationStatus: "\u8bf7\u9009\u62e9\u542f\u7528\u72b6\u6001", |
||||
|
macAddress: "\u8bf7\u8f93\u5165MAC\u5730\u5740", |
||||
|
privateKey: "\u8bf7\u8f93\u5165\u79c1\u94a5", |
||||
|
batchNo: "\u8bf7\u8f93\u5165\u6240\u5c5e\u6279\u6b21", |
||||
|
hashId: "\u8bf7\u8f93\u5165\u8bbe\u5907\u552f\u4e00\u54c8\u5e0c ID", |
||||
|
bindBusinessId: "\u8bf7\u8f93\u5165\u7ed1\u5b9a\u4f01\u4e1aID", |
||||
|
remarkSimple: "\u8bf7\u8f93\u5165\u5907\u6ce8", |
||||
|
locateUpdateTime: "\u9009\u62e9\u6700\u540e\u4f4d\u7f6e\u66f4\u65b0\u65f6\u95f4", |
||||
|
lastLat: "\u8bf7\u8f93\u5165\u6700\u540e\u7eac\u5ea6", |
||||
|
lastLng: "\u8bf7\u8f93\u5165\u6700\u540e\u7ecf\u5ea6", |
||||
|
battery: "\u8bf7\u8f93\u5165\u7535\u91cf", |
||||
|
lastReportedTime: "\u9009\u62e9\u6700\u540e\u4e0a\u62a5\u65f6\u95f4", |
||||
|
lastLocationTime: "\u9009\u62e9\u6700\u540e\u4f4d\u7f6e\u65f6\u95f4", |
||||
|
createTime: "\u9009\u62e9\u521b\u5efa\u65f6\u95f4", |
||||
|
}, |
||||
|
status: { |
||||
|
enabled: "\u542f\u7528", |
||||
|
disabled: "\u7981\u7528", |
||||
|
}, |
||||
|
button: { |
||||
|
import: "\u5bfc\u5165", |
||||
|
claim: "\u8ba4\u9886\u8bbe\u5907", |
||||
|
batchEnable: "\u6279\u91cf\u542f\u7528", |
||||
|
batchDisable: "\u6279\u91cf\u7981\u7528", |
||||
|
assign: "\u5206\u914d\u8bbe\u5907", |
||||
|
export: "\u5bfc\u51fa", |
||||
|
detail: "\u8be6\u60c5", |
||||
|
trajectory: "\u8f68\u8ff9", |
||||
|
close: "\u5173\u95ed", |
||||
|
}, |
||||
|
table: { |
||||
|
orderCode: "\u8ba2\u5355\u53f7", |
||||
|
deviceStatus: "\u8bbe\u5907\u72b6\u6001", |
||||
|
model: "\u578b\u53f7", |
||||
|
sn: "\u5e8f\u5217\u53f7", |
||||
|
alias: "\u540d\u79f0", |
||||
|
lastAddress: "\u5730\u5740", |
||||
|
updateTime: "\u66f4\u65b0\u65f6\u95f4", |
||||
|
coordinates: "\u7ecf\u7eac\u5ea6", |
||||
|
remark: "\u5907\u6ce8", |
||||
|
actions: "\u64cd\u4f5c", |
||||
|
}, |
||||
|
dialog: { |
||||
|
import: { |
||||
|
title: "\u8bbe\u5907Excel\u5bfc\u5165", |
||||
|
fileLabel: "Excel\u6587\u4ef6", |
||||
|
dragText: "\u5c06Excel\u6587\u4ef6\u62d6\u5230\u6b64\u5904\uff0c\u6216", |
||||
|
clickUpload: "\u70b9\u51fb\u4e0a\u4f20", |
||||
|
tip: "\u4ec5\u652f\u6301 .xlsx / .xls \u683c\u5f0f\u6587\u4ef6\uff0c\u4e14\u53ea\u80fd\u4e0a\u4f201\u4e2a\u6587\u4ef6", |
||||
|
templateTitle: "\u5bfc\u5165\u6a21\u677f", |
||||
|
templateDesc: "\u8bf7\u5148\u4e0b\u8f7d\u6a21\u677f\uff0c\u6309\u6a21\u677f\u683c\u5f0f\u586b\u5199\u8bbe\u5907\u5e8f\u5217\u53f7\u540e\u518d\u5bfc\u5165", |
||||
|
downloadTemplate: "\u4e0b\u8f7d\u6a21\u677f", |
||||
|
fieldExample: "\u6a21\u677f\u5b57\u6bb5\uff1aserial_number", |
||||
|
sampleExample: "\u793a\u4f8b\u503c\uff1aSAMPLE_SN_001", |
||||
|
}, |
||||
|
importResult: { |
||||
|
title: "\u5bfc\u5165\u7ed3\u679c", |
||||
|
status: "\u72b6\u6001", |
||||
|
total: "\u603b\u6570", |
||||
|
successCount: "\u6210\u529f\u6570", |
||||
|
failCount: "\u5931\u8d25\u6570", |
||||
|
startTime: "\u5f00\u59cb\u65f6\u95f4", |
||||
|
finishTime: "\u7ed3\u675f\u65f6\u95f4", |
||||
|
requestErrors: "\u8bf7\u6c42\u9519\u8bef", |
||||
|
failDetails: "\u5931\u8d25\u660e\u7ec6", |
||||
|
rowIndex: "\u884c\u53f7", |
||||
|
errorMessage: "\u9519\u8bef\u4fe1\u606f", |
||||
|
}, |
||||
|
assign: { |
||||
|
title: "\u5206\u914d\u8bbe\u5907", |
||||
|
selectedUsers: "\u5df2\u9009\u62e9\u5458\u5de5\uff1a{count} \u4eba", |
||||
|
}, |
||||
|
detail: { |
||||
|
title: "\u8bbe\u5907\u8be6\u60c5", |
||||
|
macAddress: "MAC\u5730\u5740", |
||||
|
business: "\u4f01\u4e1a", |
||||
|
lastAddressName: "\u6700\u540e\u5730\u5740\u540d\u79f0", |
||||
|
assignedUsers: "\u5206\u914d\u5458\u5de5", |
||||
|
locateUpdateTime: "\u6700\u540e\u4f4d\u7f6e\u66f4\u65b0\u65f6\u95f4", |
||||
|
lastCoordinates: "\u6700\u540e\u7ecf\u7eac\u5ea6", |
||||
|
battery: "\u7535\u91cf", |
||||
|
lastReportedTime: "\u6700\u540e\u4e0a\u62a5\u65f6\u95f4", |
||||
|
lastLocationTime: "\u6700\u540e\u4f4d\u7f6e\u65f6\u95f4", |
||||
|
}, |
||||
|
editInfo: { |
||||
|
title: "\u4fee\u6539\u8bbe\u5907\u4fe1\u606f", |
||||
|
}, |
||||
|
form: { |
||||
|
addTitle: "\u6dfb\u52a0\u7cfb\u7edf\u8bbe\u5907", |
||||
|
editTitle: "\u4fee\u6539\u7cfb\u7edf\u8bbe\u5907", |
||||
|
}, |
||||
|
}, |
||||
|
form: { |
||||
|
privateKey: "\u79c1\u94a5", |
||||
|
batchNo: "\u6240\u5c5e\u6279\u6b21", |
||||
|
hashId: "\u8bbe\u5907\u7684\u552f\u4e00\u54c8\u5e0c ID", |
||||
|
bindBusinessId: "\u7ed1\u5b9a\u4f01\u4e1aID", |
||||
|
locateUpdateTime: "\u6700\u540e\u4f4d\u7f6e\u66f4\u65b0\u65f6\u95f4", |
||||
|
lastLat: "\u6700\u540e\u7eac\u5ea6", |
||||
|
lastLng: "\u6700\u540e\u7ecf\u5ea6", |
||||
|
}, |
||||
|
validation: { |
||||
|
aliasMax: "\u540d\u79f0\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc764\u4e2a\u5b57\u7b26", |
||||
|
remarkMax: "\u8bbe\u5907\u5907\u6ce8\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc7255\u4e2a\u5b57\u7b26", |
||||
|
fileRequired: "\u8bf7\u9009\u62e9\u8981\u4e0a\u4f20\u7684Excel\u6587\u4ef6", |
||||
|
snRequired: "\u5e8f\u5217\u53f7\u4e0d\u80fd\u4e3a\u7a7a", |
||||
|
macRequired: "MAC\u5730\u5740\u4e0d\u80fd\u4e3a\u7a7a", |
||||
|
orderCodeRequired: "\u8ba2\u5355\u53f7\u4e0d\u80fd\u4e3a\u7a7a", |
||||
|
privateKeyRequired: "\u79c1\u94a5\u4e0d\u80fd\u4e3a\u7a7a", |
||||
|
batchNoRequired: "\u6240\u5c5e\u6279\u6b21\u4e0d\u80fd\u4e3a\u7a7a", |
||||
|
hashIdRequired: "\u8bbe\u5907\u7684\u552f\u4e00\u54c8\u5e0c ID\u4e0d\u80fd\u4e3a\u7a7a", |
||||
|
remarkRequired: "\u5907\u6ce8\u4e0d\u80fd\u4e3a\u7a7a", |
||||
|
}, |
||||
|
importStatus: { |
||||
|
SUCCESS: "\u5bfc\u5165\u6210\u529f", |
||||
|
PARTIAL_SUCCESS: "\u90e8\u5206\u6210\u529f", |
||||
|
FAILED: "\u5bfc\u5165\u5931\u8d25", |
||||
|
REQUEST_INVALID: "\u8bf7\u6c42\u6821\u9a8c\u5931\u8d25", |
||||
|
UNKNOWN: "\u672a\u77e5\u72b6\u6001", |
||||
|
}, |
||||
|
message: { |
||||
|
selectDeviceForAssign: "\u8bf7\u5148\u52fe\u9009\u9700\u8981\u5206\u914d\u7684\u8bbe\u5907", |
||||
|
selectUserForAssign: "\u8bf7\u9009\u62e9\u5458\u5de5\u8d26\u6237", |
||||
|
invalidUserSelection: "\u672a\u83b7\u53d6\u5230\u6709\u6548\u7684\u5458\u5de5\u8d26\u53f7", |
||||
|
confirmAssign: |
||||
|
"\u786e\u8ba4\u5c06\u9009\u4e2d\u7684 {deviceCount} \u53f0\u8bbe\u5907\u5206\u914d\u7ed9 {userCount} \u540d\u5458\u5de5\u5417\uff1f", |
||||
|
assignSuccess: "\u5206\u914d\u6210\u529f", |
||||
|
selectDeviceForEnable: "\u8bf7\u5148\u52fe\u9009\u9700\u8981\u542f\u7528\u7684\u8bbe\u5907", |
||||
|
confirmBatchEnable: "\u786e\u8ba4\u542f\u7528\u9009\u4e2d\u7684 {count} \u53f0\u8bbe\u5907\u5417\uff1f", |
||||
|
batchEnableSuccess: "\u6279\u91cf\u542f\u7528\u6210\u529f", |
||||
|
selectDeviceForDisable: "\u8bf7\u5148\u52fe\u9009\u9700\u8981\u7981\u7528\u7684\u8bbe\u5907", |
||||
|
confirmBatchDisable: "\u786e\u8ba4\u7981\u7528\u9009\u4e2d\u7684 {count} \u53f0\u8bbe\u5907\u5417\uff1f", |
||||
|
batchDisableSuccess: "\u6279\u91cf\u7981\u7528\u6210\u529f", |
||||
|
deviceInfoMissing: "\u672a\u83b7\u53d6\u5230\u8bbe\u5907\u4fe1\u606f", |
||||
|
updateSuccess: "\u4fee\u6539\u6210\u529f", |
||||
|
addSuccess: "\u65b0\u589e\u6210\u529f", |
||||
|
warning: "\u8b66\u544a", |
||||
|
confirmDelete: |
||||
|
"\u662f\u5426\u786e\u8ba4\u5220\u9664\u7cfb\u7edf\u8bbe\u5907\u4e3b\u7f16\u53f7\u4e3a\"{ids}\"\u7684\u6570\u636e\u9879?", |
||||
|
deleteSuccess: "\u5220\u9664\u6210\u529f", |
||||
|
confirmExport: "\u662f\u5426\u786e\u8ba4\u5bfc\u51fa\u6240\u6709\u7cfb\u7edf\u8bbe\u5907\u4e3b\u6570\u636e\u9879?", |
||||
|
fetchBatchNoFailed: "\u83b7\u53d6\u6279\u6b21\u53f7\u5931\u8d25\uff1a", |
||||
|
apiException: "\u63a5\u53e3\u5f02\u5e38", |
||||
|
exceedFileLimit: |
||||
|
"\u6700\u591a\u53ea\u80fd\u4e0a\u4f201\u4e2aExcel\u6587\u4ef6\uff0c\u5f53\u524d\u5df2\u9009\u62e9 {count} \u4e2a", |
||||
|
invalidFileType: |
||||
|
"\u53ea\u80fd\u4e0a\u4f20 .xlsx \u6216 .xls \u683c\u5f0f\u7684Excel\u6587\u4ef6\uff01", |
||||
|
selectOneExcel: |
||||
|
"\u8bf7\u9009\u62e9\u8981\u4e0a\u4f20\u7684Excel\u6587\u4ef6\uff08\u4ec5\u652f\u63011\u4e2a\u6587\u4ef6\uff09\uff01", |
||||
|
removeExtraFiles: |
||||
|
"\u6700\u591a\u53ea\u80fd\u4e0a\u4f201\u4e2aExcel\u6587\u4ef6\uff0c\u8bf7\u5220\u9664\u591a\u4f59\u6587\u4ef6\uff01", |
||||
|
importSuccess: "\u5bfc\u5165\u6210\u529f\uff01", |
||||
|
importFailed: "\u5bfc\u5165\u5931\u8d25\uff1a", |
||||
|
serverException: "\u670d\u52a1\u5668\u5f02\u5e38", |
||||
|
importStatusSummary: |
||||
|
"{status}\uff0c\u6210\u529f {successCount} \u6761\uff0c\u5931\u8d25 {failCount} \u6761", |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
const deviceEn = { |
||||
|
query: { |
||||
|
orderCode: "Order No.", |
||||
|
model: "Model", |
||||
|
sn: "Serial No.", |
||||
|
alias: "Name", |
||||
|
lastAddress: "Address", |
||||
|
remark: "Remark", |
||||
|
activationStatus: "Activation", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
orderCode: "Enter order no.", |
||||
|
model: "Enter model", |
||||
|
sn: "Enter serial no.", |
||||
|
alias: "Enter name", |
||||
|
lastAddress: "Enter address", |
||||
|
remark: "Enter device remark", |
||||
|
activationStatus: "Select activation status", |
||||
|
macAddress: "Enter MAC address", |
||||
|
privateKey: "Enter private key", |
||||
|
batchNo: "Enter batch no.", |
||||
|
hashId: "Enter unique hash ID", |
||||
|
bindBusinessId: "Enter business ID", |
||||
|
remarkSimple: "Enter remark", |
||||
|
locateUpdateTime: "Select locate update time", |
||||
|
lastLat: "Enter last latitude", |
||||
|
lastLng: "Enter last longitude", |
||||
|
battery: "Enter battery", |
||||
|
lastReportedTime: "Select last reported time", |
||||
|
lastLocationTime: "Select last location time", |
||||
|
createTime: "Select create time", |
||||
|
}, |
||||
|
status: { |
||||
|
enabled: "Enabled", |
||||
|
disabled: "Disabled", |
||||
|
}, |
||||
|
button: { |
||||
|
import: "Import", |
||||
|
claim: "Claim Device", |
||||
|
batchEnable: "Batch Enable", |
||||
|
batchDisable: "Batch Disable", |
||||
|
assign: "Assign Device", |
||||
|
export: "Export", |
||||
|
detail: "Detail", |
||||
|
trajectory: "Trajectory", |
||||
|
close: "Close", |
||||
|
}, |
||||
|
table: { |
||||
|
orderCode: "Order No.", |
||||
|
deviceStatus: "Device Status", |
||||
|
model: "Model", |
||||
|
sn: "Serial No.", |
||||
|
alias: "Name", |
||||
|
lastAddress: "Address", |
||||
|
updateTime: "Update Time", |
||||
|
coordinates: "Coordinates", |
||||
|
remark: "Remark", |
||||
|
actions: "Actions", |
||||
|
}, |
||||
|
dialog: { |
||||
|
import: { |
||||
|
title: "Device Excel Import", |
||||
|
fileLabel: "Excel File", |
||||
|
dragText: "Drag Excel file here, or ", |
||||
|
clickUpload: "click upload", |
||||
|
tip: "Only .xlsx/.xls is supported, and only one file is allowed", |
||||
|
templateTitle: "Import Template", |
||||
|
templateDesc: "Download the template first, fill in the device serial numbers using the template format, and then import it.", |
||||
|
downloadTemplate: "Download Template", |
||||
|
fieldExample: "Template field: serial_number", |
||||
|
sampleExample: "Sample value: SAMPLE_SN_001", |
||||
|
}, |
||||
|
importResult: { |
||||
|
title: "Import Result", |
||||
|
status: "Status", |
||||
|
total: "Total", |
||||
|
successCount: "Success", |
||||
|
failCount: "Failed", |
||||
|
startTime: "Start Time", |
||||
|
finishTime: "Finish Time", |
||||
|
requestErrors: "Request Errors", |
||||
|
failDetails: "Failure Details", |
||||
|
rowIndex: "Row", |
||||
|
errorMessage: "Error Message", |
||||
|
}, |
||||
|
assign: { |
||||
|
title: "Assign Device", |
||||
|
selectedUsers: "Selected employees: {count}", |
||||
|
}, |
||||
|
detail: { |
||||
|
title: "Device Detail", |
||||
|
macAddress: "MAC Address", |
||||
|
business: "Business", |
||||
|
lastAddressName: "Last Address Name", |
||||
|
assignedUsers: "Assigned Employees", |
||||
|
locateUpdateTime: "Last Locate Update Time", |
||||
|
lastCoordinates: "Last Coordinates", |
||||
|
battery: "Battery", |
||||
|
lastReportedTime: "Last Reported Time", |
||||
|
lastLocationTime: "Last Location Time", |
||||
|
}, |
||||
|
editInfo: { |
||||
|
title: "Edit Device Info", |
||||
|
}, |
||||
|
form: { |
||||
|
addTitle: "Add Device", |
||||
|
editTitle: "Edit Device", |
||||
|
}, |
||||
|
}, |
||||
|
form: { |
||||
|
privateKey: "Private Key", |
||||
|
batchNo: "Batch No.", |
||||
|
hashId: "Unique Hash ID", |
||||
|
bindBusinessId: "Bind Business ID", |
||||
|
locateUpdateTime: "Locate Update Time", |
||||
|
lastLat: "Last Latitude", |
||||
|
lastLng: "Last Longitude", |
||||
|
}, |
||||
|
validation: { |
||||
|
aliasMax: "Name length cannot exceed 64 characters", |
||||
|
remarkMax: "Remark length cannot exceed 255 characters", |
||||
|
fileRequired: "Please select an Excel file", |
||||
|
snRequired: "Serial number is required", |
||||
|
macRequired: "MAC address is required", |
||||
|
orderCodeRequired: "Order number is required", |
||||
|
privateKeyRequired: "Private key is required", |
||||
|
batchNoRequired: "Batch number is required", |
||||
|
hashIdRequired: "Unique hash ID is required", |
||||
|
remarkRequired: "Remark is required", |
||||
|
}, |
||||
|
importStatus: { |
||||
|
SUCCESS: "Import Success", |
||||
|
PARTIAL_SUCCESS: "Partial Success", |
||||
|
FAILED: "Import Failed", |
||||
|
REQUEST_INVALID: "Request Invalid", |
||||
|
UNKNOWN: "Unknown Status", |
||||
|
}, |
||||
|
message: { |
||||
|
selectDeviceForAssign: "Please select devices to assign first", |
||||
|
selectUserForAssign: "Please select employee accounts", |
||||
|
invalidUserSelection: "No valid employee account selected", |
||||
|
confirmAssign: "Assign {deviceCount} devices to {userCount} employees?", |
||||
|
assignSuccess: "Assigned successfully", |
||||
|
selectDeviceForEnable: "Please select devices to enable first", |
||||
|
confirmBatchEnable: "Enable {count} selected devices?", |
||||
|
batchEnableSuccess: "Batch enable success", |
||||
|
selectDeviceForDisable: "Please select devices to disable first", |
||||
|
confirmBatchDisable: "Disable {count} selected devices?", |
||||
|
batchDisableSuccess: "Batch disable success", |
||||
|
deviceInfoMissing: "Device information not found", |
||||
|
updateSuccess: "Updated successfully", |
||||
|
addSuccess: "Added successfully", |
||||
|
warning: "Warning", |
||||
|
confirmDelete: "Delete device record with id \"{ids}\"?", |
||||
|
deleteSuccess: "Deleted successfully", |
||||
|
confirmExport: "Export all device data?", |
||||
|
fetchBatchNoFailed: "Failed to fetch batch no: ", |
||||
|
apiException: "API exception", |
||||
|
exceedFileLimit: "Only one Excel file is allowed, currently selected: {count}", |
||||
|
invalidFileType: "Only .xlsx or .xls files are allowed", |
||||
|
selectOneExcel: "Please select one Excel file", |
||||
|
removeExtraFiles: "Only one Excel file is allowed, please remove extra files", |
||||
|
importSuccess: "Import successful", |
||||
|
importFailed: "Import failed: ", |
||||
|
serverException: "Server exception", |
||||
|
importStatusSummary: "{status}, success {successCount}, failed {failCount}", |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
const deviceFr = { |
||||
|
query: { |
||||
|
orderCode: "Numero de commande", |
||||
|
model: "Modele", |
||||
|
sn: "Numero de serie", |
||||
|
alias: "Nom", |
||||
|
lastAddress: "Adresse", |
||||
|
remark: "Remarque appareil", |
||||
|
activationStatus: "Etat d'activation", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
orderCode: "Saisir le numero de commande", |
||||
|
model: "Saisir le modele", |
||||
|
sn: "Saisir le numero de serie", |
||||
|
alias: "Saisir le nom", |
||||
|
lastAddress: "Saisir l'adresse", |
||||
|
remark: "Saisir la remarque appareil", |
||||
|
activationStatus: "Selectionner l'etat d'activation", |
||||
|
macAddress: "Saisir l'adresse MAC", |
||||
|
privateKey: "Saisir la cle privee", |
||||
|
batchNo: "Saisir le lot", |
||||
|
hashId: "Saisir l'ID hash unique", |
||||
|
bindBusinessId: "Saisir l'ID entreprise liee", |
||||
|
remarkSimple: "Saisir la remarque", |
||||
|
locateUpdateTime: "Selectionner l'heure de mise a jour de position", |
||||
|
lastLat: "Saisir la derniere latitude", |
||||
|
lastLng: "Saisir la derniere longitude", |
||||
|
battery: "Saisir la batterie", |
||||
|
lastReportedTime: "Selectionner la derniere heure de rapport", |
||||
|
lastLocationTime: "Selectionner la derniere heure de position", |
||||
|
createTime: "Selectionner l'heure de creation", |
||||
|
}, |
||||
|
status: { |
||||
|
enabled: "Active", |
||||
|
disabled: "Desactive", |
||||
|
}, |
||||
|
button: { |
||||
|
import: "Importer", |
||||
|
claim: "Reclamer appareil", |
||||
|
batchEnable: "Activation en lot", |
||||
|
batchDisable: "Desactivation en lot", |
||||
|
assign: "Affecter appareil", |
||||
|
export: "Exporter", |
||||
|
detail: "Detail", |
||||
|
trajectory: "Trajectoire", |
||||
|
close: "Fermer", |
||||
|
}, |
||||
|
table: { |
||||
|
orderCode: "Numero de commande", |
||||
|
deviceStatus: "Etat appareil", |
||||
|
model: "Modele", |
||||
|
sn: "Numero de serie", |
||||
|
alias: "Nom", |
||||
|
lastAddress: "Adresse", |
||||
|
updateTime: "Heure de mise a jour", |
||||
|
coordinates: "Coordonnees", |
||||
|
remark: "Remarque", |
||||
|
actions: "Actions", |
||||
|
}, |
||||
|
dialog: { |
||||
|
import: { |
||||
|
title: "Import Excel appareil", |
||||
|
fileLabel: "Fichier Excel", |
||||
|
dragText: "Glissez le fichier Excel ici, ou ", |
||||
|
clickUpload: "cliquez pour televerser", |
||||
|
tip: "Seuls les fichiers .xlsx/.xls sont pris en charge, et un seul fichier est autorise", |
||||
|
templateTitle: "Modele d'import", |
||||
|
templateDesc: "Telechargez d'abord le modele, renseignez les numeros de serie des appareils selon ce format, puis importez le fichier.", |
||||
|
downloadTemplate: "Telecharger le modele", |
||||
|
fieldExample: "Champ du modele : serial_number", |
||||
|
sampleExample: "Valeur d'exemple : SAMPLE_SN_001", |
||||
|
}, |
||||
|
importResult: { |
||||
|
title: "Resultat d'import", |
||||
|
status: "Statut", |
||||
|
total: "Total", |
||||
|
successCount: "Succes", |
||||
|
failCount: "Echecs", |
||||
|
startTime: "Heure de debut", |
||||
|
finishTime: "Heure de fin", |
||||
|
requestErrors: "Erreurs de requete", |
||||
|
failDetails: "Details des echecs", |
||||
|
rowIndex: "Ligne", |
||||
|
errorMessage: "Message d'erreur", |
||||
|
}, |
||||
|
assign: { |
||||
|
title: "Affecter appareil", |
||||
|
selectedUsers: "Employes selectionnes : {count}", |
||||
|
}, |
||||
|
detail: { |
||||
|
title: "Detail appareil", |
||||
|
macAddress: "Adresse MAC", |
||||
|
business: "Entreprise", |
||||
|
lastAddressName: "Dernier nom d'adresse", |
||||
|
assignedUsers: "Employes affectes", |
||||
|
locateUpdateTime: "Derniere mise a jour de position", |
||||
|
lastCoordinates: "Dernieres coordonnees", |
||||
|
battery: "Batterie", |
||||
|
lastReportedTime: "Derniere heure de rapport", |
||||
|
lastLocationTime: "Derniere heure de position", |
||||
|
}, |
||||
|
editInfo: { |
||||
|
title: "Modifier les infos appareil", |
||||
|
}, |
||||
|
form: { |
||||
|
addTitle: "Ajouter un appareil", |
||||
|
editTitle: "Modifier un appareil", |
||||
|
}, |
||||
|
}, |
||||
|
form: { |
||||
|
privateKey: "Cle privee", |
||||
|
batchNo: "Lot", |
||||
|
hashId: "ID hash unique", |
||||
|
bindBusinessId: "ID entreprise liee", |
||||
|
locateUpdateTime: "Heure de mise a jour de position", |
||||
|
lastLat: "Derniere latitude", |
||||
|
lastLng: "Derniere longitude", |
||||
|
}, |
||||
|
validation: { |
||||
|
aliasMax: "Le nom ne peut pas depasser 64 caracteres", |
||||
|
remarkMax: "La remarque ne peut pas depasser 255 caracteres", |
||||
|
fileRequired: "Veuillez selectionner un fichier Excel", |
||||
|
snRequired: "Le numero de serie est requis", |
||||
|
macRequired: "L'adresse MAC est requise", |
||||
|
orderCodeRequired: "Le numero de commande est requis", |
||||
|
privateKeyRequired: "La cle privee est requise", |
||||
|
batchNoRequired: "Le lot est requis", |
||||
|
hashIdRequired: "L'ID hash unique est requis", |
||||
|
remarkRequired: "La remarque est requise", |
||||
|
}, |
||||
|
importStatus: { |
||||
|
SUCCESS: "Import reussi", |
||||
|
PARTIAL_SUCCESS: "Succes partiel", |
||||
|
FAILED: "Import echoue", |
||||
|
REQUEST_INVALID: "Requete invalide", |
||||
|
UNKNOWN: "Statut inconnu", |
||||
|
}, |
||||
|
message: { |
||||
|
selectDeviceForAssign: "Veuillez d'abord selectionner les appareils a affecter", |
||||
|
selectUserForAssign: "Veuillez selectionner les comptes employes", |
||||
|
invalidUserSelection: "Aucun compte employe valide selectionne", |
||||
|
confirmAssign: "Confirmer l'affectation de {deviceCount} appareils a {userCount} employes ?", |
||||
|
assignSuccess: "Affectation reussie", |
||||
|
selectDeviceForEnable: "Veuillez d'abord selectionner les appareils a activer", |
||||
|
confirmBatchEnable: "Confirmer l'activation des {count} appareils selectionnes ?", |
||||
|
batchEnableSuccess: "Activation en lot reussie", |
||||
|
selectDeviceForDisable: "Veuillez d'abord selectionner les appareils a desactiver", |
||||
|
confirmBatchDisable: "Confirmer la desactivation des {count} appareils selectionnes ?", |
||||
|
batchDisableSuccess: "Desactivation en lot reussie", |
||||
|
deviceInfoMissing: "Informations appareil introuvables", |
||||
|
updateSuccess: "Modification reussie", |
||||
|
addSuccess: "Ajout reussi", |
||||
|
warning: "Avertissement", |
||||
|
confirmDelete: "Confirmer la suppression de l'enregistrement appareil avec l'ID \"{ids}\" ?", |
||||
|
deleteSuccess: "Suppression reussie", |
||||
|
confirmExport: "Confirmer l'export de toutes les donnees appareil ?", |
||||
|
fetchBatchNoFailed: "Echec de recuperation du numero de lot : ", |
||||
|
apiException: "Exception d'API", |
||||
|
exceedFileLimit: "Un seul fichier Excel est autorise, selection actuelle : {count}", |
||||
|
invalidFileType: "Seuls les fichiers .xlsx ou .xls sont autorises", |
||||
|
selectOneExcel: "Veuillez selectionner un fichier Excel", |
||||
|
removeExtraFiles: "Un seul fichier Excel est autorise, veuillez supprimer les fichiers en trop", |
||||
|
importSuccess: "Import reussi", |
||||
|
importFailed: "Import echoue : ", |
||||
|
serverException: "Exception serveur", |
||||
|
importStatusSummary: "{status}, succes {successCount}, echecs {failCount}", |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
const deviceEs = { |
||||
|
query: { |
||||
|
orderCode: "Numero de pedido", |
||||
|
model: "Modelo", |
||||
|
sn: "Numero de serie", |
||||
|
alias: "Nombre", |
||||
|
lastAddress: "Direccion", |
||||
|
remark: "Observacion del dispositivo", |
||||
|
activationStatus: "Estado de activacion", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
orderCode: "Ingrese numero de pedido", |
||||
|
model: "Ingrese modelo", |
||||
|
sn: "Ingrese numero de serie", |
||||
|
alias: "Ingrese nombre", |
||||
|
lastAddress: "Ingrese direccion", |
||||
|
remark: "Ingrese observacion del dispositivo", |
||||
|
activationStatus: "Seleccione estado de activacion", |
||||
|
macAddress: "Ingrese direccion MAC", |
||||
|
privateKey: "Ingrese clave privada", |
||||
|
batchNo: "Ingrese lote", |
||||
|
hashId: "Ingrese ID hash unico", |
||||
|
bindBusinessId: "Ingrese ID de empresa vinculada", |
||||
|
remarkSimple: "Ingrese observacion", |
||||
|
locateUpdateTime: "Seleccione hora de actualizacion de posicion", |
||||
|
lastLat: "Ingrese ultima latitud", |
||||
|
lastLng: "Ingrese ultima longitud", |
||||
|
battery: "Ingrese bateria", |
||||
|
lastReportedTime: "Seleccione ultima hora de reporte", |
||||
|
lastLocationTime: "Seleccione ultima hora de posicion", |
||||
|
createTime: "Seleccione hora de creacion", |
||||
|
}, |
||||
|
status: { |
||||
|
enabled: "Habilitado", |
||||
|
disabled: "Deshabilitado", |
||||
|
}, |
||||
|
button: { |
||||
|
import: "Importar", |
||||
|
claim: "Reclamar dispositivo", |
||||
|
batchEnable: "Habilitar en lote", |
||||
|
batchDisable: "Deshabilitar en lote", |
||||
|
assign: "Asignar dispositivo", |
||||
|
export: "Exportar", |
||||
|
detail: "Detalle", |
||||
|
trajectory: "Trayectoria", |
||||
|
close: "Cerrar", |
||||
|
}, |
||||
|
table: { |
||||
|
orderCode: "Numero de pedido", |
||||
|
deviceStatus: "Estado del dispositivo", |
||||
|
model: "Modelo", |
||||
|
sn: "Numero de serie", |
||||
|
alias: "Nombre", |
||||
|
lastAddress: "Direccion", |
||||
|
updateTime: "Hora de actualizacion", |
||||
|
coordinates: "Coordenadas", |
||||
|
remark: "Observacion", |
||||
|
actions: "Acciones", |
||||
|
}, |
||||
|
dialog: { |
||||
|
import: { |
||||
|
title: "Importacion Excel de dispositivos", |
||||
|
fileLabel: "Archivo Excel", |
||||
|
dragText: "Arrastre el archivo Excel aqui, o ", |
||||
|
clickUpload: "haga clic para cargar", |
||||
|
tip: "Solo se admiten archivos .xlsx/.xls y solo se permite un archivo", |
||||
|
templateTitle: "Plantilla de importacion", |
||||
|
templateDesc: "Primero descargue la plantilla, complete los numeros de serie del dispositivo segun ese formato y luego importe el archivo.", |
||||
|
downloadTemplate: "Descargar plantilla", |
||||
|
fieldExample: "Campo de la plantilla: serial_number", |
||||
|
sampleExample: "Valor de ejemplo: SAMPLE_SN_001", |
||||
|
}, |
||||
|
importResult: { |
||||
|
title: "Resultado de importacion", |
||||
|
status: "Estado", |
||||
|
total: "Total", |
||||
|
successCount: "Exitos", |
||||
|
failCount: "Fallos", |
||||
|
startTime: "Hora de inicio", |
||||
|
finishTime: "Hora de fin", |
||||
|
requestErrors: "Errores de solicitud", |
||||
|
failDetails: "Detalle de fallos", |
||||
|
rowIndex: "Fila", |
||||
|
errorMessage: "Mensaje de error", |
||||
|
}, |
||||
|
assign: { |
||||
|
title: "Asignar dispositivo", |
||||
|
selectedUsers: "Empleados seleccionados: {count}", |
||||
|
}, |
||||
|
detail: { |
||||
|
title: "Detalle del dispositivo", |
||||
|
macAddress: "Direccion MAC", |
||||
|
business: "Empresa", |
||||
|
lastAddressName: "Nombre de ultima direccion", |
||||
|
assignedUsers: "Empleados asignados", |
||||
|
locateUpdateTime: "Ultima actualizacion de posicion", |
||||
|
lastCoordinates: "Ultimas coordenadas", |
||||
|
battery: "Bateria", |
||||
|
lastReportedTime: "Ultima hora de reporte", |
||||
|
lastLocationTime: "Ultima hora de posicion", |
||||
|
}, |
||||
|
editInfo: { |
||||
|
title: "Editar informacion del dispositivo", |
||||
|
}, |
||||
|
form: { |
||||
|
addTitle: "Agregar dispositivo", |
||||
|
editTitle: "Editar dispositivo", |
||||
|
}, |
||||
|
}, |
||||
|
form: { |
||||
|
privateKey: "Clave privada", |
||||
|
batchNo: "Lote", |
||||
|
hashId: "ID hash unico", |
||||
|
bindBusinessId: "ID de empresa vinculada", |
||||
|
locateUpdateTime: "Hora de actualizacion de posicion", |
||||
|
lastLat: "Ultima latitud", |
||||
|
lastLng: "Ultima longitud", |
||||
|
}, |
||||
|
validation: { |
||||
|
aliasMax: "El nombre no puede superar 64 caracteres", |
||||
|
remarkMax: "La observacion no puede superar 255 caracteres", |
||||
|
fileRequired: "Seleccione un archivo Excel", |
||||
|
snRequired: "El numero de serie es obligatorio", |
||||
|
macRequired: "La direccion MAC es obligatoria", |
||||
|
orderCodeRequired: "El numero de pedido es obligatorio", |
||||
|
privateKeyRequired: "La clave privada es obligatoria", |
||||
|
batchNoRequired: "El lote es obligatorio", |
||||
|
hashIdRequired: "El ID hash unico es obligatorio", |
||||
|
remarkRequired: "La observacion es obligatoria", |
||||
|
}, |
||||
|
importStatus: { |
||||
|
SUCCESS: "Importacion exitosa", |
||||
|
PARTIAL_SUCCESS: "Exito parcial", |
||||
|
FAILED: "Importacion fallida", |
||||
|
REQUEST_INVALID: "Solicitud invalida", |
||||
|
UNKNOWN: "Estado desconocido", |
||||
|
}, |
||||
|
message: { |
||||
|
selectDeviceForAssign: "Primero seleccione los dispositivos a asignar", |
||||
|
selectUserForAssign: "Seleccione cuentas de empleados", |
||||
|
invalidUserSelection: "No se obtuvo ninguna cuenta de empleado valida", |
||||
|
confirmAssign: "Confirmar asignar {deviceCount} dispositivos a {userCount} empleados?", |
||||
|
assignSuccess: "Asignacion exitosa", |
||||
|
selectDeviceForEnable: "Primero seleccione los dispositivos a habilitar", |
||||
|
confirmBatchEnable: "Confirmar habilitar {count} dispositivos seleccionados?", |
||||
|
batchEnableSuccess: "Habilitacion en lote exitosa", |
||||
|
selectDeviceForDisable: "Primero seleccione los dispositivos a deshabilitar", |
||||
|
confirmBatchDisable: "Confirmar deshabilitar {count} dispositivos seleccionados?", |
||||
|
batchDisableSuccess: "Deshabilitacion en lote exitosa", |
||||
|
deviceInfoMissing: "No se encontro informacion del dispositivo", |
||||
|
updateSuccess: "Actualizacion exitosa", |
||||
|
addSuccess: "Alta exitosa", |
||||
|
warning: "Advertencia", |
||||
|
confirmDelete: "Confirmar eliminar el registro de dispositivo con ID \"{ids}\"?", |
||||
|
deleteSuccess: "Eliminacion exitosa", |
||||
|
confirmExport: "Confirmar exportar todos los datos de dispositivos?", |
||||
|
fetchBatchNoFailed: "No se pudo obtener el numero de lote: ", |
||||
|
apiException: "Excepcion de API", |
||||
|
exceedFileLimit: "Solo se permite un archivo Excel, seleccion actual: {count}", |
||||
|
invalidFileType: "Solo se permiten archivos .xlsx o .xls", |
||||
|
selectOneExcel: "Seleccione un archivo Excel", |
||||
|
removeExtraFiles: "Solo se permite un archivo Excel, elimine los archivos adicionales", |
||||
|
importSuccess: "Importacion exitosa", |
||||
|
importFailed: "Importacion fallida: ", |
||||
|
serverException: "Excepcion del servidor", |
||||
|
importStatusSummary: "{status}, exitos {successCount}, fallos {failCount}", |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
const devicePt = { |
||||
|
query: { |
||||
|
orderCode: "Numero do pedido", |
||||
|
model: "Modelo", |
||||
|
sn: "Numero de serie", |
||||
|
alias: "Nome", |
||||
|
lastAddress: "Endereco", |
||||
|
remark: "Observacao do dispositivo", |
||||
|
activationStatus: "Status de ativacao", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
orderCode: "Digite o numero do pedido", |
||||
|
model: "Digite o modelo", |
||||
|
sn: "Digite o numero de serie", |
||||
|
alias: "Digite o nome", |
||||
|
lastAddress: "Digite o endereco", |
||||
|
remark: "Digite a observacao do dispositivo", |
||||
|
activationStatus: "Selecione o status de ativacao", |
||||
|
macAddress: "Digite o endereco MAC", |
||||
|
privateKey: "Digite a chave privada", |
||||
|
batchNo: "Digite o lote", |
||||
|
hashId: "Digite o ID hash unico", |
||||
|
bindBusinessId: "Digite o ID da empresa vinculada", |
||||
|
remarkSimple: "Digite a observacao", |
||||
|
locateUpdateTime: "Selecione a hora da ultima atualizacao de posicao", |
||||
|
lastLat: "Digite a ultima latitude", |
||||
|
lastLng: "Digite a ultima longitude", |
||||
|
battery: "Digite a bateria", |
||||
|
lastReportedTime: "Selecione a ultima hora de reporte", |
||||
|
lastLocationTime: "Selecione a ultima hora de posicao", |
||||
|
createTime: "Selecione a hora de criacao", |
||||
|
}, |
||||
|
status: { |
||||
|
enabled: "Ativado", |
||||
|
disabled: "Desativado", |
||||
|
}, |
||||
|
button: { |
||||
|
import: "Importar", |
||||
|
claim: "Reivindicar dispositivo", |
||||
|
batchEnable: "Ativar em lote", |
||||
|
batchDisable: "Desativar em lote", |
||||
|
assign: "Atribuir dispositivo", |
||||
|
export: "Exportar", |
||||
|
detail: "Detalhe", |
||||
|
trajectory: "Trajetoria", |
||||
|
close: "Fechar", |
||||
|
}, |
||||
|
table: { |
||||
|
orderCode: "Numero do pedido", |
||||
|
deviceStatus: "Status do dispositivo", |
||||
|
model: "Modelo", |
||||
|
sn: "Numero de serie", |
||||
|
alias: "Nome", |
||||
|
lastAddress: "Endereco", |
||||
|
updateTime: "Hora da atualizacao", |
||||
|
coordinates: "Coordenadas", |
||||
|
remark: "Observacao", |
||||
|
actions: "Acoes", |
||||
|
}, |
||||
|
dialog: { |
||||
|
import: { |
||||
|
title: "Importacao Excel de dispositivos", |
||||
|
fileLabel: "Arquivo Excel", |
||||
|
dragText: "Arraste o arquivo Excel aqui, ou ", |
||||
|
clickUpload: "clique para enviar", |
||||
|
tip: "Apenas arquivos .xlsx/.xls sao suportados e somente um arquivo e permitido", |
||||
|
templateTitle: "Modelo de importacao", |
||||
|
templateDesc: "Baixe primeiro o modelo, preencha os numeros de serie do dispositivo no formato indicado e depois importe o arquivo.", |
||||
|
downloadTemplate: "Baixar modelo", |
||||
|
fieldExample: "Campo do modelo: serial_number", |
||||
|
sampleExample: "Valor de exemplo: SAMPLE_SN_001", |
||||
|
}, |
||||
|
importResult: { |
||||
|
title: "Resultado da importacao", |
||||
|
status: "Status", |
||||
|
total: "Total", |
||||
|
successCount: "Sucessos", |
||||
|
failCount: "Falhas", |
||||
|
startTime: "Hora de inicio", |
||||
|
finishTime: "Hora de fim", |
||||
|
requestErrors: "Erros de requisicao", |
||||
|
failDetails: "Detalhes das falhas", |
||||
|
rowIndex: "Linha", |
||||
|
errorMessage: "Mensagem de erro", |
||||
|
}, |
||||
|
assign: { |
||||
|
title: "Atribuir dispositivo", |
||||
|
selectedUsers: "Funcionarios selecionados: {count}", |
||||
|
}, |
||||
|
detail: { |
||||
|
title: "Detalhe do dispositivo", |
||||
|
macAddress: "Endereco MAC", |
||||
|
business: "Empresa", |
||||
|
lastAddressName: "Nome do ultimo endereco", |
||||
|
assignedUsers: "Funcionarios atribuidos", |
||||
|
locateUpdateTime: "Ultima atualizacao de posicao", |
||||
|
lastCoordinates: "Ultimas coordenadas", |
||||
|
battery: "Bateria", |
||||
|
lastReportedTime: "Ultima hora de reporte", |
||||
|
lastLocationTime: "Ultima hora de posicao", |
||||
|
}, |
||||
|
editInfo: { |
||||
|
title: "Editar informacoes do dispositivo", |
||||
|
}, |
||||
|
form: { |
||||
|
addTitle: "Adicionar dispositivo", |
||||
|
editTitle: "Editar dispositivo", |
||||
|
}, |
||||
|
}, |
||||
|
form: { |
||||
|
privateKey: "Chave privada", |
||||
|
batchNo: "Lote", |
||||
|
hashId: "ID hash unico", |
||||
|
bindBusinessId: "ID da empresa vinculada", |
||||
|
locateUpdateTime: "Hora da ultima atualizacao de posicao", |
||||
|
lastLat: "Ultima latitude", |
||||
|
lastLng: "Ultima longitude", |
||||
|
}, |
||||
|
validation: { |
||||
|
aliasMax: "O nome nao pode exceder 64 caracteres", |
||||
|
remarkMax: "A observacao nao pode exceder 255 caracteres", |
||||
|
fileRequired: "Selecione um arquivo Excel", |
||||
|
snRequired: "O numero de serie e obrigatorio", |
||||
|
macRequired: "O endereco MAC e obrigatorio", |
||||
|
orderCodeRequired: "O numero do pedido e obrigatorio", |
||||
|
privateKeyRequired: "A chave privada e obrigatoria", |
||||
|
batchNoRequired: "O lote e obrigatorio", |
||||
|
hashIdRequired: "O ID hash unico e obrigatorio", |
||||
|
remarkRequired: "A observacao e obrigatoria", |
||||
|
}, |
||||
|
importStatus: { |
||||
|
SUCCESS: "Importacao bem-sucedida", |
||||
|
PARTIAL_SUCCESS: "Sucesso parcial", |
||||
|
FAILED: "Falha na importacao", |
||||
|
REQUEST_INVALID: "Requisicao invalida", |
||||
|
UNKNOWN: "Status desconhecido", |
||||
|
}, |
||||
|
message: { |
||||
|
selectDeviceForAssign: "Selecione primeiro os dispositivos para atribuicao", |
||||
|
selectUserForAssign: "Selecione as contas de funcionarios", |
||||
|
invalidUserSelection: "Nenhuma conta valida de funcionario foi encontrada", |
||||
|
confirmAssign: "Confirmar atribuicao de {deviceCount} dispositivos para {userCount} funcionarios?", |
||||
|
assignSuccess: "Atribuicao concluida com sucesso", |
||||
|
selectDeviceForEnable: "Selecione primeiro os dispositivos para ativar", |
||||
|
confirmBatchEnable: "Confirmar ativacao de {count} dispositivos selecionados?", |
||||
|
batchEnableSuccess: "Ativacao em lote concluida com sucesso", |
||||
|
selectDeviceForDisable: "Selecione primeiro os dispositivos para desativar", |
||||
|
confirmBatchDisable: "Confirmar desativacao de {count} dispositivos selecionados?", |
||||
|
batchDisableSuccess: "Desativacao em lote concluida com sucesso", |
||||
|
deviceInfoMissing: "Informacoes do dispositivo nao encontradas", |
||||
|
updateSuccess: "Atualizacao concluida com sucesso", |
||||
|
addSuccess: "Adicao concluida com sucesso", |
||||
|
warning: "Aviso", |
||||
|
confirmDelete: "Confirmar exclusao do registro do dispositivo com ID \"{ids}\"?", |
||||
|
deleteSuccess: "Exclusao concluida com sucesso", |
||||
|
confirmExport: "Confirmar exportacao de todos os dados de dispositivos?", |
||||
|
fetchBatchNoFailed: "Falha ao obter numero do lote: ", |
||||
|
apiException: "Excecao de API", |
||||
|
exceedFileLimit: "Apenas um arquivo Excel e permitido, selecao atual: {count}", |
||||
|
invalidFileType: "Apenas arquivos .xlsx ou .xls sao permitidos", |
||||
|
selectOneExcel: "Selecione um arquivo Excel", |
||||
|
removeExtraFiles: "Apenas um arquivo Excel e permitido, remova os arquivos extras", |
||||
|
importSuccess: "Importacao concluida com sucesso", |
||||
|
importFailed: "Falha na importacao: ", |
||||
|
serverException: "Excecao do servidor", |
||||
|
importStatusSummary: "{status}, sucessos {successCount}, falhas {failCount}", |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
const deviceMessages = { |
||||
|
"zh-CN": { device: deviceZh }, |
||||
|
"en-US": { device: deviceEn }, |
||||
|
"fr-FR": { device: deviceFr }, |
||||
|
"es-ES": { device: deviceEs }, |
||||
|
"pt-BR": { device: devicePt }, |
||||
|
}; |
||||
|
|
||||
|
export default deviceMessages; |
||||
@ -0,0 +1,100 @@ |
|||||
|
import messages from "./messages"; |
||||
|
import deviceMessages from "./device-messages"; |
||||
|
import deviceFlowMessages from "./device-flow-messages"; |
||||
|
import appMessages from "./app-messages"; |
||||
|
import systemMessages from "./system-messages"; |
||||
|
import systemUserDeviceMessages from "./system-user-device-messages"; |
||||
|
import profileMessages from "./profile-messages"; |
||||
|
import { getLanguage } from "@/utils/language"; |
||||
|
|
||||
|
const DEFAULT_LANGUAGE = "zh-CN"; |
||||
|
|
||||
|
function isPlainObject(value) { |
||||
|
return Object.prototype.toString.call(value) === "[object Object]"; |
||||
|
} |
||||
|
|
||||
|
function deepMerge(target, source) { |
||||
|
const output = { ...target }; |
||||
|
Object.keys(source || {}).forEach((key) => { |
||||
|
const sourceValue = source[key]; |
||||
|
const targetValue = output[key]; |
||||
|
if (isPlainObject(sourceValue) && isPlainObject(targetValue)) { |
||||
|
output[key] = deepMerge(targetValue, sourceValue); |
||||
|
return; |
||||
|
} |
||||
|
output[key] = sourceValue; |
||||
|
}); |
||||
|
return output; |
||||
|
} |
||||
|
|
||||
|
function mergeLocaleMessages(baseMessages, extraMessages) { |
||||
|
const merged = { ...baseMessages }; |
||||
|
Object.keys(extraMessages || {}).forEach((locale) => { |
||||
|
merged[locale] = deepMerge(merged[locale] || {}, extraMessages[locale]); |
||||
|
}); |
||||
|
return merged; |
||||
|
} |
||||
|
|
||||
|
const mergedMessages = mergeLocaleMessages( |
||||
|
mergeLocaleMessages( |
||||
|
mergeLocaleMessages( |
||||
|
mergeLocaleMessages( |
||||
|
mergeLocaleMessages( |
||||
|
mergeLocaleMessages(messages, deviceMessages), |
||||
|
deviceFlowMessages |
||||
|
), |
||||
|
appMessages |
||||
|
), |
||||
|
systemMessages |
||||
|
), |
||||
|
systemUserDeviceMessages |
||||
|
), |
||||
|
profileMessages |
||||
|
); |
||||
|
|
||||
|
function getByPath(obj, path) { |
||||
|
if (!obj || !path) { |
||||
|
return undefined; |
||||
|
} |
||||
|
return path.split(".").reduce((acc, item) => (acc && acc[item] !== undefined ? acc[item] : undefined), obj); |
||||
|
} |
||||
|
|
||||
|
function formatTemplate(text, params = {}) { |
||||
|
if (!text || typeof text !== "string") { |
||||
|
return text; |
||||
|
} |
||||
|
return text.replace(/\{(\w+)\}/g, (full, key) => { |
||||
|
if (params[key] === undefined || params[key] === null) { |
||||
|
return full; |
||||
|
} |
||||
|
return String(params[key]); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export function t(key, params = {}) { |
||||
|
const currentLanguage = getLanguage() || DEFAULT_LANGUAGE; |
||||
|
const currentMessages = mergedMessages[currentLanguage] || {}; |
||||
|
const defaultMessages = mergedMessages[DEFAULT_LANGUAGE] || {}; |
||||
|
|
||||
|
const fromCurrent = getByPath(currentMessages, key); |
||||
|
if (fromCurrent !== undefined) { |
||||
|
return formatTemplate(fromCurrent, params); |
||||
|
} |
||||
|
|
||||
|
const fromDefault = getByPath(defaultMessages, key); |
||||
|
if (fromDefault !== undefined) { |
||||
|
return formatTemplate(fromDefault, params); |
||||
|
} |
||||
|
|
||||
|
return key; |
||||
|
} |
||||
|
|
||||
|
const I18nPlugin = { |
||||
|
install(Vue) { |
||||
|
Vue.prototype.$t = function translate(key, params = {}) { |
||||
|
return t(key, params); |
||||
|
}; |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
export default I18nPlugin; |
||||
@ -0,0 +1,594 @@ |
|||||
|
const messages = { |
||||
|
"zh-CN": { |
||||
|
common: { |
||||
|
confirm: "确定", |
||||
|
cancel: "取消", |
||||
|
tips: "提示", |
||||
|
home: "首页", |
||||
|
search: "搜索", |
||||
|
reset: "重置", |
||||
|
add: "新增", |
||||
|
edit: "修改", |
||||
|
remove: "删除", |
||||
|
status: "状态", |
||||
|
createTime: "创建时间", |
||||
|
actions: "操作", |
||||
|
}, |
||||
|
lang: { |
||||
|
title: "语言", |
||||
|
"zh-CN": "中文", |
||||
|
"en-US": "英语", |
||||
|
"fr-FR": "法语", |
||||
|
"es-ES": "西班牙语", |
||||
|
"pt-BR": "葡萄牙语", |
||||
|
}, |
||||
|
navbar: { |
||||
|
layoutSize: "布局大小", |
||||
|
profile: "个人中心", |
||||
|
logout: "退出登录", |
||||
|
logoutConfirm: "确定注销并退出系统吗?", |
||||
|
}, |
||||
|
login: { |
||||
|
title: "GeoTag 企业客户后台", |
||||
|
usernamePlaceholder: "账号", |
||||
|
passwordPlaceholder: "密码", |
||||
|
googleCodePlaceholder: "谷歌验证码", |
||||
|
login: "登 录", |
||||
|
loggingIn: "登 录 中...", |
||||
|
usernameRequired: "用户名不能为空", |
||||
|
passwordRequired: "密码不能为空", |
||||
|
codeRequired: "验证码不能为空", |
||||
|
humanVerifyRequired: "请进行人机验证", |
||||
|
}, |
||||
|
menu: { |
||||
|
menuName: "菜单名称", |
||||
|
status: "状态", |
||||
|
search: "搜索", |
||||
|
reset: "重置", |
||||
|
add: "新增", |
||||
|
expandCollapse: "展开/折叠", |
||||
|
icon: "图标", |
||||
|
orderNum: "排序", |
||||
|
perms: "权限标识", |
||||
|
component: "组件路径", |
||||
|
createTime: "创建时间", |
||||
|
actions: "操作", |
||||
|
edit: "修改", |
||||
|
delete: "删除", |
||||
|
parentMenu: "上级菜单", |
||||
|
selectParentMenu: "选择上级菜单", |
||||
|
menuType: "菜单类型", |
||||
|
menuTypeM: "目录", |
||||
|
menuTypeC: "菜单", |
||||
|
menuTypeF: "按钮", |
||||
|
menuIcon: "菜单图标", |
||||
|
clickSelectIcon: "点击选择图标", |
||||
|
displayOrder: "显示排序", |
||||
|
defaultName: "默认名称", |
||||
|
defaultNamePlaceholder: "请输入默认菜单名称(中文)", |
||||
|
path: "路由地址", |
||||
|
pathPlaceholder: "请输入路由地址", |
||||
|
componentPath: "组件路径", |
||||
|
componentPathPlaceholder: "请输入组件路径", |
||||
|
permsLabel: "权限字符", |
||||
|
permsPlaceholder: "请输入权限标识", |
||||
|
isFrame: "是否外链", |
||||
|
yes: "是", |
||||
|
no: "否", |
||||
|
isCache: "是否缓存", |
||||
|
cache: "缓存", |
||||
|
noCache: "不缓存", |
||||
|
visible: "显示状态", |
||||
|
show: "显示", |
||||
|
hide: "隐藏", |
||||
|
menuStatus: "菜单状态", |
||||
|
normal: "正常", |
||||
|
disable: "停用", |
||||
|
i18nTitle: "菜单多语言名称", |
||||
|
zhCN: "中文 (zh-CN)", |
||||
|
enUS: "英文 (en-US)", |
||||
|
frFR: "法语 (fr-FR)", |
||||
|
esES: "西语 (es-ES)", |
||||
|
ptBR: "葡语 (pt-BR)", |
||||
|
zhCNPlaceholder: "默认将与菜单名称同步", |
||||
|
enUSPlaceholder: "请输入英文菜单名称", |
||||
|
frFRPlaceholder: "请输入法语菜单名称", |
||||
|
esESPlaceholder: "请输入西语菜单名称", |
||||
|
ptBRPlaceholder: "请输入葡语菜单名称", |
||||
|
rootCategory: "主类目", |
||||
|
titleAdd: "添加菜单", |
||||
|
titleEdit: "修改菜单", |
||||
|
formNameRequired: "菜单名称不能为空", |
||||
|
formOrderRequired: "菜单排序不能为空", |
||||
|
formPathRequired: "路由地址不能为空", |
||||
|
msgEditSuccess: "修改成功", |
||||
|
msgAddSuccess: "新增成功", |
||||
|
msgDeleteSuccess: "删除成功", |
||||
|
confirmDelete: "是否确认删除名称为\"{name}\"的数据项?", |
||||
|
}, |
||||
|
request: { |
||||
|
reloginTip: "登录状态已过期,您可以继续留在该页面,或者重新登录", |
||||
|
relogin: "重新登录", |
||||
|
invalidSession: "无效的会话,或者会话已过期,请重新登录。", |
||||
|
backendConnectError: "后端接口连接异常", |
||||
|
requestTimeout: "系统接口请求超时", |
||||
|
apiErrorStatus: "系统接口{status}异常", |
||||
|
downloading: "正在下载数据,请稍候", |
||||
|
downloadError: "下载文件出现错误,请联系管理员!", |
||||
|
}, |
||||
|
}, |
||||
|
"en-US": { |
||||
|
common: { |
||||
|
confirm: "Confirm", |
||||
|
cancel: "Cancel", |
||||
|
tips: "Notice", |
||||
|
home: "Home", |
||||
|
search: "Search", |
||||
|
reset: "Reset", |
||||
|
add: "Add", |
||||
|
edit: "Edit", |
||||
|
remove: "Delete", |
||||
|
status: "Status", |
||||
|
createTime: "Created Time", |
||||
|
actions: "Actions", |
||||
|
}, |
||||
|
lang: { |
||||
|
title: "Language", |
||||
|
"zh-CN": "Chinese", |
||||
|
"en-US": "English", |
||||
|
"fr-FR": "French", |
||||
|
"es-ES": "Spanish", |
||||
|
"pt-BR": "Portuguese", |
||||
|
}, |
||||
|
navbar: { |
||||
|
layoutSize: "Layout Size", |
||||
|
profile: "Profile", |
||||
|
logout: "Logout", |
||||
|
logoutConfirm: "Are you sure you want to log out?", |
||||
|
}, |
||||
|
login: { |
||||
|
title: "GeoTag Enterprise Portal", |
||||
|
usernamePlaceholder: "Username", |
||||
|
passwordPlaceholder: "Password", |
||||
|
googleCodePlaceholder: "Google Auth Code", |
||||
|
login: "Log In", |
||||
|
loggingIn: "Logging In...", |
||||
|
usernameRequired: "Username is required", |
||||
|
passwordRequired: "Password is required", |
||||
|
codeRequired: "Verification code is required", |
||||
|
humanVerifyRequired: "Please complete human verification", |
||||
|
}, |
||||
|
menu: { |
||||
|
menuName: "Menu Name", |
||||
|
status: "Status", |
||||
|
search: "Search", |
||||
|
reset: "Reset", |
||||
|
add: "Add", |
||||
|
expandCollapse: "Expand/Collapse", |
||||
|
icon: "Icon", |
||||
|
orderNum: "Order", |
||||
|
perms: "Permission Key", |
||||
|
component: "Component Path", |
||||
|
createTime: "Created Time", |
||||
|
actions: "Actions", |
||||
|
edit: "Edit", |
||||
|
delete: "Delete", |
||||
|
parentMenu: "Parent Menu", |
||||
|
selectParentMenu: "Select Parent Menu", |
||||
|
menuType: "Menu Type", |
||||
|
menuTypeM: "Directory", |
||||
|
menuTypeC: "Menu", |
||||
|
menuTypeF: "Button", |
||||
|
menuIcon: "Menu Icon", |
||||
|
clickSelectIcon: "Click to select icon", |
||||
|
displayOrder: "Display Order", |
||||
|
defaultName: "Default Name", |
||||
|
defaultNamePlaceholder: "Enter default menu name (Chinese)", |
||||
|
path: "Route Path", |
||||
|
pathPlaceholder: "Enter route path", |
||||
|
componentPath: "Component Path", |
||||
|
componentPathPlaceholder: "Enter component path", |
||||
|
permsLabel: "Permission Key", |
||||
|
permsPlaceholder: "Enter permission key", |
||||
|
isFrame: "External Link", |
||||
|
yes: "Yes", |
||||
|
no: "No", |
||||
|
isCache: "Cache", |
||||
|
cache: "Cache", |
||||
|
noCache: "No Cache", |
||||
|
visible: "Visibility", |
||||
|
show: "Show", |
||||
|
hide: "Hide", |
||||
|
menuStatus: "Menu Status", |
||||
|
normal: "Normal", |
||||
|
disable: "Disabled", |
||||
|
i18nTitle: "Menu I18n Names", |
||||
|
zhCN: "Chinese (zh-CN)", |
||||
|
enUS: "English (en-US)", |
||||
|
frFR: "French (fr-FR)", |
||||
|
esES: "Spanish (es-ES)", |
||||
|
ptBR: "Portuguese (pt-BR)", |
||||
|
zhCNPlaceholder: "Will sync with menu name by default", |
||||
|
enUSPlaceholder: "Enter English menu name", |
||||
|
frFRPlaceholder: "Enter French menu name", |
||||
|
esESPlaceholder: "Enter Spanish menu name", |
||||
|
ptBRPlaceholder: "Enter Portuguese menu name", |
||||
|
rootCategory: "Root", |
||||
|
titleAdd: "Add Menu", |
||||
|
titleEdit: "Edit Menu", |
||||
|
formNameRequired: "Menu name is required", |
||||
|
formOrderRequired: "Display order is required", |
||||
|
formPathRequired: "Route path is required", |
||||
|
msgEditSuccess: "Updated successfully", |
||||
|
msgAddSuccess: "Added successfully", |
||||
|
msgDeleteSuccess: "Deleted successfully", |
||||
|
confirmDelete: "Delete item \"{name}\"?", |
||||
|
}, |
||||
|
request: { |
||||
|
reloginTip: "Session expired. Stay on this page or log in again.", |
||||
|
relogin: "Log In Again", |
||||
|
invalidSession: "Invalid session, please log in again.", |
||||
|
backendConnectError: "Backend connection error", |
||||
|
requestTimeout: "Request timeout", |
||||
|
apiErrorStatus: "API error {status}", |
||||
|
downloading: "Downloading, please wait...", |
||||
|
downloadError: "Download failed, please contact administrator.", |
||||
|
}, |
||||
|
}, |
||||
|
"fr-FR": { |
||||
|
common: { |
||||
|
confirm: "Confirmer", |
||||
|
cancel: "Annuler", |
||||
|
tips: "Info", |
||||
|
home: "Accueil", |
||||
|
search: "Rechercher", |
||||
|
reset: "Réinitialiser", |
||||
|
add: "Ajouter", |
||||
|
edit: "Modifier", |
||||
|
remove: "Supprimer", |
||||
|
status: "Statut", |
||||
|
createTime: "Date de création", |
||||
|
actions: "Actions", |
||||
|
}, |
||||
|
lang: { |
||||
|
title: "Langue", |
||||
|
"zh-CN": "Chinois", |
||||
|
"en-US": "Anglais", |
||||
|
"fr-FR": "Français", |
||||
|
"es-ES": "Espagnol", |
||||
|
"pt-BR": "Portugais", |
||||
|
}, |
||||
|
navbar: { |
||||
|
layoutSize: "Taille de mise en page", |
||||
|
profile: "Profil", |
||||
|
logout: "Se déconnecter", |
||||
|
logoutConfirm: "Confirmer la déconnexion ?", |
||||
|
}, |
||||
|
login: { |
||||
|
title: "Portail Entreprise GeoTag", |
||||
|
usernamePlaceholder: "Compte", |
||||
|
passwordPlaceholder: "Mot de passe", |
||||
|
googleCodePlaceholder: "Code Google Auth", |
||||
|
login: "Connexion", |
||||
|
loggingIn: "Connexion...", |
||||
|
usernameRequired: "Le nom d'utilisateur est requis", |
||||
|
passwordRequired: "Le mot de passe est requis", |
||||
|
codeRequired: "Le code est requis", |
||||
|
humanVerifyRequired: "Veuillez effectuer la vérification humaine", |
||||
|
}, |
||||
|
menu: { |
||||
|
menuName: "Nom du menu", |
||||
|
status: "Statut", |
||||
|
search: "Rechercher", |
||||
|
reset: "Réinitialiser", |
||||
|
add: "Ajouter", |
||||
|
expandCollapse: "Déplier/Replier", |
||||
|
icon: "Icône", |
||||
|
orderNum: "Ordre", |
||||
|
perms: "Clé de permission", |
||||
|
component: "Chemin du composant", |
||||
|
createTime: "Date de création", |
||||
|
actions: "Actions", |
||||
|
edit: "Modifier", |
||||
|
delete: "Supprimer", |
||||
|
parentMenu: "Menu parent", |
||||
|
selectParentMenu: "Choisir le menu parent", |
||||
|
menuType: "Type de menu", |
||||
|
menuTypeM: "Répertoire", |
||||
|
menuTypeC: "Menu", |
||||
|
menuTypeF: "Bouton", |
||||
|
menuIcon: "Icône du menu", |
||||
|
clickSelectIcon: "Cliquer pour choisir une icône", |
||||
|
displayOrder: "Ordre d'affichage", |
||||
|
defaultName: "Nom par défaut", |
||||
|
defaultNamePlaceholder: "Saisir le nom par défaut (chinois)", |
||||
|
path: "Chemin de route", |
||||
|
pathPlaceholder: "Saisir le chemin de route", |
||||
|
componentPath: "Chemin du composant", |
||||
|
componentPathPlaceholder: "Saisir le chemin du composant", |
||||
|
permsLabel: "Clé de permission", |
||||
|
permsPlaceholder: "Saisir la clé de permission", |
||||
|
isFrame: "Lien externe", |
||||
|
yes: "Oui", |
||||
|
no: "Non", |
||||
|
isCache: "Cache", |
||||
|
cache: "Cache", |
||||
|
noCache: "Sans cache", |
||||
|
visible: "Visibilité", |
||||
|
show: "Afficher", |
||||
|
hide: "Masquer", |
||||
|
menuStatus: "Statut du menu", |
||||
|
normal: "Normal", |
||||
|
disable: "Désactivé", |
||||
|
i18nTitle: "Noms multilingues du menu", |
||||
|
zhCN: "Chinois (zh-CN)", |
||||
|
enUS: "Anglais (en-US)", |
||||
|
frFR: "Français (fr-FR)", |
||||
|
esES: "Espagnol (es-ES)", |
||||
|
ptBR: "Portugais (pt-BR)", |
||||
|
zhCNPlaceholder: "Synchronisé avec le nom par défaut", |
||||
|
enUSPlaceholder: "Saisir le nom anglais", |
||||
|
frFRPlaceholder: "Saisir le nom français", |
||||
|
esESPlaceholder: "Saisir le nom espagnol", |
||||
|
ptBRPlaceholder: "Saisir le nom portugais", |
||||
|
rootCategory: "Racine", |
||||
|
titleAdd: "Ajouter un menu", |
||||
|
titleEdit: "Modifier le menu", |
||||
|
formNameRequired: "Le nom du menu est requis", |
||||
|
formOrderRequired: "L'ordre est requis", |
||||
|
formPathRequired: "Le chemin est requis", |
||||
|
msgEditSuccess: "Modification réussie", |
||||
|
msgAddSuccess: "Ajout réussi", |
||||
|
msgDeleteSuccess: "Suppression réussie", |
||||
|
confirmDelete: "Supprimer l'élément \"{name}\" ?", |
||||
|
}, |
||||
|
request: { |
||||
|
reloginTip: "Session expirée, veuillez vous reconnecter.", |
||||
|
relogin: "Se reconnecter", |
||||
|
invalidSession: "Session invalide, veuillez vous reconnecter.", |
||||
|
backendConnectError: "Erreur de connexion au backend", |
||||
|
requestTimeout: "Délai de requête dépassé", |
||||
|
apiErrorStatus: "Erreur API {status}", |
||||
|
downloading: "Téléchargement en cours...", |
||||
|
downloadError: "Échec du téléchargement, contactez l'administrateur.", |
||||
|
}, |
||||
|
}, |
||||
|
"es-ES": { |
||||
|
common: { |
||||
|
confirm: "Confirmar", |
||||
|
cancel: "Cancelar", |
||||
|
tips: "Aviso", |
||||
|
home: "Inicio", |
||||
|
search: "Buscar", |
||||
|
reset: "Restablecer", |
||||
|
add: "Agregar", |
||||
|
edit: "Editar", |
||||
|
remove: "Eliminar", |
||||
|
status: "Estado", |
||||
|
createTime: "Fecha de creación", |
||||
|
actions: "Acciones", |
||||
|
}, |
||||
|
lang: { |
||||
|
title: "Idioma", |
||||
|
"zh-CN": "Chino", |
||||
|
"en-US": "Inglés", |
||||
|
"fr-FR": "Francés", |
||||
|
"es-ES": "Español", |
||||
|
"pt-BR": "Portugués", |
||||
|
}, |
||||
|
navbar: { |
||||
|
layoutSize: "Tamaño de diseño", |
||||
|
profile: "Perfil", |
||||
|
logout: "Cerrar sesión", |
||||
|
logoutConfirm: "¿Confirmar cierre de sesión?", |
||||
|
}, |
||||
|
login: { |
||||
|
title: "Portal Empresarial GeoTag", |
||||
|
usernamePlaceholder: "Cuenta", |
||||
|
passwordPlaceholder: "Contraseña", |
||||
|
googleCodePlaceholder: "Código de Google", |
||||
|
login: "Iniciar sesión", |
||||
|
loggingIn: "Iniciando sesión...", |
||||
|
usernameRequired: "El usuario es obligatorio", |
||||
|
passwordRequired: "La contraseña es obligatoria", |
||||
|
codeRequired: "El código es obligatorio", |
||||
|
humanVerifyRequired: "Complete la verificación humana", |
||||
|
}, |
||||
|
menu: { |
||||
|
menuName: "Nombre del menú", |
||||
|
status: "Estado", |
||||
|
search: "Buscar", |
||||
|
reset: "Restablecer", |
||||
|
add: "Agregar", |
||||
|
expandCollapse: "Expandir/Contraer", |
||||
|
icon: "Icono", |
||||
|
orderNum: "Orden", |
||||
|
perms: "Clave de permiso", |
||||
|
component: "Ruta del componente", |
||||
|
createTime: "Fecha de creación", |
||||
|
actions: "Acciones", |
||||
|
edit: "Editar", |
||||
|
delete: "Eliminar", |
||||
|
parentMenu: "Menú padre", |
||||
|
selectParentMenu: "Seleccionar menú padre", |
||||
|
menuType: "Tipo de menú", |
||||
|
menuTypeM: "Directorio", |
||||
|
menuTypeC: "Menú", |
||||
|
menuTypeF: "Botón", |
||||
|
menuIcon: "Icono del menú", |
||||
|
clickSelectIcon: "Haga clic para seleccionar icono", |
||||
|
displayOrder: "Orden de visualización", |
||||
|
defaultName: "Nombre predeterminado", |
||||
|
defaultNamePlaceholder: "Ingrese nombre predeterminado (chino)", |
||||
|
path: "Ruta", |
||||
|
pathPlaceholder: "Ingrese ruta", |
||||
|
componentPath: "Ruta del componente", |
||||
|
componentPathPlaceholder: "Ingrese ruta del componente", |
||||
|
permsLabel: "Clave de permiso", |
||||
|
permsPlaceholder: "Ingrese clave de permiso", |
||||
|
isFrame: "Enlace externo", |
||||
|
yes: "Sí", |
||||
|
no: "No", |
||||
|
isCache: "Cache", |
||||
|
cache: "Cache", |
||||
|
noCache: "Sin cache", |
||||
|
visible: "Visibilidad", |
||||
|
show: "Mostrar", |
||||
|
hide: "Ocultar", |
||||
|
menuStatus: "Estado del menú", |
||||
|
normal: "Normal", |
||||
|
disable: "Deshabilitado", |
||||
|
i18nTitle: "Nombres multilingües del menú", |
||||
|
zhCN: "Chino (zh-CN)", |
||||
|
enUS: "Inglés (en-US)", |
||||
|
frFR: "Francés (fr-FR)", |
||||
|
esES: "Español (es-ES)", |
||||
|
ptBR: "Portugués (pt-BR)", |
||||
|
zhCNPlaceholder: "Se sincroniza con el nombre del menú", |
||||
|
enUSPlaceholder: "Ingrese nombre en inglés", |
||||
|
frFRPlaceholder: "Ingrese nombre en francés", |
||||
|
esESPlaceholder: "Ingrese nombre en español", |
||||
|
ptBRPlaceholder: "Ingrese nombre en portugués", |
||||
|
rootCategory: "Raíz", |
||||
|
titleAdd: "Agregar menú", |
||||
|
titleEdit: "Editar menú", |
||||
|
formNameRequired: "El nombre del menú es obligatorio", |
||||
|
formOrderRequired: "El orden es obligatorio", |
||||
|
formPathRequired: "La ruta es obligatoria", |
||||
|
msgEditSuccess: "Actualizado correctamente", |
||||
|
msgAddSuccess: "Agregado correctamente", |
||||
|
msgDeleteSuccess: "Eliminado correctamente", |
||||
|
confirmDelete: "¿Eliminar el elemento \"{name}\"?", |
||||
|
}, |
||||
|
request: { |
||||
|
reloginTip: "La sesión expiró, vuelva a iniciar sesión.", |
||||
|
relogin: "Iniciar sesión de nuevo", |
||||
|
invalidSession: "Sesión inválida, inicie sesión de nuevo.", |
||||
|
backendConnectError: "Error de conexión con el backend", |
||||
|
requestTimeout: "Tiempo de espera agotado", |
||||
|
apiErrorStatus: "Error API {status}", |
||||
|
downloading: "Descargando, espere...", |
||||
|
downloadError: "Error al descargar, contacte al administrador.", |
||||
|
}, |
||||
|
}, |
||||
|
"pt-BR": { |
||||
|
common: { |
||||
|
confirm: "Confirmar", |
||||
|
cancel: "Cancelar", |
||||
|
tips: "Aviso", |
||||
|
home: "Início", |
||||
|
search: "Pesquisar", |
||||
|
reset: "Redefinir", |
||||
|
add: "Adicionar", |
||||
|
edit: "Editar", |
||||
|
remove: "Excluir", |
||||
|
status: "Status", |
||||
|
createTime: "Data de criação", |
||||
|
actions: "Ações", |
||||
|
}, |
||||
|
lang: { |
||||
|
title: "Idioma", |
||||
|
"zh-CN": "Chinês", |
||||
|
"en-US": "Inglês", |
||||
|
"fr-FR": "Francês", |
||||
|
"es-ES": "Espanhol", |
||||
|
"pt-BR": "Português", |
||||
|
}, |
||||
|
navbar: { |
||||
|
layoutSize: "Tamanho do layout", |
||||
|
profile: "Perfil", |
||||
|
logout: "Sair", |
||||
|
logoutConfirm: "Confirmar saída do sistema?", |
||||
|
}, |
||||
|
login: { |
||||
|
title: "Portal Empresarial GeoTag", |
||||
|
usernamePlaceholder: "Conta", |
||||
|
passwordPlaceholder: "Senha", |
||||
|
googleCodePlaceholder: "Código Google", |
||||
|
login: "Entrar", |
||||
|
loggingIn: "Entrando...", |
||||
|
usernameRequired: "Usuário é obrigatório", |
||||
|
passwordRequired: "Senha é obrigatória", |
||||
|
codeRequired: "Código é obrigatório", |
||||
|
humanVerifyRequired: "Conclua a verificação humana", |
||||
|
}, |
||||
|
menu: { |
||||
|
menuName: "Nome do menu", |
||||
|
status: "Status", |
||||
|
search: "Pesquisar", |
||||
|
reset: "Redefinir", |
||||
|
add: "Adicionar", |
||||
|
expandCollapse: "Expandir/Recolher", |
||||
|
icon: "Ícone", |
||||
|
orderNum: "Ordem", |
||||
|
perms: "Chave de permissão", |
||||
|
component: "Caminho do componente", |
||||
|
createTime: "Data de criação", |
||||
|
actions: "Ações", |
||||
|
edit: "Editar", |
||||
|
delete: "Excluir", |
||||
|
parentMenu: "Menu pai", |
||||
|
selectParentMenu: "Selecionar menu pai", |
||||
|
menuType: "Tipo de menu", |
||||
|
menuTypeM: "Diretório", |
||||
|
menuTypeC: "Menu", |
||||
|
menuTypeF: "Botão", |
||||
|
menuIcon: "Ícone do menu", |
||||
|
clickSelectIcon: "Clique para selecionar ícone", |
||||
|
displayOrder: "Ordem de exibição", |
||||
|
defaultName: "Nome padrão", |
||||
|
defaultNamePlaceholder: "Digite o nome padrão (chinês)", |
||||
|
path: "Rota", |
||||
|
pathPlaceholder: "Digite a rota", |
||||
|
componentPath: "Caminho do componente", |
||||
|
componentPathPlaceholder: "Digite o caminho do componente", |
||||
|
permsLabel: "Chave de permissão", |
||||
|
permsPlaceholder: "Digite a chave de permissão", |
||||
|
isFrame: "Link externo", |
||||
|
yes: "Sim", |
||||
|
no: "Não", |
||||
|
isCache: "Cache", |
||||
|
cache: "Cache", |
||||
|
noCache: "Sem cache", |
||||
|
visible: "Visibilidade", |
||||
|
show: "Mostrar", |
||||
|
hide: "Ocultar", |
||||
|
menuStatus: "Status do menu", |
||||
|
normal: "Normal", |
||||
|
disable: "Desativado", |
||||
|
i18nTitle: "Nomes multilíngues do menu", |
||||
|
zhCN: "Chinês (zh-CN)", |
||||
|
enUS: "Inglês (en-US)", |
||||
|
frFR: "Francês (fr-FR)", |
||||
|
esES: "Espanhol (es-ES)", |
||||
|
ptBR: "Português (pt-BR)", |
||||
|
zhCNPlaceholder: "Sincroniza com nome padrão", |
||||
|
enUSPlaceholder: "Digite nome em inglês", |
||||
|
frFRPlaceholder: "Digite nome em francês", |
||||
|
esESPlaceholder: "Digite nome em espanhol", |
||||
|
ptBRPlaceholder: "Digite nome em português", |
||||
|
rootCategory: "Raiz", |
||||
|
titleAdd: "Adicionar menu", |
||||
|
titleEdit: "Editar menu", |
||||
|
formNameRequired: "Nome do menu é obrigatório", |
||||
|
formOrderRequired: "Ordem é obrigatória", |
||||
|
formPathRequired: "Rota é obrigatória", |
||||
|
msgEditSuccess: "Atualizado com sucesso", |
||||
|
msgAddSuccess: "Adicionado com sucesso", |
||||
|
msgDeleteSuccess: "Excluído com sucesso", |
||||
|
confirmDelete: "Excluir o item \"{name}\"?", |
||||
|
}, |
||||
|
request: { |
||||
|
reloginTip: "Sessão expirada, faça login novamente.", |
||||
|
relogin: "Entrar novamente", |
||||
|
invalidSession: "Sessão inválida, faça login novamente.", |
||||
|
backendConnectError: "Erro de conexão com o backend", |
||||
|
requestTimeout: "Tempo de requisição esgotado", |
||||
|
apiErrorStatus: "Erro da API {status}", |
||||
|
downloading: "Baixando, aguarde...", |
||||
|
downloadError: "Erro ao baixar, contate o administrador.", |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
export default messages; |
||||
@ -0,0 +1,244 @@ |
|||||
|
const profileMessages = { |
||||
|
"zh-CN": { |
||||
|
profile: { |
||||
|
title: "基本资料", |
||||
|
tabs: { |
||||
|
basic: "基本资料", |
||||
|
password: "修改密码", |
||||
|
}, |
||||
|
form: { |
||||
|
account: "登录账户", |
||||
|
businessName: "所属企业", |
||||
|
nickName: "昵称", |
||||
|
googleKey: "谷歌地图 Key", |
||||
|
gaodeKey: "高德地图 Key", |
||||
|
gaodeSecurityKey: "高德安全密钥", |
||||
|
oldPassword: "旧密码", |
||||
|
newPassword: "新密码", |
||||
|
confirmPassword: "确认密码", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
googleKey: "请输入谷歌地图 Key", |
||||
|
gaodeKey: "请输入高德地图 Key", |
||||
|
gaodeSecurityKey: "请输入高德安全密钥", |
||||
|
oldPassword: "请输入旧密码", |
||||
|
newPassword: "请输入新密码", |
||||
|
confirmPassword: "请再次输入新密码", |
||||
|
}, |
||||
|
tip: { |
||||
|
businessConfigReadonly: "当前账号只能修改自己的昵称,企业地图 Key 仅企业管理员可修改。", |
||||
|
}, |
||||
|
button: { |
||||
|
saveProfile: "保存资料", |
||||
|
reset: "重置", |
||||
|
changePassword: "修改密码", |
||||
|
}, |
||||
|
message: { |
||||
|
profileUpdated: "基本资料已更新", |
||||
|
passwordUpdated: "密码修改成功", |
||||
|
}, |
||||
|
validation: { |
||||
|
nickNameRequired: "昵称不能为空", |
||||
|
oldPasswordRequired: "旧密码不能为空", |
||||
|
newPasswordRequired: "新密码不能为空", |
||||
|
newPasswordLength: "长度在 6 到 20 个字符", |
||||
|
confirmPasswordRequired: "确认密码不能为空", |
||||
|
confirmPasswordMismatch: "两次输入的新密码不一致", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"en-US": { |
||||
|
profile: { |
||||
|
title: "Basic Information", |
||||
|
tabs: { |
||||
|
basic: "Basic Information", |
||||
|
password: "Change Password", |
||||
|
}, |
||||
|
form: { |
||||
|
account: "Login Account", |
||||
|
businessName: "Business", |
||||
|
nickName: "Nickname", |
||||
|
googleKey: "Google Maps Key", |
||||
|
gaodeKey: "Amap Key", |
||||
|
gaodeSecurityKey: "Amap Security Key", |
||||
|
oldPassword: "Old Password", |
||||
|
newPassword: "New Password", |
||||
|
confirmPassword: "Confirm Password", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
googleKey: "Enter Google Maps Key", |
||||
|
gaodeKey: "Enter Amap Key", |
||||
|
gaodeSecurityKey: "Enter Amap Security Key", |
||||
|
oldPassword: "Enter old password", |
||||
|
newPassword: "Enter new password", |
||||
|
confirmPassword: "Enter the new password again", |
||||
|
}, |
||||
|
tip: { |
||||
|
businessConfigReadonly: "This account can only update its own nickname. Business map keys can only be updated by enterprise administrators.", |
||||
|
}, |
||||
|
button: { |
||||
|
saveProfile: "Save Profile", |
||||
|
reset: "Reset", |
||||
|
changePassword: "Change Password", |
||||
|
}, |
||||
|
message: { |
||||
|
profileUpdated: "Profile updated successfully", |
||||
|
passwordUpdated: "Password changed successfully", |
||||
|
}, |
||||
|
validation: { |
||||
|
nickNameRequired: "Nickname is required", |
||||
|
oldPasswordRequired: "Old password is required", |
||||
|
newPasswordRequired: "New password is required", |
||||
|
newPasswordLength: "Length must be between 6 and 20 characters", |
||||
|
confirmPasswordRequired: "Please confirm the password", |
||||
|
confirmPasswordMismatch: "The two passwords do not match", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"fr-FR": { |
||||
|
profile: { |
||||
|
title: "Informations de base", |
||||
|
tabs: { |
||||
|
basic: "Informations de base", |
||||
|
password: "Modifier le mot de passe", |
||||
|
}, |
||||
|
form: { |
||||
|
account: "Compte de connexion", |
||||
|
businessName: "Entreprise", |
||||
|
nickName: "Surnom", |
||||
|
googleKey: "Cle Google Maps", |
||||
|
gaodeKey: "Cle Amap", |
||||
|
gaodeSecurityKey: "Cle de securite Amap", |
||||
|
oldPassword: "Ancien mot de passe", |
||||
|
newPassword: "Nouveau mot de passe", |
||||
|
confirmPassword: "Confirmer le mot de passe", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
googleKey: "Saisissez la cle Google Maps", |
||||
|
gaodeKey: "Saisissez la cle Amap", |
||||
|
gaodeSecurityKey: "Saisissez la cle de securite Amap", |
||||
|
oldPassword: "Saisissez l'ancien mot de passe", |
||||
|
newPassword: "Saisissez le nouveau mot de passe", |
||||
|
confirmPassword: "Saisissez a nouveau le nouveau mot de passe", |
||||
|
}, |
||||
|
tip: { |
||||
|
businessConfigReadonly: "Ce compte peut uniquement modifier son propre surnom. Les cles de carte de l'entreprise ne peuvent etre modifiees que par les administrateurs d'entreprise.", |
||||
|
}, |
||||
|
button: { |
||||
|
saveProfile: "Enregistrer", |
||||
|
reset: "Reinitialiser", |
||||
|
changePassword: "Modifier le mot de passe", |
||||
|
}, |
||||
|
message: { |
||||
|
profileUpdated: "Informations mises a jour avec succes", |
||||
|
passwordUpdated: "Mot de passe modifie avec succes", |
||||
|
}, |
||||
|
validation: { |
||||
|
nickNameRequired: "Le surnom est requis", |
||||
|
oldPasswordRequired: "L'ancien mot de passe est requis", |
||||
|
newPasswordRequired: "Le nouveau mot de passe est requis", |
||||
|
newPasswordLength: "La longueur doit etre comprise entre 6 et 20 caracteres", |
||||
|
confirmPasswordRequired: "Veuillez confirmer le mot de passe", |
||||
|
confirmPasswordMismatch: "Les deux mots de passe ne correspondent pas", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"es-ES": { |
||||
|
profile: { |
||||
|
title: "Informacion basica", |
||||
|
tabs: { |
||||
|
basic: "Informacion basica", |
||||
|
password: "Cambiar contrasena", |
||||
|
}, |
||||
|
form: { |
||||
|
account: "Cuenta de acceso", |
||||
|
businessName: "Empresa", |
||||
|
nickName: "Apodo", |
||||
|
googleKey: "Clave de Google Maps", |
||||
|
gaodeKey: "Clave de Amap", |
||||
|
gaodeSecurityKey: "Clave de seguridad de Amap", |
||||
|
oldPassword: "Contrasena anterior", |
||||
|
newPassword: "Nueva contrasena", |
||||
|
confirmPassword: "Confirmar contrasena", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
googleKey: "Ingrese la clave de Google Maps", |
||||
|
gaodeKey: "Ingrese la clave de Amap", |
||||
|
gaodeSecurityKey: "Ingrese la clave de seguridad de Amap", |
||||
|
oldPassword: "Ingrese la contrasena anterior", |
||||
|
newPassword: "Ingrese la nueva contrasena", |
||||
|
confirmPassword: "Ingrese nuevamente la nueva contrasena", |
||||
|
}, |
||||
|
tip: { |
||||
|
businessConfigReadonly: "Esta cuenta solo puede modificar su propio apodo. Las claves de mapa de la empresa solo pueden ser modificadas por administradores empresariales.", |
||||
|
}, |
||||
|
button: { |
||||
|
saveProfile: "Guardar datos", |
||||
|
reset: "Restablecer", |
||||
|
changePassword: "Cambiar contrasena", |
||||
|
}, |
||||
|
message: { |
||||
|
profileUpdated: "Informacion actualizada correctamente", |
||||
|
passwordUpdated: "Contrasena cambiada correctamente", |
||||
|
}, |
||||
|
validation: { |
||||
|
nickNameRequired: "El apodo es obligatorio", |
||||
|
oldPasswordRequired: "La contrasena anterior es obligatoria", |
||||
|
newPasswordRequired: "La nueva contrasena es obligatoria", |
||||
|
newPasswordLength: "La longitud debe estar entre 6 y 20 caracteres", |
||||
|
confirmPasswordRequired: "Confirme la contrasena", |
||||
|
confirmPasswordMismatch: "Las dos contrasenas no coinciden", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"pt-BR": { |
||||
|
profile: { |
||||
|
title: "Informacoes basicas", |
||||
|
tabs: { |
||||
|
basic: "Informacoes basicas", |
||||
|
password: "Alterar senha", |
||||
|
}, |
||||
|
form: { |
||||
|
account: "Conta de acesso", |
||||
|
businessName: "Empresa", |
||||
|
nickName: "Apelido", |
||||
|
googleKey: "Chave do Google Maps", |
||||
|
gaodeKey: "Chave da Amap", |
||||
|
gaodeSecurityKey: "Chave de seguranca da Amap", |
||||
|
oldPassword: "Senha antiga", |
||||
|
newPassword: "Nova senha", |
||||
|
confirmPassword: "Confirmar senha", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
googleKey: "Digite a chave do Google Maps", |
||||
|
gaodeKey: "Digite a chave da Amap", |
||||
|
gaodeSecurityKey: "Digite a chave de seguranca da Amap", |
||||
|
oldPassword: "Digite a senha antiga", |
||||
|
newPassword: "Digite a nova senha", |
||||
|
confirmPassword: "Digite novamente a nova senha", |
||||
|
}, |
||||
|
tip: { |
||||
|
businessConfigReadonly: "Esta conta so pode alterar o proprio apelido. As chaves de mapa da empresa so podem ser alteradas por administradores empresariais.", |
||||
|
}, |
||||
|
button: { |
||||
|
saveProfile: "Salvar dados", |
||||
|
reset: "Redefinir", |
||||
|
changePassword: "Alterar senha", |
||||
|
}, |
||||
|
message: { |
||||
|
profileUpdated: "Informacoes atualizadas com sucesso", |
||||
|
passwordUpdated: "Senha alterada com sucesso", |
||||
|
}, |
||||
|
validation: { |
||||
|
nickNameRequired: "O apelido e obrigatorio", |
||||
|
oldPasswordRequired: "A senha antiga e obrigatoria", |
||||
|
newPasswordRequired: "A nova senha e obrigatoria", |
||||
|
newPasswordLength: "O comprimento deve estar entre 6 e 20 caracteres", |
||||
|
confirmPasswordRequired: "Confirme a senha", |
||||
|
confirmPasswordMismatch: "As duas senhas nao coincidem", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
export default profileMessages; |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,219 @@ |
|||||
|
const systemUserDeviceMessages = { |
||||
|
"zh-CN": { |
||||
|
systemUser: { |
||||
|
button: { |
||||
|
viewDevices: "查看设备", |
||||
|
unbindDevices: "解绑设备", |
||||
|
}, |
||||
|
deviceDialog: { |
||||
|
title: "员工设备", |
||||
|
selectedUser: "当前员工", |
||||
|
empty: "暂无已分配设备", |
||||
|
query: { |
||||
|
sn: "序列号", |
||||
|
model: "型号", |
||||
|
orderCode: "订单号", |
||||
|
alias: "设备别名", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
sn: "请输入序列号", |
||||
|
model: "请输入型号", |
||||
|
orderCode: "请输入订单号", |
||||
|
alias: "请输入设备别名", |
||||
|
}, |
||||
|
table: { |
||||
|
id: "设备ID", |
||||
|
sn: "序列号", |
||||
|
model: "型号", |
||||
|
orderCode: "订单号", |
||||
|
alias: "设备别名", |
||||
|
activationStatus: "激活状态", |
||||
|
lastLocationTime: "位置时间", |
||||
|
}, |
||||
|
status: { |
||||
|
activated: "已激活", |
||||
|
notActivated: "未激活", |
||||
|
}, |
||||
|
message: { |
||||
|
selectDeviceFirst: "请先选择需要解绑的设备", |
||||
|
confirmUnbind: "确认解绑员工“{account}”选中的 {count} 台设备吗?", |
||||
|
unbindSuccess: "解绑成功", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"en-US": { |
||||
|
systemUser: { |
||||
|
button: { |
||||
|
viewDevices: "View Devices", |
||||
|
unbindDevices: "Unbind Devices", |
||||
|
}, |
||||
|
deviceDialog: { |
||||
|
title: "Employee Devices", |
||||
|
selectedUser: "Current Employee", |
||||
|
empty: "No assigned devices", |
||||
|
query: { |
||||
|
sn: "Serial Number", |
||||
|
model: "Model", |
||||
|
orderCode: "Order Code", |
||||
|
alias: "Device Alias", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
sn: "Enter serial number", |
||||
|
model: "Enter model", |
||||
|
orderCode: "Enter order code", |
||||
|
alias: "Enter device alias", |
||||
|
}, |
||||
|
table: { |
||||
|
id: "Device ID", |
||||
|
sn: "Serial Number", |
||||
|
model: "Model", |
||||
|
orderCode: "Order Code", |
||||
|
alias: "Device Alias", |
||||
|
activationStatus: "Activation Status", |
||||
|
lastLocationTime: "Location Time", |
||||
|
}, |
||||
|
status: { |
||||
|
activated: "Activated", |
||||
|
notActivated: "Not Activated", |
||||
|
}, |
||||
|
message: { |
||||
|
selectDeviceFirst: "Please select devices to unbind first", |
||||
|
confirmUnbind: "Unbind the selected {count} devices from employee \"{account}\"?", |
||||
|
unbindSuccess: "Devices unbound successfully", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"fr-FR": { |
||||
|
systemUser: { |
||||
|
button: { |
||||
|
viewDevices: "Voir appareils", |
||||
|
unbindDevices: "Dissocier appareils", |
||||
|
}, |
||||
|
deviceDialog: { |
||||
|
title: "Appareils de l'employe", |
||||
|
selectedUser: "Employe actuel", |
||||
|
empty: "Aucun appareil attribue", |
||||
|
query: { |
||||
|
sn: "Numero de serie", |
||||
|
model: "Modele", |
||||
|
orderCode: "Code de commande", |
||||
|
alias: "Alias de l'appareil", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
sn: "Saisissez le numero de serie", |
||||
|
model: "Saisissez le modele", |
||||
|
orderCode: "Saisissez le code de commande", |
||||
|
alias: "Saisissez l'alias de l'appareil", |
||||
|
}, |
||||
|
table: { |
||||
|
id: "ID appareil", |
||||
|
sn: "Numero de serie", |
||||
|
model: "Modele", |
||||
|
orderCode: "Code de commande", |
||||
|
alias: "Alias de l'appareil", |
||||
|
activationStatus: "Statut d'activation", |
||||
|
lastLocationTime: "Heure de position", |
||||
|
}, |
||||
|
status: { |
||||
|
activated: "Active", |
||||
|
notActivated: "Non active", |
||||
|
}, |
||||
|
message: { |
||||
|
selectDeviceFirst: "Veuillez d'abord selectionner les appareils a dissocier", |
||||
|
confirmUnbind: "Confirmer la dissociation de {count} appareils de l'employe \"{account}\" ?", |
||||
|
unbindSuccess: "Dissociation reussie", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"es-ES": { |
||||
|
systemUser: { |
||||
|
button: { |
||||
|
viewDevices: "Ver dispositivos", |
||||
|
unbindDevices: "Desvincular dispositivos", |
||||
|
}, |
||||
|
deviceDialog: { |
||||
|
title: "Dispositivos del empleado", |
||||
|
selectedUser: "Empleado actual", |
||||
|
empty: "No hay dispositivos asignados", |
||||
|
query: { |
||||
|
sn: "Numero de serie", |
||||
|
model: "Modelo", |
||||
|
orderCode: "Codigo de pedido", |
||||
|
alias: "Alias del dispositivo", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
sn: "Ingrese el numero de serie", |
||||
|
model: "Ingrese el modelo", |
||||
|
orderCode: "Ingrese el codigo de pedido", |
||||
|
alias: "Ingrese el alias del dispositivo", |
||||
|
}, |
||||
|
table: { |
||||
|
id: "ID del dispositivo", |
||||
|
sn: "Numero de serie", |
||||
|
model: "Modelo", |
||||
|
orderCode: "Codigo de pedido", |
||||
|
alias: "Alias del dispositivo", |
||||
|
activationStatus: "Estado de activacion", |
||||
|
lastLocationTime: "Hora de ubicacion", |
||||
|
}, |
||||
|
status: { |
||||
|
activated: "Activado", |
||||
|
notActivated: "No activado", |
||||
|
}, |
||||
|
message: { |
||||
|
selectDeviceFirst: "Primero seleccione los dispositivos que desea desvincular", |
||||
|
confirmUnbind: "Confirma desvincular {count} dispositivos del empleado \"{account}\"?", |
||||
|
unbindSuccess: "Desvinculacion completada", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"pt-BR": { |
||||
|
systemUser: { |
||||
|
button: { |
||||
|
viewDevices: "Ver dispositivos", |
||||
|
unbindDevices: "Desvincular dispositivos", |
||||
|
}, |
||||
|
deviceDialog: { |
||||
|
title: "Dispositivos do funcionario", |
||||
|
selectedUser: "Funcionario atual", |
||||
|
empty: "Nenhum dispositivo vinculado", |
||||
|
query: { |
||||
|
sn: "Numero de serie", |
||||
|
model: "Modelo", |
||||
|
orderCode: "Codigo do pedido", |
||||
|
alias: "Alias do dispositivo", |
||||
|
}, |
||||
|
placeholder: { |
||||
|
sn: "Digite o numero de serie", |
||||
|
model: "Digite o modelo", |
||||
|
orderCode: "Digite o codigo do pedido", |
||||
|
alias: "Digite o alias do dispositivo", |
||||
|
}, |
||||
|
table: { |
||||
|
id: "ID do dispositivo", |
||||
|
sn: "Numero de serie", |
||||
|
model: "Modelo", |
||||
|
orderCode: "Codigo do pedido", |
||||
|
alias: "Alias do dispositivo", |
||||
|
activationStatus: "Status de ativacao", |
||||
|
lastLocationTime: "Horario da posicao", |
||||
|
}, |
||||
|
status: { |
||||
|
activated: "Ativado", |
||||
|
notActivated: "Nao ativado", |
||||
|
}, |
||||
|
message: { |
||||
|
selectDeviceFirst: "Selecione primeiro os dispositivos que deseja desvincular", |
||||
|
confirmUnbind: "Confirmar a desvinculacao de {count} dispositivos do funcionario \"{account}\"?", |
||||
|
unbindSuccess: "Desvinculacao concluida com sucesso", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
export default systemUserDeviceMessages; |
||||
@ -0,0 +1,65 @@ |
|||||
|
let leafletPromise = null; |
||||
|
|
||||
|
function ensureLeafletCss() { |
||||
|
const styleId = "geotag-leaflet-style"; |
||||
|
if (document.getElementById(styleId)) { |
||||
|
return; |
||||
|
} |
||||
|
const link = document.createElement("link"); |
||||
|
link.id = styleId; |
||||
|
link.rel = "stylesheet"; |
||||
|
link.href = "https://unpkg.com/[email protected]/dist/leaflet.css"; |
||||
|
document.head.appendChild(link); |
||||
|
} |
||||
|
|
||||
|
export function loadLeaflet() { |
||||
|
if (typeof window === "undefined") { |
||||
|
return Promise.reject(new Error("当前环境不支持加载 Leaflet")); |
||||
|
} |
||||
|
|
||||
|
if (window.L && typeof window.L.map === "function") { |
||||
|
return Promise.resolve(window.L); |
||||
|
} |
||||
|
|
||||
|
if (leafletPromise) { |
||||
|
return leafletPromise; |
||||
|
} |
||||
|
|
||||
|
leafletPromise = new Promise((resolve, reject) => { |
||||
|
ensureLeafletCss(); |
||||
|
|
||||
|
const scriptId = "geotag-leaflet-script"; |
||||
|
const existingScript = document.getElementById(scriptId); |
||||
|
|
||||
|
const handleResolve = () => { |
||||
|
if (window.L && typeof window.L.map === "function") { |
||||
|
resolve(window.L); |
||||
|
return; |
||||
|
} |
||||
|
leafletPromise = null; |
||||
|
reject(new Error("Leaflet 脚本加载失败")); |
||||
|
}; |
||||
|
|
||||
|
const handleError = () => { |
||||
|
leafletPromise = null; |
||||
|
reject(new Error("Leaflet 脚本加载失败")); |
||||
|
}; |
||||
|
|
||||
|
if (existingScript) { |
||||
|
existingScript.addEventListener("load", handleResolve, { once: true }); |
||||
|
existingScript.addEventListener("error", handleError, { once: true }); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
const script = document.createElement("script"); |
||||
|
script.id = scriptId; |
||||
|
script.async = true; |
||||
|
script.defer = true; |
||||
|
script.src = "https://unpkg.com/[email protected]/dist/leaflet.js"; |
||||
|
script.onload = handleResolve; |
||||
|
script.onerror = handleError; |
||||
|
document.head.appendChild(script); |
||||
|
}); |
||||
|
|
||||
|
return leafletPromise; |
||||
|
} |
||||
Loading…
Reference in new issue