Merge pull request #25662 from barredterra/languages

feat: only enable supported languages
This commit is contained in:
Ankush Menat 2024-03-27 10:51:48 +05:30 committed by GitHub
commit 6a327fa79c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 94 additions and 368 deletions

View file

@ -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")

View file

@ -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
View 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,OZbek,0
vi,Tiếng Việt,0
zh,中文,0
zh-TW,繁體中文,0
1 language_code language_name enabled
2 af Afrikaans 0
3 am አማርኛ 0
4 ar العربية 1
5 bg Български 0
6 bn বাংলা 0
7 bo བོད་སྐད་ 0
8 bs Bosanski 0
9 ca Català 0
10 cs Čeština 0
11 da Dansk 0
12 de Deutsch 1
13 el Ελληνικά 0
14 en English 0
15 en-GB English (United Kingdom) 0
16 en-US English (United States) 0
17 es Español 1
18 es-AR Español (Argentina) 0
19 es-BO Español (Bolivia) 0
20 es-CL Español (Chile) 0
21 es-CO Español (Colombia) 0
22 es-DO Español (República Dominicana) 0
23 es-EC Español (Ecuador) 0
24 es-GT Español (Guatemala) 0
25 es-MX Español (México) 0
26 es-NI Español (Nicaragua) 0
27 es-PE Español (Perú) 0
28 et Eesti 0
29 fa فارسی 1
30 fi Suomi 0
31 fil Filipino 0
32 fr Français 1
33 gu ગુજરાતી 0
34 he עברית 0
35 hi हिन्दी 0
36 hr Hrvatski 0
37 hu Magyar 0
38 id Indonesia 0
39 is Íslenska 0
40 it Italiano 0
41 ja 日本語 0
42 km ខ្មែរ 0
43 kn ಕನ್ನಡ 0
44 ko 한국어 0
45 ku Kurdî 0
46 lo ລາວ 0
47 lt Lietuvių 0
48 lv Latviešu 0
49 mk Македонски 0
50 ml മലയാളം 0
51 mn Монгол 0
52 mr मराठी 0
53 ms Melayu 0
54 my မြန်မာ 0
55 nl Nederlands 0
56 no Norsk 0
57 pl Polski 0
58 ps پښتو 0
59 pt Português 0
60 ro Română 0
61 ru Русский 0
62 rw Kinyarwanda 0
63 si සිංහල 0
64 sk Slovenčina 0
65 sl Slovenščina 0
66 sq Shqip 0
67 sr Српски 0
68 sr-BA Srpski 0
69 sv Svenska 0
70 sw Kiswahili 0
71 ta தமிழ் 0
72 te తెలుగు 0
73 th ไทย 0
74 tr Türkçe 0
75 uk Українська 0
76 ur اردو 0
77 uz O‘Zbek 0
78 vi Tiếng Việt 0
79 zh 中文 0
80 zh-TW 繁體中文 0

View file

@ -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"
}
]

View file

@ -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."
)

View file

@ -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")

View file

@ -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"))

View file

@ -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,
)