Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf7589cc

Browse files
committed
Add useful scripts
1 parent5349bc7 commitf7589cc

File tree

5 files changed

+168
-17
lines changed

5 files changed

+168
-17
lines changed

‎extending/embedding.po

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ msgid ""
261261
"a Python script, such as:"
262262
msgstr""
263263
"Bu kod, ``argv[1]`` kullanarak bir Python betiği yükler ve ``argv[2]`` "
264-
"içinde adlandırılan fonksiyonu çağırır. Tamsayı argümanları,\"argv\" "
264+
"içinde adlandırılan fonksiyonu çağırır. Tamsayı argümanları,``argv`` "
265265
"dizisinin diğer değerleridir. Bu programı :ref:`derler, <compiling>` ve "
266266
"bağlarsanız (bitmiş yürütülebilir dosyayı :program:`call` olarak "
267267
"adlandıralım) ve onu aşağıdaki gibi bir Python betiğini çalıştırmak için "

‎install/index.po

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -324,9 +324,9 @@ msgid ""
324324
"`lib` (or :file:`lib.{plat}`) directory contains all Python modules (pure "
325325
"Python and extensions) that will be installed."
326326
msgstr""
327-
"Burada<plat> mevcut işletim sistemi/donanım platformunun ve Python "
327+
"Burada``<plat>`` mevcut işletim sistemi/donanım platformunun ve Python "
328328
"sürümünün kısa bir açıklamasına genişler. Yalnızca bir :file:`lib` dizini "
329-
"içeren ilk biçim,saf modül dağıtımları için kullanılır--yani, yalnızca "
329+
"içeren ilk biçim,\"saf modül dağıtımları\" için kullanılır---yani, yalnızca "
330330
"salt Python modüllerini içeren modül dağıtımları. Bir modül dağıtımı "
331331
"herhangi bir uzantı içeriyorsa (C/C++ ile yazılmış modüller), o zaman iki "
332332
"``<plat>`` dizinli ikinci form kullanılır. Bu durumda, :file:`temp.{plat}` "
@@ -378,7 +378,7 @@ msgstr ""
378378
"Python modülleri için standart konuma yüklenir . Bu konum, platforma ve "
379379
"Python'un kendisini nasıl oluşturduğunuza/kurduğunuza göre değişir. Unix'te "
380380
"(ve aynı zamanda Unix tabanlı olan macOS'ta), yüklenen modül dağıtımının saf "
381-
"Python olup olmadığına veya uzantılar (non pürse) içerip içermediğine de "
381+
"Python olup olmadığına veya uzantılar (\"non pürse\") içerip içermediğine de "
382382
"bağlıdır:"
383383

384384
#:install/index.rst:216
@@ -697,8 +697,8 @@ msgid ""
697697
"`/usr/local/`. This scheme can be used by anyone, regardless of the "
698698
"operating system they are installing for."
699699
msgstr""
700-
"Ev planının arkasındaki fikir, Python modüllerinin kişisel bir zulasını "
701-
"oluşturmanız ve sürdürmenizdir. Bu şemanın adı, Unix'teki bir“ev” dizini "
700+
"\"Ev planı\"nın arkasındaki fikir, Python modüllerinin kişisel bir zulasını "
701+
"oluşturmanız ve sürdürmenizdir. Bu şemanın adı, Unix'teki bir\"ev\" dizini "
702702
"fikrinden türetilmiştir, çünkü bir Unix kullanıcısının ev dizininin :file:`/"
703703
"usr/` veya :file:`/usr'ye benzer bir düzene sahip olması alışılmadık bir "
704704
"durum değildir. /yerel/`. Bu şema, yükledikleri işletim sistemi ne olursa "
@@ -775,7 +775,7 @@ msgid ""
775775
"and home schemes come before. However, there are at least two known cases "
776776
"where the prefix scheme will be useful."
777777
msgstr""
778-
"Prefix şeması, oluşturma/kurulum işlemini gerçekleştirmek için (yani "
778+
"\"Prefix şeması\", oluşturma/kurulum işlemini gerçekleştirmek için (yani "
779779
"kurulum komut dosyasını çalıştırmak için) bir Python kurulumu kullanmak "
780780
"istediğinizde, ancak modülleri farklı bir Python kurulumunun (veya farklı "
781781
"bir Python kurulumuna benziyor). Bu kulağa biraz olağandışı geliyorsa, bu--"
@@ -793,7 +793,7 @@ msgid ""
793793
msgstr""
794794
"İlk olarak, birçok Linux dağıtımının Python'u daha geleneksel :file:`/usr/"
795795
"local` yerine :file:`/usr` içine koyduğunu düşünün. Bu tamamen uygundur, "
796-
"çünkü bu durumlarda Python yerel bir eklentiden ziyadesistemin bir "
796+
"çünkü bu durumlarda Python yerel bir eklentiden ziyade\"sistemin\" bir "
797797
"parçasıdır. Ancak, Python modüllerini kaynaktan kuruyorsanız, muhtemelen "
798798
"bunların :file:`/usr/lib/python2 yerine :file:`/usr/local/lib/python2.{X}` "
799799
"içine girmesini istersiniz.{X }`. Bu :: ile yapılabilir."
@@ -1067,7 +1067,7 @@ msgid ""
10671067
"is whatever your Python interpreter was installed with--- :file:`/usr/local/"
10681068
"python` in this case.)"
10691069
msgstr""
1070-
"(Bu,ön ek şemasını kullanarak bir yükleme gerçekleştirir; burada önek, bu "
1070+
"(Bu,\"ön ek şemasını\" kullanarak bir yükleme gerçekleştirir; burada önek, bu "
10711071
"durumda Python yorumlayıcınız-- :file:`/usr/local/python` ile birlikte "
10721072
"yüklenir.)"
10731073

@@ -1353,8 +1353,8 @@ msgstr ""
13531353
"iki veya üç yapılandırma dosyasından birinde saklanabilir. Bu, yapılandırma "
13541354
"dosyalarının varsayılan değerleri geçersiz kılacağı ve komut satırının da "
13551355
"yapılandırma dosyalarını geçersiz kılacağı anlamına gelir. Ayrıca, birden "
1356-
"fazla yapılandırma dosyası geçerliyse,önceki dosyalardan alınan değerler "
1357-
"sonraki dosyalar tarafından geçersiz kılınır."
1356+
"fazla yapılandırma dosyası geçerliyse,\"önceki\" dosyalardan alınan değerler "
1357+
"\"sonraki\" dosyalar tarafından geçersiz kılınır."
13581358

13591359
#:install/index.rst:735
13601360
msgid"Location and names of config files"
@@ -1428,7 +1428,7 @@ msgid ""
14281428
"On all platforms, the\"personal\" file can be temporarily disabled by "
14291429
"passing the ``--no-user-cfg`` option."
14301430
msgstr""
1431-
"Tüm platformlarda, `-no-user-cfg seçeneği geçilerekkişisel dosya geçici "
1431+
"Tüm platformlarda, ``-no-user-cfg`` seçeneği geçilerek\"kişisel\" dosya geçici "
14321432
"olarak devre dışı bırakılabilir."
14331433

14341434
#:install/index.rst:769
@@ -1475,7 +1475,7 @@ msgid ""
14751475
"Windows."
14761476
msgstr""
14771477
"(Ayrıca not (1)'e bakın.) Python 1.6 ve sonraki sürümlerde, Python'un "
1478-
"varsayılankurulum öneki :file:`C:\\\\Python` şeklindedir, bu nedenle "
1478+
"varsayılan\"kurulum öneki\" :file:`C:\\\\Python` şeklindedir, bu nedenle "
14791479
"sistem yapılandırma dosyası normalde :file:`C:\\\\Python\\ şeklindedir. "
14801480
"\\Lib\\\\distutils\\\\distutils.cfg`. Python 1.5.2 altında, varsayılan önek :"
14811481
"file:`C:\\\\Program Files\\\\Python` idi ve Distutils standart kitaplığın "
@@ -1509,7 +1509,7 @@ msgid ""
15091509
msgstr""
15101510
"Distutils yapılandırma dosyalarının tümü aynı Syntax'a sahiptir. "
15111511
"Yapılandırma dosyaları bölümlere ayrılmıştır. Her Distutils komutu için bir "
1512-
"bölüm ve ayrıca her komutu etkileyen genel seçenekler için bir“genel” bölüm "
1512+
"bölüm ve ayrıca her komutu etkileyen genel seçenekler için bir``global`` bölüm "
15131513
"vardır. Her bölüm, satır başına ``seçenek=değer`` olarak belirtilen bir "
15141514
"seçenekten oluşur."
15151515

@@ -1543,7 +1543,7 @@ msgid ""
15431543
"command:`build\\*` commands always forcibly rebuild all files with the "
15441544
"following:"
15451545
msgstr""
1546-
"Varsayılantemel oluşturma dizinini geçersiz kılabilir ve :command:"
1546+
"Varsayılan\"temel oluşturma\" dizinini geçersiz kılabilir ve :command:"
15471547
"`build\\*` komutlarını aşağıdakilerle tüm dosyaları her zaman zorla yeniden "
15481548
"oluşturabilirsiniz:"
15491549

@@ -1587,7 +1587,7 @@ msgid ""
15871587
"See also the\"Reference\" section of the\"Distributing Python Modules\" "
15881588
"manual."
15891589
msgstr""
1590-
"AyrıcaPython Modüllerini Dağıtma kılavuzununReferans bölümüne bakın."
1590+
"Ayrıca\"Python Modüllerini Dağıtma\" kılavuzunun\"Referans\" bölümüne bakın."
15911591

15921592
#:install/index.rst:861
15931593
msgid"Building Extensions: Tips and Tricks"
@@ -1941,7 +1941,7 @@ msgid ""
19411941
"directory."
19421942
msgstr""
19431943
"Yüklü bir :file:`python25.dll` dosyasının konumu, yükleme seçeneklerine ve "
1944-
"Windows sürümüne ve diline bağlı olacaktır.Sadece benim için kurulumda, "
1944+
"Windows sürümüne ve diline bağlı olacaktır.\"Sadece benim için\" kurulumda, "
19451945
"kurulum dizininin kökünde görünecektir. Paylaşılan bir kurulumda, sistem "
19461946
"dizininde bulunur."
19471947

‎requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ poutils
22
tqdm
33
sphinx-lint
44
pre-commit
5+
polib

‎scripts/format_check.py

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
importcollections
2+
importos
3+
importargparse
4+
importcontextlib
5+
importglob
6+
importpolib
7+
frompprintimportpprint
8+
9+
10+
parser=argparse.ArgumentParser()
11+
parser.add_argument(
12+
"subject",nargs="?",default=None,help="Subject to check (file or directory)"
13+
)
14+
parser.add_argument("-t","--threshold",type=int,default=85)
15+
args=parser.parse_args()
16+
17+
subject=os.path.abspath(
18+
os.path.join(
19+
os.path.dirname(__file__),
20+
"..",
21+
)
22+
)
23+
24+
is_file=False
25+
26+
withcontextlib.suppress(TypeError):
27+
ifos.path.isdir(args.subject):
28+
is_file=False
29+
subject=os.path.abspath(args.subject)
30+
31+
elifos.path.isfile(args.subject):
32+
is_file=True
33+
subject= (
34+
args.subject
35+
ifos.path.isabs(args.subject)
36+
elseos.path.join(subject,args.subject)
37+
)
38+
39+
else:
40+
print("Invalid subject, showing all files.")
41+
42+
DELIMITERS= ("``","*")
43+
44+
45+
defhas_delimiters(x):
46+
returnany(dinxfordinDELIMITERS)
47+
48+
49+
defmain(subject):
50+
subject= [subject]ifis_fileelseglob.glob(f"{subject}**/**/*.po")
51+
files_with_differences=collections.defaultdict(list)
52+
53+
for_,pofilenameinenumerate(subject):
54+
po=polib.pofile(pofilename)
55+
ifpo.percent_translated()<min(args.threshold,100):
56+
continue
57+
58+
forentryinpo:
59+
wordsid=wordsstr= []
60+
61+
ifhas_delimiters(entry.msgid):
62+
wordsid= [wordforwordinentry.msgid.split()ifhas_delimiters(word)]
63+
64+
ifhas_delimiters(entry.msgstr):
65+
wordsstr= [
66+
wordforwordinentry.msgstr.split()ifhas_delimiters(word)
67+
]
68+
69+
iflen(wordsid)!=len(wordsstr):
70+
key=pofilename
71+
files_with_differences[key].append(
72+
{
73+
"occurrences":entry.occurrences,
74+
"words": {
75+
"original":wordsid,
76+
"translated":wordsstr,
77+
},
78+
}
79+
)
80+
81+
returnfiles_with_differences
82+
83+
84+
if__name__=="__main__":
85+
pprint(main(subject))

‎scripts/progress.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
importos
2+
importargparse
3+
importcontextlib
4+
importglob
5+
importpolib
6+
7+
8+
parser=argparse.ArgumentParser()
9+
parser.add_argument(
10+
"subject",nargs="?",default=None,help="Subject to check (file or directory)"
11+
)
12+
parser.add_argument("-c","--completed",action="store_true")
13+
parser.add_argument("-t","--threshold",type=int,default=90)
14+
args=parser.parse_args()
15+
16+
PO_DIR=os.path.abspath(
17+
os.path.join(
18+
os.path.dirname(__file__),
19+
"..",
20+
)
21+
)
22+
23+
is_file=False
24+
25+
withcontextlib.suppress(TypeError):
26+
ifos.path.isdir(args.subject):
27+
PO_DIR=os.path.abspath(args.subject)
28+
29+
elifos.path.isfile(args.subject):
30+
is_file=True
31+
args.subject= (
32+
args.subject
33+
ifos.path.isabs(args.subject)
34+
elseos.path.join(PO_DIR,args.subject)
35+
)
36+
37+
else:
38+
print("Invalid subject, showing all files.")
39+
40+
41+
defmain():
42+
files= []
43+
ifis_file:
44+
po=polib.pofile(args.subject)
45+
return [[args.subject.replace(PO_DIR,""),po.percent_translated()]]
46+
47+
forpofilenameinglob.glob(f"{PO_DIR}**/*.po"):
48+
po=polib.pofile(pofilename)
49+
files.append((pofilename.replace(PO_DIR,""),po.percent_translated()))
50+
forpofilenameinglob.glob(f"{PO_DIR}**/**/*.po"):
51+
po=polib.pofile(pofilename)
52+
files.append((pofilename.replace(PO_DIR,""),po.percent_translated()))
53+
returnfiles
54+
55+
56+
if__name__=="__main__":
57+
results= [f"{file[0]}:{file[1]}%"forfileinmain()]
58+
59+
forresultinresults:
60+
ifargs.completedandint(result.split(" ")[1].replace("%",""))>min(
61+
args.threshold,100
62+
):
63+
print(result)
64+
elifnotargs.completed:
65+
print(result)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp