Merge pull request #25662 from barredterra/languages
feat: only enable supported languages
This commit is contained in:
commit
6a327fa79c
8 changed files with 94 additions and 368 deletions
|
|
@ -39,7 +39,7 @@ def new_language(context, lang_code, app):
|
|||
frappe.translate.write_translations_file(app, lang_code)
|
||||
|
||||
print(f"File created at ./apps/{app}/{app}/translations/{lang_code}.csv")
|
||||
print("You will need to add the language in frappe/geo/languages.json, if you haven't done it already.")
|
||||
print("You will need to add the language in frappe/geo/languages.csv, if you haven't done it already.")
|
||||
|
||||
|
||||
@click.command("get-untranslated")
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
# Copyright (c) 2015, Frappe Technologies and contributors
|
||||
# License: MIT. See LICENSE
|
||||
|
||||
import json
|
||||
import re
|
||||
|
||||
import frappe
|
||||
|
|
@ -47,38 +46,14 @@ def validate_with_regex(name, label):
|
|||
)
|
||||
|
||||
|
||||
def export_languages_json():
|
||||
"""Export list of all languages"""
|
||||
languages = frappe.get_all("Language", fields=["name", "language_name"])
|
||||
languages = [{"name": d.language_name, "code": d.name} for d in languages]
|
||||
|
||||
languages.sort(key=lambda a: a["code"])
|
||||
|
||||
with open(frappe.get_app_path("frappe", "geo", "languages.json"), "w") as f:
|
||||
f.write(frappe.as_json(languages))
|
||||
|
||||
|
||||
def sync_languages():
|
||||
"""Sync frappe/geo/languages.json with Language"""
|
||||
with open(frappe.get_app_path("frappe", "geo", "languages.json")) as f:
|
||||
data = json.loads(f.read())
|
||||
"""Create Language records from frappe/geo/languages.csv"""
|
||||
from csv import DictReader
|
||||
|
||||
for l in data:
|
||||
if not frappe.db.exists("Language", l["code"]):
|
||||
frappe.get_doc(
|
||||
{
|
||||
"doctype": "Language",
|
||||
"language_code": l["code"],
|
||||
"language_name": l["name"],
|
||||
"enabled": 1,
|
||||
}
|
||||
).insert()
|
||||
|
||||
|
||||
def update_language_names():
|
||||
"""Update frappe/geo/languages.json names (for use via patch)"""
|
||||
with open(frappe.get_app_path("frappe", "geo", "languages.json")) as f:
|
||||
data = json.loads(f.read())
|
||||
|
||||
for l in data:
|
||||
frappe.db.set_value("Language", l["code"], "language_name", l["name"])
|
||||
with open(frappe.get_app_path("frappe", "geo", "languages.csv")) as f:
|
||||
reader = DictReader(f)
|
||||
for row in reader:
|
||||
if not frappe.db.exists("Language", row["language_code"]):
|
||||
doc = frappe.new_doc("Language")
|
||||
doc.update(row)
|
||||
doc.insert()
|
||||
|
|
|
|||
80
frappe/geo/languages.csv
Normal file
80
frappe/geo/languages.csv
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
language_code,language_name,enabled
|
||||
af,Afrikaans,0
|
||||
am,አማርኛ,0
|
||||
ar,العربية,1
|
||||
bg,Български,0
|
||||
bn,বাংলা,0
|
||||
bo,བོད་སྐད་,0
|
||||
bs,Bosanski,0
|
||||
ca,Català,0
|
||||
cs,Čeština,0
|
||||
da,Dansk,0
|
||||
de,Deutsch,1
|
||||
el,Ελληνικά,0
|
||||
en,English,0
|
||||
en-GB,English (United Kingdom),0
|
||||
en-US,English (United States),0
|
||||
es,Español,1
|
||||
es-AR,Español (Argentina),0
|
||||
es-BO,Español (Bolivia),0
|
||||
es-CL,Español (Chile),0
|
||||
es-CO,Español (Colombia),0
|
||||
es-DO,Español (República Dominicana),0
|
||||
es-EC,Español (Ecuador),0
|
||||
es-GT,Español (Guatemala),0
|
||||
es-MX,Español (México),0
|
||||
es-NI,Español (Nicaragua),0
|
||||
es-PE,Español (Perú),0
|
||||
et,Eesti,0
|
||||
fa,فارسی,1
|
||||
fi,Suomi,0
|
||||
fil,Filipino,0
|
||||
fr,Français,1
|
||||
gu,ગુજરાતી,0
|
||||
he,עברית,0
|
||||
hi,हिन्दी,0
|
||||
hr,Hrvatski,0
|
||||
hu,Magyar,0
|
||||
id,Indonesia,0
|
||||
is,Íslenska,0
|
||||
it,Italiano,0
|
||||
ja,日本語,0
|
||||
km,ខ្មែរ,0
|
||||
kn,ಕನ್ನಡ,0
|
||||
ko,한국어,0
|
||||
ku,Kurdî,0
|
||||
lo,ລາວ,0
|
||||
lt,Lietuvių,0
|
||||
lv,Latviešu,0
|
||||
mk,Македонски,0
|
||||
ml,മലയാളം,0
|
||||
mn,Монгол,0
|
||||
mr,मराठी,0
|
||||
ms,Melayu,0
|
||||
my,မြန်မာ,0
|
||||
nl,Nederlands,0
|
||||
no,Norsk,0
|
||||
pl,Polski,0
|
||||
ps,پښتو,0
|
||||
pt,Português,0
|
||||
ro,Română,0
|
||||
ru,Русский,0
|
||||
rw,Kinyarwanda,0
|
||||
si,සිංහල,0
|
||||
sk,Slovenčina,0
|
||||
sl,Slovenščina,0
|
||||
sq,Shqip,0
|
||||
sr,Српски,0
|
||||
sr-BA,Srpski,0
|
||||
sv,Svenska,0
|
||||
sw,Kiswahili,0
|
||||
ta,தமிழ்,0
|
||||
te,తెలుగు,0
|
||||
th,ไทย,0
|
||||
tr,Türkçe,0
|
||||
uk,Українська,0
|
||||
ur,اردو,0
|
||||
uz,O‘Zbek,0
|
||||
vi,Tiếng Việt,0
|
||||
zh,中文,0
|
||||
zh-TW,繁體中文,0
|
||||
|
|
|
@ -1,330 +0,0 @@
|
|||
[
|
||||
{
|
||||
"code": "af",
|
||||
"name": "Afrikaans"
|
||||
},
|
||||
{
|
||||
"code": "am",
|
||||
"name": "\u12a0\u121b\u122d\u129b"
|
||||
},
|
||||
{
|
||||
"code": "ar",
|
||||
"name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629"
|
||||
},
|
||||
{
|
||||
"code": "bg",
|
||||
"name": "B\u01celgarski"
|
||||
},
|
||||
{
|
||||
"code": "bn",
|
||||
"name": "\u09ac\u09be\u0999\u09be\u09b2\u09bf"
|
||||
},
|
||||
{
|
||||
"code": "bo",
|
||||
"name": "\u0f63\u0fb7\u0f0b\u0f66\u0f60\u0f72\u0f0b\u0f66\u0f90\u0f51\u0f0b"
|
||||
},
|
||||
{
|
||||
"code": "bs",
|
||||
"name": "Bosanski"
|
||||
},
|
||||
{
|
||||
"code": "ca",
|
||||
"name": "Catal\u00e0"
|
||||
},
|
||||
{
|
||||
"code": "cs",
|
||||
"name": "\u010desky"
|
||||
},
|
||||
{
|
||||
"code": "da",
|
||||
"name": "Dansk"
|
||||
},
|
||||
{
|
||||
"code": "da-DK",
|
||||
"name": "Dansk (Danmark)"
|
||||
},
|
||||
{
|
||||
"code": "de",
|
||||
"name": "Deutsch"
|
||||
},
|
||||
{
|
||||
"code": "el",
|
||||
"name": "\u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"
|
||||
},
|
||||
{
|
||||
"code": "en",
|
||||
"name": "English"
|
||||
},
|
||||
{
|
||||
"code": "en-GB",
|
||||
"name": "English (United Kingdom)"
|
||||
},
|
||||
{
|
||||
"code": "en-US",
|
||||
"name": "English (United States)"
|
||||
},
|
||||
{
|
||||
"code": "es",
|
||||
"name": "Espa\u00f1ol"
|
||||
},
|
||||
{
|
||||
"code": "es-AR",
|
||||
"name": "Espa\u00f1ol (Argentina)"
|
||||
},
|
||||
{
|
||||
"code": "es-BO",
|
||||
"name": "Espa\u00f1ol (Bolivia)"
|
||||
},
|
||||
{
|
||||
"code": "es-CL",
|
||||
"name": "Espa\u00f1ol (Chile)"
|
||||
},
|
||||
{
|
||||
"code": "es-CO",
|
||||
"name": "Espa\u00f1ol (Colombia)"
|
||||
},
|
||||
{
|
||||
"code": "es-DO",
|
||||
"name": "Espa\u00f1ol (Rep\u00fablica Dominicana)"
|
||||
},
|
||||
{
|
||||
"code": "es-EC",
|
||||
"name": "Espa\u00f1ol (Ecuador)"
|
||||
},
|
||||
{
|
||||
"code": "es-GT",
|
||||
"name": "Espa\u00f1ol (Guatemala)"
|
||||
},
|
||||
{
|
||||
"code": "es-MX",
|
||||
"name": "Espa\u00f1ol (M\u00e9xico)"
|
||||
},
|
||||
{
|
||||
"code": "es-NI",
|
||||
"name": "Espa\u00f1ol (Nicaragua)"
|
||||
},
|
||||
{
|
||||
"code": "es-PE",
|
||||
"name": "Espa\u00f1ol (Per\u00fa)"
|
||||
},
|
||||
{
|
||||
"code": "et",
|
||||
"name": "Eesti"
|
||||
},
|
||||
{
|
||||
"code": "fa",
|
||||
"name": "\u067e\u0627\u0631\u0633\u06cc"
|
||||
},
|
||||
{
|
||||
"code": "fi",
|
||||
"name": "Suomi"
|
||||
},
|
||||
{
|
||||
"code": "fil",
|
||||
"name": "Filipino"
|
||||
},
|
||||
{
|
||||
"code": "fr",
|
||||
"name": "Fran\u00e7ais"
|
||||
},
|
||||
{
|
||||
"code": "fr-CA",
|
||||
"name": "Fran\u00e7ais Canadien"
|
||||
},
|
||||
{
|
||||
"code": "gu",
|
||||
"name": "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0"
|
||||
},
|
||||
{
|
||||
"code": "he",
|
||||
"name": "\u05e2\u05d1\u05e8\u05d9\u05ea"
|
||||
},
|
||||
{
|
||||
"code": "hi",
|
||||
"name": "\u0939\u093f\u0902\u0926\u0940"
|
||||
},
|
||||
{
|
||||
"code": "hr",
|
||||
"name": "Hrvatski"
|
||||
},
|
||||
{
|
||||
"code": "hu",
|
||||
"name": "Magyar"
|
||||
},
|
||||
{
|
||||
"code": "id",
|
||||
"name": "Indonesia"
|
||||
},
|
||||
{
|
||||
"code": "is",
|
||||
"name": "\u00edslenska"
|
||||
},
|
||||
{
|
||||
"code": "it",
|
||||
"name": "Italiano"
|
||||
},
|
||||
{
|
||||
"code": "ja",
|
||||
"name": "\u65e5\u672c\u8a9e"
|
||||
},
|
||||
{
|
||||
"code": "km",
|
||||
"name": "\u1797\u17b6\u179f\u17b6\u1781\u17d2\u1798\u17c2\u179a"
|
||||
},
|
||||
{
|
||||
"code": "kn",
|
||||
"name": "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1"
|
||||
},
|
||||
{
|
||||
"code": "ko",
|
||||
"name": "\ud55c\uad6d\uc758"
|
||||
},
|
||||
{
|
||||
"code": "ku",
|
||||
"name": "\u06a9\u0648\u0631\u062f\u06cc"
|
||||
},
|
||||
{
|
||||
"code": "lo",
|
||||
"name": "\u0ea5\u0eb2\u0ea7"
|
||||
},
|
||||
{
|
||||
"code": "lt",
|
||||
"name": "Lietuvi\u0173 kalba"
|
||||
},
|
||||
{
|
||||
"code": "lv",
|
||||
"name": "Latvie\u0161u valoda"
|
||||
},
|
||||
{
|
||||
"code": "mk",
|
||||
"name": "\u043c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438"
|
||||
},
|
||||
{
|
||||
"code": "ml",
|
||||
"name": "\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02"
|
||||
},
|
||||
{
|
||||
"code": "mn",
|
||||
"name": "\u041c\u043e\u043d\u0433\u043e\u043b (Mongolian)"
|
||||
},
|
||||
{
|
||||
"code": "mr",
|
||||
"name": "\u092e\u0930\u093e\u0920\u0940"
|
||||
},
|
||||
{
|
||||
"code": "ms",
|
||||
"name": "Melayu"
|
||||
},
|
||||
{
|
||||
"code": "my",
|
||||
"name": "\u1019\u103c\u1014\u103a\u1019\u102c"
|
||||
},
|
||||
{
|
||||
"code": "nl",
|
||||
"name": "Nederlands"
|
||||
},
|
||||
{
|
||||
"code": "no",
|
||||
"name": "Norsk"
|
||||
},
|
||||
{
|
||||
"code": "pl",
|
||||
"name": "Polski"
|
||||
},
|
||||
{
|
||||
"code": "ps",
|
||||
"name": "\u067e\u069a\u062a\u0648"
|
||||
},
|
||||
{
|
||||
"code": "pt",
|
||||
"name": "Portugu\u00eas"
|
||||
},
|
||||
{
|
||||
"code": "pt-BR",
|
||||
"name": "Portugu\u00eas Brasileiro"
|
||||
},
|
||||
{
|
||||
"code": "ro",
|
||||
"name": "Rom\u00e2n"
|
||||
},
|
||||
{
|
||||
"code": "ru",
|
||||
"name": "\u0440\u0443\u0441\u0441\u043a\u0438\u0439"
|
||||
},
|
||||
{
|
||||
"code": "rw",
|
||||
"name": "Kinyarwanda"
|
||||
},
|
||||
{
|
||||
"code": "si",
|
||||
"name": "\u0dc3\u0dd2\u0d82\u0dc4\u0dbd"
|
||||
},
|
||||
{
|
||||
"code": "sk",
|
||||
"name": "Sloven\u010dina (Slovak)"
|
||||
},
|
||||
{
|
||||
"code": "sl",
|
||||
"name": "Sloven\u0161\u010dina (Slovene)"
|
||||
},
|
||||
{
|
||||
"code": "sq",
|
||||
"name": "Shqiptar"
|
||||
},
|
||||
{
|
||||
"code": "sr",
|
||||
"name": "\u0441\u0440\u043f\u0441\u043a\u0438"
|
||||
},
|
||||
{
|
||||
"code": "sr-BA",
|
||||
"name": "Srpski"
|
||||
},
|
||||
{
|
||||
"code": "sv",
|
||||
"name": "Svenska"
|
||||
},
|
||||
{
|
||||
"code": "sw",
|
||||
"name": "Swahili"
|
||||
},
|
||||
{
|
||||
"code": "ta",
|
||||
"name": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd"
|
||||
},
|
||||
{
|
||||
"code": "te",
|
||||
"name": "\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41"
|
||||
},
|
||||
{
|
||||
"code": "th",
|
||||
"name": "\u0e44\u0e17\u0e22"
|
||||
},
|
||||
{
|
||||
"code": "tr",
|
||||
"name": "Türkçe"
|
||||
},
|
||||
{
|
||||
"code": "uk",
|
||||
"name": "\u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"
|
||||
},
|
||||
{
|
||||
"code": "ur",
|
||||
"name": "\u0627\u0631\u062f\u0648"
|
||||
},
|
||||
{
|
||||
"code": "uz",
|
||||
"name": "\u040e\u0437\u0431\u0435\u043a"
|
||||
},
|
||||
{
|
||||
"code": "vi",
|
||||
"name": "Vi\u1ec7t"
|
||||
},
|
||||
{
|
||||
"code": "zh",
|
||||
"name": "\u7b80\u4f53\u4e2d\u6587"
|
||||
},
|
||||
{
|
||||
"code": "zh-TW",
|
||||
"name": "\u7e41\u9ad4\u4e2d\u6587"
|
||||
}
|
||||
]
|
||||
|
|
@ -167,7 +167,7 @@ def new_po(locale, target_app: str | None = None):
|
|||
|
||||
print(f"PO file created_at {po_path}")
|
||||
print(
|
||||
"You will need to add the language in frappe/geo/languages.json, if you haven't done it already."
|
||||
"You will need to add the language in frappe/geo/languages.csv, if you haven't done it already."
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ execute:frappe.db.sql("delete from tabSessions where user is null")
|
|||
execute:frappe.delete_doc("DocType", "Backup Manager")
|
||||
execute:frappe.permissions.reset_perms("Web Page")
|
||||
execute:frappe.db.sql("delete from `tabWeb Page` where ifnull(template_path, '')!=''")
|
||||
execute:frappe.core.doctype.language.language.update_language_names() # 2017-04-12
|
||||
execute:frappe.db.set_value("Print Settings", "Print Settings", "add_draft_heading", 1)
|
||||
execute:frappe.db.set_default('language', '')
|
||||
execute:frappe.db.sql("update tabCommunication set communication_date = creation where time(communication_date) = 0")
|
||||
|
|
|
|||
|
|
@ -165,6 +165,8 @@ class TestSearch(FrappeTestCase):
|
|||
self.assertListEqual(results, [])
|
||||
|
||||
def test_search_relevance(self):
|
||||
frappe.db.set_value("Language", {"name": ("like", "e%")}, "enabled", 1)
|
||||
|
||||
search = partial(search_link, doctype="Language", filters=None, page_length=10)
|
||||
for row in search(txt="e"):
|
||||
self.assertTrue(row["value"].startswith("e"))
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ dirname = os.path.dirname(__file__)
|
|||
translation_string_file = os.path.abspath(os.path.join(dirname, "translation_test_file.txt"))
|
||||
first_lang, second_lang, third_lang, fourth_lang, fifth_lang = choices(
|
||||
# skip "en*" since it is a default language
|
||||
frappe.get_all("Language", pluck="name", filters=[["name", "not like", "en%"]]),
|
||||
frappe.get_all("Language", pluck="name", filters=[["name", "not like", "en%"], ["enabled", "=", 1]]),
|
||||
k=5,
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue