cocoapods-localzedLoader 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/cocoapods-localzedLoader/DownloadNewLanguage.py +102 -0
- data/lib/cocoapods-localzedLoader/File_util.rb +20 -31
- data/lib/cocoapods-localzedLoader/LanguageDownloader.rb +8 -22
- data/lib/cocoapods-localzedLoader/gem_version.rb +1 -1
- data/lib/cocoapods-localzedLoader/ios_bundle_generate.rb +11 -9
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 38a0241050c77fad4ec3a6bba1bbea3982956ec4ce3d9dc66d9a31f5e1cb2788
|
|
4
|
+
data.tar.gz: a7e89c0bdaef7f80dd9ceb7614de36eecf0576fa6958d03f649e2d06590b3fb1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5b0fd8d9bc1dec67f5c540dee7ecb7e984d3d5f32d7a106d2ebd3efdc295737cab97c16d5bcf7ec45a84b58c9e686c896b1d5135ee633584d555645804bcd319
|
|
7
|
+
data.tar.gz: 8e840f0bb13fb5eee5bb1e1f5ee6646a9f28346c0a2dc08fa39d0508a8d974abf769ce5bae90fac04f96a759c289e37899775e8df5b5af8ba330758af89d4078
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import shutil
|
|
3
|
+
|
|
4
|
+
import requests
|
|
5
|
+
# import zipfile
|
|
6
|
+
|
|
7
|
+
# from __future__ import print_function
|
|
8
|
+
|
|
9
|
+
from volcengine.iam.IamService import IamService
|
|
10
|
+
|
|
11
|
+
from volcengine.ApiInfo import ApiInfo
|
|
12
|
+
from volcengine.Credentials import Credentials
|
|
13
|
+
from volcengine.base.Service import Service
|
|
14
|
+
from volcengine.ServiceInfo import ServiceInfo
|
|
15
|
+
|
|
16
|
+
from volcengine.auth.SignerV4 import SignerV4
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# 浏览器登录后抓取的 cookie
|
|
20
|
+
myheader = '''
|
|
21
|
+
accept: application/json, text/plain, */*
|
|
22
|
+
accept-encoding: gzip, deflate, br
|
|
23
|
+
accept-language: zh
|
|
24
|
+
content-length: 155
|
|
25
|
+
content-type: application/json
|
|
26
|
+
cookie:experimentation_subject_id=IjZmOTJkNTAwLWRhNGQtNDllOS04NWJmLTViMDA3YWQyNzNmNSI%3D--ea0d856d9ab513dbab485429b3eb34d28baf575c; _ga_WF6G97Z3ZH=GS1.1.1655109583.7.0.1655109635.0; Hm_lvt_2df419cadb3951597d5f6df3a9e563d1=1677809958; __gads=ID=7b3f01c117b67f05-227ecfaf8fe20014:T=1688561915:RT=1695382086:S=ALNI_MZWfx6X7kl8bcHGz9c7kVOi5EJ97g; __gpi=UID=00000c96aea158eb:T=1688561915:RT=1695382086:S=ALNI_MaQoB1d1fZVX_-TNOZ9-FBy0AmJeQ; _ga_3EMB6JL0XV=GS1.1.1695897491.159.0.1695897491.60.0.0; _ga=GA1.1.726824286.1621481586; _ga_1MSMD2CRQ5=GS1.1.1695897492.25.0.1695897492.0.0.0; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%222698037175171e6d.824697002942386177%22%2C%22first_id%22%3A%2217954f52ff723e-046b05611aed99-113a6054-1296000-17954f52ff9e4c%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E5%BC%95%E8%8D%90%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fuc.aqara.cn%2F%22%7D%2C%22%24device_id%22%3A%2217954f52ff723e-046b05611aed99-113a6054-1296000-17954f52ff9e4c%22%7D; Token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI4MzcyOTA5NzQ3NmUwMmYyLjY0MjA2ODExMTgyMzk1MzkyMSIsImlzcyI6Imh0dHBzOi8vYWlvdC1ycGMuYXFhcmEuY24iLCJhY2NvdW50Ijoid2FuaHVhLnlhbkBhcWFyYS5jb20iLCJpYXRHbXQ4IjoxNjk2NjQ2MDYyLCJqdGkiOiI4ZjJlNDJiNTk1MTE0ODFmOTBiMDI3NWExZmE2OWNkZDlkMjVhZDY5NGUzMDQ4MGZhNDM3ZDM2NGI5YTFjZTIzIn0.FqpQfHNi--7FxAu4ytiGpQBwUdMVGDgdKaqZI4hLAus; Userid=83729097476e02f2.642068111823953921; currentSid=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI4MzcyOTA5NzQ3NmUwMmYyLjY0MjA2ODExMTgyMzk1MzkyMSIsImlzcyI6Imh0dHBzOi8vYWlvdC1ycGMuYXFhcmEuY24iLCJpYXRHbXQ4IjoxNjk2NjQ2MDYyLCJqdGkiOiJhNDZlZjExOGE3YTk0ZTIwYTBkNmE5YTE5YjRiM2UxYjM0ZmMxNjYzZTUzYjQ1NzI4Zjk5YzhiYzRhZGUzMGE4In0.W_fWYx-B0kvj2uAUz0pw8vOhw5VKJ4SM5oCwpY_YZkk; currentAccount=wanhua.yan@aqara.com; userInfo=%7B%22accountCategory%22%3A%220%22%2C%22company%22%3A%7B%22companyId%22%3A1%2C%22companyName%22%3A%22%E7%BB%BF%E7%B1%B3%E8%81%94%E5%88%9B%22%7D%2C%22user%22%3A%7B%22avatarUrl%22%3A%22%22%2C%22companyId%22%3A1%2C%22email%22%3A%22wanhua.yan%40aqara.com%22%2C%22nickName%22%3A%22%22%2C%22userType%22%3A0%7D%7D; sidebarStatus=0
|
|
27
|
+
lang: zh
|
|
28
|
+
nonce: z7isblgw7hzfrlebmu7fzoukr20vpvs8
|
|
29
|
+
operate-platform: 40
|
|
30
|
+
origin: https://intl-lang.aqara.com
|
|
31
|
+
projectid: 5
|
|
32
|
+
referer: https://intl-lang.aqara.com/
|
|
33
|
+
sec-ch-ua: "Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"
|
|
34
|
+
sec-ch-ua-mobile: ?1
|
|
35
|
+
sec-ch-ua-platform: "Android"
|
|
36
|
+
sec-fetch-dest: empty
|
|
37
|
+
sec-fetch-mode: cors
|
|
38
|
+
sec-fetch-site: same-origin
|
|
39
|
+
time: 1690280776221
|
|
40
|
+
timestamp: 1690280776221
|
|
41
|
+
user-agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Mobile Safari/537.36
|
|
42
|
+
'''
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def MakeHeader(headerText):
|
|
47
|
+
s = headerText.strip().split('\n')
|
|
48
|
+
s = {x.split(':', 1)[0].strip() :x.split(':', 1)[1].strip() for x in s}
|
|
49
|
+
return s
|
|
50
|
+
|
|
51
|
+
def DownLatestLocalizableSource():
|
|
52
|
+
iam_service = IamService()
|
|
53
|
+
ak = 'AKLTZTFjNzFjYTczMzJjNGQyMjg0NTRkZjQ2ZTA4MTE1Mjc'
|
|
54
|
+
sk = 'TkdRMU9HSTJZemt6Tmpkak5ERXhaVGt5WXpVNU5qSmxPVFkzWWpBM1pqRQ=='
|
|
55
|
+
iam_service.set_ak(ak)
|
|
56
|
+
iam_service.set_sk(sk)
|
|
57
|
+
|
|
58
|
+
api_info = ApiInfo("GET", "/", {"serviceName": "i18n_openapi", "Action": "ProjectNamespaceTextDownload",
|
|
59
|
+
"Version": "2021-05-21"}, {}, {})
|
|
60
|
+
service_info = ServiceInfo("iam.volcengineapi.com", {'Accept': 'application/json'},
|
|
61
|
+
Credentials(ak,sk, 'i18n_openapi', 'cn-north-1'),20,20)
|
|
62
|
+
iam_service.service_info = service_info
|
|
63
|
+
|
|
64
|
+
params = {'async': 0, 'projectId': 5788, 'namespaceId': 42835, 'format': 'xlsx'}
|
|
65
|
+
|
|
66
|
+
r = iam_service.prepare_request(api_info, params, 0)
|
|
67
|
+
SignerV4.sign(r, service_info.credentials)
|
|
68
|
+
url = r.build(0)
|
|
69
|
+
# print(r.headers)
|
|
70
|
+
# res = iam_service.projectNamespaceTextDownload(params)
|
|
71
|
+
|
|
72
|
+
resp = iam_service.session.get(url, headers=r.headers,
|
|
73
|
+
timeout=(service_info.connection_timeout,service_info.socket_timeout))
|
|
74
|
+
if resp.status_code == 200:
|
|
75
|
+
print('成功l----')
|
|
76
|
+
with open("download" + ".xlsx", "wb") as code:
|
|
77
|
+
# 将 response 保存成本地文件
|
|
78
|
+
code.write(resp.content)
|
|
79
|
+
code.close()
|
|
80
|
+
else:
|
|
81
|
+
raise Exception(resp.text)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
# def Unzip():
|
|
86
|
+
# f = zipfile.ZipFile("./localizable.zip", 'r') # 压缩文件位置
|
|
87
|
+
# for file in f.namelist():
|
|
88
|
+
# f.extract(file, "../") # 解压位置
|
|
89
|
+
# f.close()
|
|
90
|
+
# os.remove('./localizable.zip')
|
|
91
|
+
|
|
92
|
+
def UpdateSource_language():
|
|
93
|
+
DownLatestLocalizableSource()
|
|
94
|
+
return './download.xlsx'
|
|
95
|
+
|
|
96
|
+
# Unzip()
|
|
97
|
+
# os.rename('./download.xlsx', '../hit_all_str.xlsx')
|
|
98
|
+
# shutil.copy('./download.xlsx', '../source_language/hit_all_str.xlsx')
|
|
99
|
+
# os.remove('./download.xlsx')
|
|
100
|
+
|
|
101
|
+
if __name__ == '__main__':
|
|
102
|
+
UpdateSource_language()
|
|
@@ -20,21 +20,21 @@ class File_util
|
|
|
20
20
|
row1 = worksheet[0]
|
|
21
21
|
@key_hash = getkeyHash(row1)
|
|
22
22
|
lang_hash = {}
|
|
23
|
-
worksheet.each_with_index do |row|
|
|
23
|
+
worksheet.each_with_index do |row,rowIndex|
|
|
24
|
+
next unless rowIndex>0
|
|
24
25
|
ele = StringElement.new
|
|
25
26
|
self_key = ''
|
|
26
27
|
# 设置StringElement的值
|
|
27
28
|
row.cells.each_with_index do |cell, i|
|
|
28
|
-
|
|
29
|
-
next unless cell
|
|
29
|
+
next unless cell.value
|
|
30
30
|
case i
|
|
31
31
|
when 0
|
|
32
|
-
|
|
33
|
-
when 1
|
|
34
32
|
self_key = cell.value
|
|
35
33
|
else
|
|
36
34
|
key = @key_hash[i]
|
|
37
|
-
|
|
35
|
+
if key
|
|
36
|
+
ele.langHash[key] = (cell.value || '')
|
|
37
|
+
end
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
|
|
@@ -48,38 +48,27 @@ class File_util
|
|
|
48
48
|
# Command+Option+L 对齐快捷键
|
|
49
49
|
def getkeyHash(row1,ios:true)
|
|
50
50
|
keys_hash = {}
|
|
51
|
+
key = ''
|
|
51
52
|
row1.cells.each_with_index do |cell, i|
|
|
52
|
-
next unless cell
|
|
53
|
-
if
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
when /zh/
|
|
62
|
-
key ="zh-Hans"
|
|
63
|
-
when /fr.*/
|
|
64
|
-
key ="fr"
|
|
65
|
-
when /it.*/
|
|
66
|
-
key="it"
|
|
67
|
-
when /ger.*/
|
|
68
|
-
key ="de"
|
|
69
|
-
else
|
|
70
|
-
key
|
|
71
|
-
end
|
|
72
|
-
keys_hash[i] = key
|
|
73
|
-
elsif i == 1
|
|
74
|
-
keys_hash[i] = cell.value
|
|
53
|
+
next unless cell.value && i > 3
|
|
54
|
+
if cell.value === "zh-CN"
|
|
55
|
+
key = 'zh-Hans'
|
|
56
|
+
elsif cell.value == "zh-TW"
|
|
57
|
+
key = 'zh-Hant-TW'
|
|
58
|
+
elsif cell.value == "zh-HK"
|
|
59
|
+
key = 'zh-HK'
|
|
60
|
+
else
|
|
61
|
+
key = cell.value.split("-")[0]
|
|
75
62
|
end
|
|
63
|
+
# result = cell.value.scan(/.*?\[(.*)\]/)
|
|
64
|
+
keys_hash[i] = key
|
|
76
65
|
end
|
|
77
66
|
keys_hash
|
|
78
67
|
end
|
|
79
68
|
|
|
80
69
|
def getLangList
|
|
81
70
|
list = @key_hash.values
|
|
82
|
-
list.delete_if{|item| item.downcase === "
|
|
71
|
+
list.delete_if{|item| item.downcase === "keys"||item.downcase === "source" || item.downcase === "length limit" || item.downcase === "context"}
|
|
83
72
|
list
|
|
84
73
|
end
|
|
85
74
|
end
|
|
@@ -90,5 +79,5 @@ end
|
|
|
90
79
|
# puts value
|
|
91
80
|
# end
|
|
92
81
|
|
|
93
|
-
# p "
|
|
82
|
+
# p "key-sname".split("-")[0]
|
|
94
83
|
|
|
@@ -6,27 +6,14 @@ require 'colored2'
|
|
|
6
6
|
|
|
7
7
|
class LanguageDownloader
|
|
8
8
|
|
|
9
|
-
HeaderString = %Q{
|
|
10
|
-
Accept-Encoding:gzip, deflate
|
|
11
|
-
Accept
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Operate-Platform:40
|
|
18
|
-
Origin:https://intl-lang.aqara.com
|
|
19
|
-
Projectid:5
|
|
20
|
-
Referer:https://intl-lang.aqara.com/
|
|
21
|
-
Sec-Ch-Ua:"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"
|
|
22
|
-
Sec-Ch-Ua-Mobile:?0
|
|
23
|
-
Sec-Ch-Ua-Platform:"macOS"
|
|
24
|
-
Sec-Fetch-Dest:empty
|
|
25
|
-
Sec-Fetch-Mode:cors
|
|
26
|
-
Sec-Fetch-Site:same-origin
|
|
27
|
-
Time:1693571557934
|
|
28
|
-
Timestamp:1693571557934
|
|
29
|
-
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
|
|
9
|
+
HeaderString = %Q{User-Agent: volc-sdk-python/v1.0.109
|
|
10
|
+
Accept-Encoding: gzip, deflate
|
|
11
|
+
Accept: application/json
|
|
12
|
+
Host: iam.volcengineapi.com
|
|
13
|
+
X-Date: 20231017T062815Z
|
|
14
|
+
X-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
15
|
+
Authorization: HMAC-SHA256 Credential=AKLTZTFjNzFjYTczMzJjNGQyMjg0NTRkZjQ2ZTA4MTE1Mjc/20231017/cn-north-1/i18n_openapi/request, SignedHeaders=host;x-content-sha256;x-date, Signature=fb24f4211cf74f4e985cdd72f09156c288bd8e078d9867813327084204587b0a
|
|
16
|
+
Connection: keep-alive
|
|
30
17
|
}
|
|
31
18
|
|
|
32
19
|
def self.makeHeader
|
|
@@ -40,7 +27,6 @@ User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (K
|
|
|
40
27
|
def self.download
|
|
41
28
|
|
|
42
29
|
# puts makeHeader
|
|
43
|
-
|
|
44
30
|
#下载文件
|
|
45
31
|
|
|
46
32
|
params = {"projectIdList":[5],"langIds":[1,2,3,9,10,11,12,13,14,15,16,17,18],"fileTypeList":["excel"],"auditState":1,"valueState":0,"userId":"","value":"","tagIds":nil,"bizUseTagIds":nil,"pkeys":[]}
|
|
@@ -3,18 +3,17 @@ require_relative './LanguageDownloader'
|
|
|
3
3
|
require_relative './File_util'
|
|
4
4
|
require 'fileutils'
|
|
5
5
|
require 'colored2'
|
|
6
|
-
|
|
7
6
|
class BundleGenerater
|
|
8
7
|
|
|
9
8
|
# INFO_PLIST_ARRAY = [NSAppleMusicUsageDescription","NSLocalNetworkUsageDescription"]
|
|
10
9
|
INFO_PLIST_MAP = {:common_app_name=>["CFBundleDisplayName"],other_perm_camera_permission_description:["NSCameraUsageDescription"],other_perm_location_permission_description:["NSLocationAlwaysAndWhenInUseUsageDescription","NSLocationWhenInUseUsageDescription","NSLocationAlwaysUsageDescription"],other_perm_bluetooth_permission_description:["NSBluetoothPeripheralUsageDescription","NSBluetoothAlwaysUsageDescription"],access_content_permssion_storage:["NSPhotoLibraryUsageDescription"],other_perm_mic_permission_description:["NSMicrophoneUsageDescription"],other_set_permissions_homedata_desc:["NSHomeKitUsageDescription"],other_set_permissions_asr_text:["NSSpeechRecognitionUsageDescription"],device_add_device:["Add_Device_Title"],automation_add:["Add_Automation_Title"],device_create_scene:["Add_Scene_Title"]}
|
|
11
10
|
def self.generate
|
|
12
11
|
# 下载excel
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
#
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
puts __FILE__
|
|
13
|
+
system "cd #{File.dirname(__FILE__)};python3 DownloadNewLanguage.py"
|
|
14
|
+
f_path = "#{File.dirname(__FILE__)}/download.xlsx"
|
|
15
|
+
print(f_path)
|
|
16
|
+
|
|
18
17
|
# 读取excel到内存
|
|
19
18
|
file_til = File_util.new
|
|
20
19
|
hash = file_til.read_excel f_path
|
|
@@ -83,7 +82,9 @@ class BundleGenerater
|
|
|
83
82
|
if File.exist?(file)
|
|
84
83
|
system("plutil #{file}")
|
|
85
84
|
end
|
|
86
|
-
|
|
85
|
+
if File.exist?(localized_file)
|
|
86
|
+
system("plutil #{localized_file}")
|
|
87
|
+
end
|
|
87
88
|
end
|
|
88
89
|
|
|
89
90
|
#拷贝到代码仓库里
|
|
@@ -123,9 +124,8 @@ class BundleGenerater
|
|
|
123
124
|
if copy_info_plist
|
|
124
125
|
puts "InfoPlist多语言拷贝到目录:#{info_plist_path}"
|
|
125
126
|
end
|
|
126
|
-
end
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
end
|
|
129
129
|
#对多语言的value进行处理
|
|
130
130
|
def self.handleValue(value='',stringElement = nil)
|
|
131
131
|
#替换{=}
|
|
@@ -146,6 +146,8 @@ class BundleGenerater
|
|
|
146
146
|
|
|
147
147
|
end
|
|
148
148
|
|
|
149
|
+
|
|
150
|
+
# BundleGenerater.generate
|
|
149
151
|
# map = {:common_app_name=>["CFBundleDisplayName"]}
|
|
150
152
|
# if map.has_key?("common_app_name".to_sym)
|
|
151
153
|
# puts map[:common_app_name]
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cocoapods-localzedLoader
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- jeremylu
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-10-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: httparty
|
|
@@ -45,6 +45,7 @@ executables: []
|
|
|
45
45
|
extensions: []
|
|
46
46
|
extra_rdoc_files: []
|
|
47
47
|
files:
|
|
48
|
+
- lib/cocoapods-localzedLoader/DownloadNewLanguage.py
|
|
48
49
|
- lib/cocoapods-localzedLoader/File_util.rb
|
|
49
50
|
- lib/cocoapods-localzedLoader/LanguageDownloader.rb
|
|
50
51
|
- lib/cocoapods-localzedLoader/StringElement.rb
|