Refactor merge logic to prioritize 'ko' msgid and streamline data structure for translations
This commit is contained in:
@ -60,12 +60,20 @@ def merge_po_to_csv_literal():
|
|||||||
source_location_str = entry.occurrences[0][0] if entry.occurrences else "NoSourceLocation"
|
source_location_str = entry.occurrences[0][0] if entry.occurrences else "NoSourceLocation"
|
||||||
# source_location은 경로이므로 줄바꿈이 없을 가능성이 높지만, 안정성을 위해 추가
|
# source_location은 경로이므로 줄바꿈이 없을 가능성이 높지만, 안정성을 위해 추가
|
||||||
source_location_str = source_location_str.replace('\r', '\\r').replace('\n', '\\n')
|
source_location_str = source_location_str.replace('\r', '\\r').replace('\n', '\\n')
|
||||||
|
|
||||||
data_key = (msgctxt_str, msgid_str, source_location_str)
|
# msgctxt + SourceLocation을 키로 사용 (msgid는 언어마다 다를 수 있음)
|
||||||
|
data_key = (msgctxt_str, source_location_str)
|
||||||
|
|
||||||
if data_key not in merged_data:
|
if data_key not in merged_data:
|
||||||
merged_data[data_key] = {}
|
merged_data[data_key] = {
|
||||||
|
'msgid': msgid_str, # 첫 번째로 발견된 msgid 저장
|
||||||
|
'msgid_ko': None, # ko의 msgid를 별도로 저장
|
||||||
|
}
|
||||||
|
|
||||||
|
# ko 언어의 msgid는 별도로 저장 (원본 언어이므로 우선)
|
||||||
|
if lang_code == 'ko':
|
||||||
|
merged_data[data_key]['msgid_ko'] = msgid_str
|
||||||
|
|
||||||
merged_data[data_key][lang_code] = msgstr_str
|
merged_data[data_key][lang_code] = msgstr_str
|
||||||
# --- 수정 완료 ---
|
# --- 수정 완료 ---
|
||||||
|
|
||||||
@ -74,13 +82,21 @@ def merge_po_to_csv_literal():
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
records = []
|
records = []
|
||||||
for (msgctxt, msgid, source_location), translations in merged_data.items():
|
for (msgctxt, source_location), data in merged_data.items():
|
||||||
|
# ko의 msgid가 있으면 우선 사용, 없으면 첫 번째로 발견된 msgid 사용
|
||||||
|
msgid = data.get('msgid_ko') if data.get('msgid_ko') else data.get('msgid')
|
||||||
|
|
||||||
record = {
|
record = {
|
||||||
'msgctxt': msgctxt,
|
'msgctxt': msgctxt,
|
||||||
'SourceLocation': source_location,
|
'SourceLocation': source_location,
|
||||||
'msgid': msgid,
|
'msgid': msgid,
|
||||||
}
|
}
|
||||||
record.update(translations)
|
|
||||||
|
# 언어별 번역 추가 ('msgid', 'msgid_ko' 키는 제외)
|
||||||
|
for key, value in data.items():
|
||||||
|
if key not in ['msgid', 'msgid_ko']:
|
||||||
|
record[key] = value
|
||||||
|
|
||||||
records.append(record)
|
records.append(record)
|
||||||
|
|
||||||
df = pd.DataFrame(records)
|
df = pd.DataFrame(records)
|
||||||
|
|||||||
Reference in New Issue
Block a user