Security News
PyPI’s New Archival Feature Closes a Major Security Gap
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
mobile-strings-converter
Advanced tools
Convert Android & iOS strings files to any supported file type and vice versa.
A Python package that converts Android & iOS strings files to any supported file type, and vice versa.
I have tried to do the whole process of converting a strings resource file into a spreadsheet in Google Sheets by hand, and although you can do it with the Data > Split text to columns option, it is a waste of time to generate the spreadsheet manually. Also, you are limited to spreadsheet files only. For this reason, I decided to create a time-efficient solution that consists of running a Python script in order to do this that with any file type.
In addition to being able to run this script on its own, it can also be installed as a package via PyPI (more information on how to install it here).
*.xml
)*.strings
)│ .gitignore
│ .pre-commit-config.yaml
│ LICENSE
│ poetry.lock
│ pyproject.toml
│ README.md
│ requirements.txt
│ requirements-dev.txt
│
├───.github
│ │ CONTRIBUTING.md
│ │
│ ├───ISSUE_TEMPLATE
│ │ bug_report_template.md
│ │ feature_request_template.md
│ │
│ └───PULL_REQUEST_TEMPLATE
│ pull_request_template.md
│
├───docs
│ icon.png
│
├───src
│ ├───mobile_strings_converter
│ │ console_style.py
│ │ converter.py
│ │ __init__.py
│ │ __main__.py
│ │
│ ├───assets
│ │ └───fonts
│ │ Aakar.ttf
│ │ AnekTelugu-VariableFont_wdth,wght.ttf
│ │ DejaVuSansCondensed.ttf
│ │ Eunjin.ttf
│ │ fireflysung.ttf
│ │ gargi.ttf
│ │ Gurvetica_a8_Heavy.ttf
│ │ Latha.ttf
│ │ Waree.ttf
│ │
│ ├───controller
│ │ main_controller.py
│ │ __init__.py
│ │
│ ├───model
│ │ transcription.py
│ │ __init__.py
│ │
│ ├───utils
│ │ constants.py
│ │ i18n.py
│ │ path_helper.py
│ │ __init__.py
│ │
│ └───view
│ main_window.py
│ __init__.py
│
└───tests
│ base_tests.py
│ test_get_strings.py
│ test_android.py
│ test_csv.py
│ test_html.py
│ test_ios.py
│ test_json.py
│ test_md.py
│ test_ods.py
│ test_pdf.py
│ test_xlsx.py
│ test_yaml.py
│
└───files
├───input
│ Localizable.strings
│ strings.xml
│
├───template-with-comments
│ Localizable.strings
│ strings.csv
│ strings.html
│ strings.json
│ strings.md
│ strings.ods
│ strings.pdf
│ strings.xlsx
│ strings.xml
│ strings.yaml
│
└───template-without-comments
Localizable.strings
strings.csv
strings.html
strings.json
strings.md
strings.ods
strings.pdf
strings.xlsx
strings.xml
strings.yaml
google.oauth2.credentials
to authenticate to the user's Google account in order to create the spreadsheet in Google Sheets.File | Description | Size |
---|---|---|
mobile-strings-converter.zip | PDF file support for almost all languages (see exceptions) | 8.43 MB |
.zip
file from the latest release.virtualenv
, you would run virtualenv venv
.# on Windows
. venv/Scripts/activate
# if you get the error `FullyQualifiedErrorId : UnauthorizedAccess`, run this:
Set-ExecutionPolicy Unrestricted -Scope Process
# and then . venv/Scripts/activate
# on macOS and Linux
source venv/Scripts/activate
pip install -r path/to/requirements.txt
to install the required packages to run the script.Install the PyPI package by running pip install mobile-strings-converter
.
To convert one file to another file:
python path/to/mobile_strings_converter.py *.[SUPPORTED_FILE_TYPE] -f *.[SUPPORTED_FILE_TYPE]
To include the comments of the .xml
/.strings
input file in the output file, add the -p
(also --print-comments
) flag. Note that it will be ignored for other input file types.
python path/to/mobile_strings_converter.py *.[SUPPORTED_FILE_TYPE] -f *.[SUPPORTED_FILE_TYPE] -p
To convert multiple files at once and save them to the specified directory passed in the -d
flag, use the-t
flag followed by the desired file type extension (e.g., .json
). Note that the program will create the directory if it doesn't exist.
python path/to/mobile_strings_converter.py *.[SUPPORTED_FILE_TYPE] *.[SUPPORTED_FILE_TYPE] *.[SUPPORTED_FILE_TYPE] -d [DIR_PATH] -t [TARGET_TYPE]
To convert supported files in a directory and its subdirectories and save them to a directory:
python path/to/mobile_strings_converter.py [INPUT_DIR_PATH] -d [OUTPUT_DIR_PATH] -t [TARGET_TYPE]
To convert supported files in multiple directories and their subdirectories and save them to a directory:
python path/to/mobile_strings_converter.py [INPUT_DIR_PATH_1] [INPUT_DIR_PATH_2] [INPUT_DIR_PATH_3] -d [OUTPUT_DIR_PATH] -t [TARGET_TYPE]
For multiple file inputs and directories, the name of the files will be the same as the input file. For example, if there is a file named spanish.xml
in a directory, the output file name will be spanish.[TARGET_TYPE]
See the Generating a Spreadsheet in Google Sheets section to create a spreadsheet in your Google account.
Flag | Description |
---|---|
-h or --help | Displays help text for the program. |
-f or --output-filepath | Path to save the converted file. Only works if only one input file is provided. The file extension can be chosen from the list of supported file types. |
-d or --output-dir | Directory where the converted files will be saved. Compatible with single and multiple input files as well as directories. The specified directory will be created if it does not already exist. |
-t or --target-type | Target file type to convert the files (e.g., .pdf, .json). Required if multiple file paths or the --output-dir is specified. |
-g or --google-sheets | If provided, a Google spreadsheet will be created in your Google account. You must pass the service_account.json with the -c flag. |
-c or --credentials | service_account.json filepath. Mandatory if you want to generate a spreadsheet in your Google account. You can learn how to generate it in the Generating a Spreadsheet in Google Sheets section. |
-p or --print-comments | If provided, the commented strings will be printed in the output file. Only valid for input files of type .xml or .strings . Otherwise it is ignored. |
After following the steps in the Getting Started section, import the package and the wrapper function(s) you want to use:
# Using the `get_strings` function
from mobile_strings_converter import get_strings
get_strings(
input_filepath=Path("strings.xml"),
with_comments=True
)
Before going further into running the commands to do this, note that you need to generate a service_account.json
file. Follow these steps to get one:
service_account.json
file.service_account.json
file.Alternatively, you can create an .xlsx
file and open it in Google Sheets if you do not want to go through the hassle of generating the service_account.json
file.
Once you have the service_account.json
file, you can create a spreadsheet in Google Sheets by running the following command:
python path/to/mobile_strings_converter.py *.[SUPPORTED_FILE_TYPE] -g -c path/to/service_account.json
If you want to generate an output file along with the spreadsheet, run this:
python path/to/mobile_strings_converter.py *.[SUPPORTED_FILE_TYPE] -g -c path/to/service_account.json -o *.[SUPPORTED_FILE_TYPE]
The name of the sheet will be the same as the name of the input file.
to_google_sheets
Function in Your Projectfrom mobile_strings_converter import to_google_sheets
to_google_sheets(
input_filepath=Path("path/to/strings-file"),
sheet_name="MyProject strings",
credentials_filepath=Path("path/to/service_account.json"),
with_comments=True,
)
.xml
or .strings
) into a strings resource file (.xml
or .strings
).You can propose a new feature creating an issue.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. Please, read the CONTRIBUTING.md file, where you can find more detailed information about how to contribute to the project.
Distributed under the MIT License. See LICENSE
for more information.
See also the list of contributors who participated in this project.
I have made use of the following resources to make this project:
Would you like to support the project? That's very kind of you! You can go to my Ko-Fi profile by clicking on the button down below.
FAQs
Convert Android & iOS strings files to any supported file type and vice versa.
We found that mobile-strings-converter demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Research
Security News
Malicious npm package postcss-optimizer delivers BeaverTail malware, targeting developer systems; similarities to past campaigns suggest a North Korean connection.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.