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