Files
web-Iot/.workbuddy/update_utils.py
2026-08-12 11:29:44 +08:00

120 lines
5.7 KiB
Python

import re
with open('src/lib/utils.ts', 'r', encoding='utf-8') as f:
content = f.read()
# Add i18n import at the top (after the last import line)
i18n_import = "import i18n from '../i18n';\n"
# Find the last import line and add after it
content = re.sub(
r"(import type \{ NotificationInstance \} from 'antd/es/notification/interface';\n)",
r"\1" + i18n_import,
content,
count=1
)
# Replace getLocationQuality labels with i18n getters
loc_replacements = {
"text: '\u65e0\u6548'": "get text() { return i18n.t('constants.locationInvalid') }",
"text: 'GPS \u5355\u70b9\u5b9a\u4f4d'": "get text() { return i18n.t('constants.locationGPS') }",
"text: 'DGPS \u4f2a\u8ddd\u5dee\u5206/SBAS'": "get text() { return i18n.t('constants.locationDGPS') }",
"text: 'RTK \u56fa\u5b9a\u89e3'": "get text() { return i18n.t('constants.locationRTKFixed') }",
"text: 'RTK \u6d6e\u70b9\u89e3'": "get text() { return i18n.t('constants.locationRTKFloat') }",
"text: '\u672a\u77e5'": "get text() { return i18n.t('constants.locationUnknown') }",
}
for old, new in loc_replacements.items():
content = content.replace(old, new)
# Replace errorSourceOptions labels
content = content.replace(
"{ label: '\u65e0\u4eba\u673a', value: ERROR_SOURCE.UAV }",
"{ value: ERROR_SOURCE.UAV, get label() { return i18n.t('constants.uav') } }"
)
content = content.replace(
"{ label: '\u5272\u8349\u673a', value: ERROR_SOURCE.MOWER }",
"{ value: ERROR_SOURCE.MOWER, get label() { return i18n.t('constants.mower') } }"
)
content = content.replace(
"{ label: '\u5176\u4ed6', value: ERROR_SOURCE.OTHERS }",
"{ value: ERROR_SOURCE.OTHERS, get label() { return i18n.t('constants.others') } }"
)
# Replace errorLevelOptions labels
content = content.replace(
"{ label: '\u4fe1\u606f', value: 'INFO' }",
"{ value: 'INFO', get label() { return i18n.t('constants.infoLevel') } }"
)
content = content.replace(
"{ label: '\u8b66\u544a', value: 'WARNING' }",
"{ value: 'WARNING', get label() { return i18n.t('constants.warning') } }"
)
content = content.replace(
"{ label: '\u9519\u8bef', value: 'ERROR' }",
"{ value: 'ERROR', get label() { return i18n.t('constants.error') } }"
)
# Replace CompareEnumOptions labels
compare_replacements = {
"label: '\u7b49\u4e8e'": "get label() { return i18n.t('constants.eq') }",
"label: '\u4e0d\u7b49\u4e8e'": "get label() { return i18n.t('constants.neq') }",
"label: '\u5927\u4e8e'": "get label() { return i18n.t('constants.gt') }",
"label: '\u5c0f\u4e8e'": "get label() { return i18n.t('constants.lt') }",
"label: '\u5927\u4e8e\u7b49\u4e8e'": "get label() { return i18n.t('constants.gte') }",
"label: '\u5c0f\u4e8e\u7b49\u4e8e'": "get label() { return i18n.t('constants.lte') }",
"label: '\u5728\u4e4b\u95f4'": "get label() { return i18n.t('constants.between') }",
"label: '\u4e0d\u5728\u4e4b\u95f4'": "get label() { return i18n.t('constants.notBetween') }",
"label: '\u5305\u542b'": "get label() { return i18n.t('constants.contain') }",
"label: '\u4e0d\u5305\u542b'": "get label() { return i18n.t('constants.notContain') }",
}
for old, new in compare_replacements.items():
content = content.replace(old, new)
# Replace workOrderTypeOptions labels
wo_replacements = {
'label: "\u5272\u8349\u673a\u6545\u969c"': "get label() { return i18n.t('workOrder.mowerError') }",
'label: "\u65e0\u4eba\u673a\u6545\u969c"': "get label() { return i18n.t('workOrder.uavError') }",
'label: "\u5de1\u68c0"': "get label() { return i18n.t('workOrder.typeInspection') }",
'label: "\u5149\u4f0f\u7ec4\u4ef6\u6545\u969c"': "get label() { return i18n.t('workOrder.componentDefect') }",
'label: "\u6e05\u6d17"': "get label() { return i18n.t('workOrder.typeCleaning') }",
'label: "\u7ef4\u62a4"': "get label() { return i18n.t('workOrder.maintainTask') }",
'label: "\u7ef4\u4fee"': "get label() { return i18n.t('workOrder.typeRepair') }",
'label: "\u5176\u4ed6"': "get label() { return i18n.t('workOrder.other') }",
}
for old, new in wo_replacements.items():
content = content.replace(old, new)
# Replace alarmHandleResultOptions labels
alarm_replacements = {
'{ value: "Handled", label: "\u5df2\u5904\u7406" }': '{ value: "Handled", get label() { return i18n.t("constants.handled") } }',
'{ value: "Restored", label: "\u5df2\u6062\u590d" }': '{ value: "Restored", get label() { return i18n.t("constants.restored") } }',
'{ value: "Ignored", label: "\u5df2\u5ffd\u7565" }': '{ value: "Ignored", get label() { return i18n.t("constants.ignored") } }',
'{ value: "UnableToHandle", label: "\u65e0\u6cd5\u5904\u7406" }': '{ value: "UnableToHandle", get label() { return i18n.t("constants.unableToHandle") } }',
'{ value: "ManufacturerHandling", label: "\u5382\u5bb6\u5904\u7406\u4e2d" }': '{ value: "ManufacturerHandling", get label() { return i18n.t("constants.manufacturerHandling") } }',
'{ value: "FalseAlarm", label: "\u8bef\u62a5" }': '{ value: "FalseAlarm", get label() { return i18n.t("constants.falseAlarm") } }',
}
for old, new in alarm_replacements.items():
content = content.replace(old, new)
# Replace exportTable default fileName
content = content.replace(
'fileName = "\u5bfc\u51fa\u6570\u636e"',
'fileName = i18n.t("constants.exportData")'
)
# Replace getVal function
content = content.replace(
'val == "no_rain" ? "\u65e0" : (val || \'-\')',
'val == "no_rain" ? i18n.t("constants.none") : (val || \'-\')'
)
# Replace weather error messages
content = content.replace(
"'[\u5929\u6c14API] \u83b7\u53d6\u5929\u6c14\u6570\u636e\u5931\u8d25\uff1a'",
"'[WeatherAPI]'"
)
with open('src/lib/utils.ts', 'w', encoding='utf-8') as f:
f.write(content)
print("utils.ts updated successfully")