|
Android strings.xml을 자동화 하기 위한 파이썬 스크립트를 작성했어. |
|
|
|
코드는 다음과 같아. |
|
|
|
```python |
|
import os |
|
|
|
def get_folder_name(lang): |
|
"""언어 코드를 받아와 해당 언어의 폴더 이름을 반환합니다.""" |
|
return "values" if lang == 'en' else f"values-{lang}" |
|
|
|
def ensure_directory(directory): |
|
"""주어진 디렉토리가 있는지 확인하고, 없다면 생성합니다.""" |
|
if not os.path.exists(directory): |
|
os.makedirs(directory) |
|
|
|
def update_translation_in_file(file_path, key, translation): |
|
"""주어진 파일 경로에서 XML 파일을 업데이트하거나 생성합니다.""" |
|
if os.path.exists(file_path): |
|
with open(file_path, 'r', encoding='utf-8') as file: |
|
content = file.read() |
|
|
|
existing_key = f'<string name="{key}">' |
|
if existing_key in content: |
|
# 기존 키를 새로운 번역으로 대체 |
|
content = content.replace(f'{existing_key}.*?</string>', f'{existing_key}{translation}</string>') |
|
new_content = content |
|
elif '</resources>' in content: |
|
new_content = content.replace('</resources>', f' <string name="{key}">{translation}</string>\n</resources>') |
|
else: |
|
new_content = content + f'\n<string name="{key}">{translation}</string>\n</resources>' |
|
|
|
with open(file_path, 'w', encoding='utf-8') as file: |
|
file.write(new_content) |
|
|
|
else: |
|
with open(file_path, 'w', encoding='utf-8') as file: |
|
file.write(f'<?xml version="1.0" encoding="utf-8"?>\n<resources>\n <string name="{key}">{translation}</string>\n</resources>') |
|
|
|
def add_translation(key, translations): |
|
"""번역을 추가하는 메인 함수입니다.""" |
|
languages = ['en', 'ar', 'de', 'es', 'fr', 'it', 'ja', 'ko', 'zh-rTW', 'zh'] |
|
translation_list = translations.split('|') |
|
|
|
if len(translation_list) != len(languages): |
|
print("Error: Number of translations provided does not match the number of supported languages.") |
|
return |
|
|
|
base_path = "app/src/main/res/" |
|
|
|
for lang, translation in zip(languages, translation_list): |
|
folder_name = get_folder_name(lang) |
|
directory = f"{base_path}{folder_name}" |
|
|
|
ensure_directory(directory) |
|
|
|
file_path = f"{directory}/strings.xml" |
|
update_translation_in_file(file_path, key, translation) |
|
|
|
if __name__ == "__main__": |
|
import sys |
|
|
|
if len(sys.argv) < 3: |
|
print("Please provide all the required parameters.") |
|
exit() |
|
|
|
add_translation(sys.argv[1], sys.argv[2]) |
|
``` |
|
|
|
사용방법은 아래와 같이 사용하면 돼 |
|
예시: |
|
``` |
|
python3 add_translation.py data_loading "Loading data. Please try again in a moment.|جاري تحميل البيانات. يرجى المحاولة مرة أخرى بعد قليل.|Daten werden geladen. Bitte versuchen Sie es in einem Moment erneut.|Cargando datos. Por favor, inténtelo de nuevo en un momento.|Chargement des données. Veuillez réessayer dans un moment.|Caricamento dati. Si prega di riprovare tra un momento.|データをロード中です。少し待ってから再度お試しください。|데이터 로딩 중입니다. 잠시 후 다시 시도해주세요.|正在加载数据,请稍后再试。|正在載入資料 |
|
,請稍後再試。" |
|
``` |
|
|
|
['en', 'ar', 'de', 'es', 'fr', 'it', 'ja', 'ko', 'zh-rTW', 'zh'] 순서에 맞게 번역 파일을 만들고 싶은데 위에 사용 예시를 바탕으로 스크립트를 작성해줘. |
|
|
|
내가 번역할 내용은 아래 적힌 내용이야. |
|
|
|
{{ eg. 안녕하세요 }} |