Skip to content

Commit f580d7e

Browse files
authored
Merge pull request #207 from learningequality/dari
Add Dari three letter language code
2 parents 0fb6085 + 6997515 commit f580d7e

File tree

2 files changed

+73
-37
lines changed

2 files changed

+73
-37
lines changed

le_utils/resources/languagelookup.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -759,6 +759,10 @@
759759
"name": "Pashto; Pushto",
760760
"native_name": "پښتو"
761761
},
762+
"prs": {
763+
"name": "Dari",
764+
"native_name": "دری"
765+
},
762766
"pt": {
763767
"name": "Portuguese",
764768
"native_name": "Português"

scripts/add_language.py

Lines changed: 69 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/usr/bin/env python3
2+
import argparse
23
import json
34
import os
45
import sys
@@ -77,7 +78,53 @@ def get_language_info(query: str) -> Optional[Dict[str, str]]:
7778
return data
7879

7980

81+
def add_language(data, query, confirm=False):
82+
"""Look up a language and add it to the data dict.
83+
84+
Args:
85+
data: language dictionary to update
86+
query: language name or code to look up
87+
confirm: if True, prompt the user before adding
88+
89+
Returns True if the language was added, False otherwise.
90+
"""
91+
language_info = get_language_info(query)
92+
if not language_info:
93+
print(f"Language not found: {query}")
94+
return False
95+
96+
code = language_info["code"]
97+
name = language_info["name"]
98+
native_name = language_info["native_name"]
99+
100+
print(f"\nFound language: {code} - {name} ({native_name})")
101+
102+
if code in data:
103+
print(
104+
f"Warning: '{code}' already exists: "
105+
f"{data[code].get('name')} ({data[code].get('native_name')})"
106+
)
107+
108+
if confirm and input("Add this language? (Y/N): ").lower() != "y":
109+
print("Language not added.")
110+
return False
111+
112+
data[code] = {"name": name, "native_name": native_name}
113+
print(f"Added language: {name}")
114+
return True
115+
116+
80117
def main():
118+
parser = argparse.ArgumentParser(
119+
description="Add languages to le_utils languagelookup.json"
120+
)
121+
parser.add_argument(
122+
"languages",
123+
nargs="*",
124+
help="Language names or codes to add (non-interactive mode)",
125+
)
126+
args = parser.parse_args()
127+
81128
# Get file path
82129
file_path = os.path.join(
83130
os.path.dirname(__file__), "../le_utils/resources/languagelookup.json"
@@ -91,45 +138,30 @@ def main():
91138
else:
92139
print(f"Loaded {len(data)} language entries.")
93140

94-
while True:
95-
query = input(
96-
"\nEnter language name or code to add (or press Enter to finish): "
97-
)
98-
if not query:
99-
break
100-
101-
language_info = get_language_info(query)
102-
if language_info:
103-
code = language_info["code"]
104-
name = language_info["name"]
105-
native_name = language_info["native_name"]
106-
107-
print("\nFound language information:")
108-
print(f"Code: {code}")
109-
print(f"Name: {name}")
110-
print(f"Native name: {native_name}")
111-
112-
if code in data:
113-
print(
114-
f"Warning: Language code '{code}' already exists in the data with the following information:"
115-
)
116-
print(f"Name: {data[code].get('name')}")
117-
print(f"Native name: {data[code].get('native_name')}")
118-
119-
confirm = input("Add this language? (Y/N): ")
120-
if confirm.lower() == "y":
121-
data[code] = {"name": name, "native_name": native_name}
122-
print(f"Added language: {name}")
123-
else:
124-
print("Language not added.")
125-
else:
126-
print("Language not found. Please try a different query.")
127-
128-
# Save the updated data
129-
if input("\nSave changes to the JSON file? (Y/N): ").lower() == "y":
141+
added = 0
142+
if args.languages:
143+
# Non-interactive: add all specified languages and save
144+
for query in args.languages:
145+
if add_language(data, query):
146+
added += 1
147+
else:
148+
while True:
149+
query = input(
150+
"\nEnter language name or code to add (or press Enter to finish): "
151+
)
152+
if not query:
153+
break
154+
if add_language(data, query, confirm=True):
155+
added += 1
156+
157+
if input("\nSave changes to the JSON file? (Y/N): ").lower() != "y":
158+
return
159+
160+
if added:
130161
save_json_file(data, file_path)
162+
print(f"\nAdded {added} language(s).")
131163
else:
132-
print("Changes not saved.")
164+
print("\nNo languages were added.")
133165

134166

135167
if __name__ == "__main__":

0 commit comments

Comments
 (0)