tangem-app-android-audited/lokalize.py
2024-09-25 14:58:39 +05:00

87 lines
2.7 KiB
Python

# Steps to use:
# 1) Install Python (depends on OS)
# 2) Install Lokalise API for python:
# > pip3 install python-lokalise-api --break-system-packages
# 3) Obtain token here: https://app.lokalise.com/profile#apitokens
# 4) Create file local.properties (if not exists) and define variables there:
# > lokalise.project.id=[PROJECT_ID]
# > lokalise.token=[YOUR_TOKEN]
# 5) Use script when you need to download translations:
# > python3 lokalize.py
# In case you want to filter languages, just add --langs argument with specific values
# > python3 lokalize.py --langs en,ru
import os
import urllib.request
import zipfile
import lokalise
import configparser
import argparse
import sys
import shutil
config = configparser.ConfigParser()
parser = argparse.ArgumentParser()
parser.add_argument(
"--langs",
nargs='?',
type=str,
help="--langs en,ru",
default='',
)
config_file_path = "local.properties"
section_default = "default"
project_id_key = "lokalise.project.id"
token_key = "lokalise.token"
directory_prefix = "core/res/src/main/res/values-%LANG_ISO%/"
if not os.path.isfile(config_file_path):
print(f"{config_file_path} not found!")
else:
with open(config_file_path) as stream:
config.read_string(f'[{section_default}]\n' + stream.read())
api_token = config.get(section_default, token_key, fallback=None)
project_id = config.get(section_default, project_id_key, fallback=None)
if project_id is None:
print(f"Key '{project_id_key}' not found in file {config_file_path}")
elif api_token is None:
print(f"Key '{token_key}' not found in file {config_file_path}")
else:
print(f"Found project: {project_id}")
print(f"Found token: {api_token}")
folder_path = "."
file_name = "lokalize.zip"
client = lokalise.Client(api_token)
project = client.project(project_id)
print('Found project: ' + project.name)
print('Read args...')
args = parser.parse_args()
print("Generating bundle...")
response = client.download_files(project_id, {
"format": "xml",
"original_filenames": True,
"filter_langs": list(filter(None, args.langs.split(",") if args.langs is not None else "")),
"directory_prefix": directory_prefix,
"filter_data": ["translated"]
})
print("Downloading translation file...")
bundle_url = response['bundle_url']
urllib.request.urlretrieve(bundle_url, file_name)
print("Unzipping archive...")
with zipfile.ZipFile(file_name, 'r') as zip_ref:
zip_ref.extractall(folder_path)
print("Removing archive...")
os.remove(file_name)
print("All done!")