i18n-processes 0.1.2 → 0.1.3
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/Gemfile.lock +1 -1
- data/README.md +21 -8
- data/lib/i18n/processes/command/commands/missing.rb +4 -2
- data/lib/i18n/processes/command/commands/preprocessing.rb +3 -34
- data/lib/i18n/processes/path.rb +57 -2
- data/lib/i18n/processes/reports/spreadsheet.rb +3 -1
- data/lib/i18n/processes/version.rb +1 -1
- data/translated/en/p1/_messages/zh/company.properties +1 -1
- data/translated/en/p1/_messages/zh/meeting-rooms.properties +1 -1
- data/translated/en/p1/_messages/zh/orders.properties +1 -1
- data/translated/en/p2/orders.properties +1 -1
- data/translation/en/translated +477 -2
- metadata +1 -10
- data/translation/en/article.properties +0 -9
- data/translation/en/company.properties +0 -56
- data/translation/en/meeting-rooms.properties +0 -87
- data/translation/en/meetingBooking.properties +0 -14
- data/translation/en/messages.en +0 -164
- data/translation/en/office-areas.properties +0 -51
- data/translation/en/orders.properties +0 -26
- data/translation/en/tag.properties +0 -2
- data/translation/en/visitor.properties +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7297c979ac39120028d2a3c0950933d97e17ddc
|
4
|
+
data.tar.gz: 80d0928db663600f639ac9cd0324461b7d64909d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29b142527dd9286e6e214bfcb5b35ea1dcc02aec6c3805f273ce75e77d1dd21b3359d341aa5a50c6dbd511dba6e94fc265e2caa846e876593e1fb908fed886c5
|
7
|
+
data.tar.gz: 65effde8cae2368b77044d43af5b30d225174962dd247607edb4826d3899c2e19a6c27737de6c4b1793f6f68b572618b8950c70baa10c74bb046c3a312951782
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -20,18 +20,31 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
- 复制config目录下的文件i18n-processes.yml,添加到你自己的config目录下:
|
24
|
+
|
25
|
+
```
|
26
|
+
$ cp $(i18n-processes gem-path)/config/i18n-processes.yml config/
|
27
|
+
```
|
28
|
+
|
29
|
+
设置四个路径:
|
30
|
+
|
31
|
+
- source: 原文件存放路径
|
28
32
|
- translation: 翻译文件存放路径
|
29
33
|
- translated:翻译后的文件存放路径
|
30
|
-
|
34
|
+
- compare:对比文件存放路径,默认为tmp/
|
35
|
+
|
36
|
+
|
31
37
|
- 将需要翻译的中文文件夹放入设置好的目录下,比如source/
|
32
|
-
- 运行:`i18n-processes preprocessing
|
38
|
+
- 运行:`i18n-processes preprocessing`
|
39
|
+
处理原文件,提取出所有的keys
|
33
40
|
- 运行:`i18n-processes missing`
|
34
|
-
|
41
|
+
先对比上期的原始文件【如果有的话】,存在key相同,value不同的情况则会报错,输出diff:
|
42
|
+
|
43
|
+
这时可以通过两种方式消除diff:
|
44
|
+
- 删除翻译文件【比如translation/en/translated】中出现的diff.keys
|
45
|
+
- 删除上期文件【比如tmp/previous/pre_zh-CN】中出现的diff.keys
|
46
|
+
|
47
|
+
在你设置的翻译文件存放路径下,比如translated/,会生成与原文件同结构的文件,内含对应的翻译文件
|
35
48
|
|
36
49
|
|
37
50
|
## Development
|
@@ -31,17 +31,19 @@ module I18n::Processes
|
|
31
31
|
translated_locales = opt[:locales].reject{|x| x == base_locale}
|
32
32
|
translated_locales.each do |locale|
|
33
33
|
$stderr.puts Rainbow("#{base_locale} to #{locale}\n").green
|
34
|
+
# 创建en,对比上一期,如果两者的差异一样或者en中不存在这些keys,没问题,不一样,则raise error
|
34
35
|
preprocessing({:locales => [locale] })
|
36
|
+
changed_keys(locale)
|
35
37
|
missing_keys = spreadsheet_report.find_missing(locale)
|
36
38
|
missing_count = missing_keys.count
|
37
39
|
if missing_count.zero?
|
38
40
|
spreadsheet_report.translated_files(locale)
|
41
|
+
spreadsheet_report.origin_dic(locale)
|
39
42
|
else
|
40
|
-
$stderr.puts Rainbow("#{missing_count} keys need to be translated to #{locale}").
|
43
|
+
$stderr.puts Rainbow("#{missing_count} keys need to be translated to #{locale}").red.bright
|
41
44
|
spreadsheet_report.missing_report(locale)
|
42
45
|
end
|
43
46
|
end
|
44
|
-
|
45
47
|
end
|
46
48
|
|
47
49
|
cmd :translate_missing,
|
@@ -23,13 +23,11 @@ module I18n::Processes
|
|
23
23
|
# dic.merge!(origin_file_read(file)) { |key, v1, v2| fail "conflict: #{key}: #{v1}, #{v2} in #{file}" unless v1 == v2 }
|
24
24
|
dic.merge!(origin_file_read(file))
|
25
25
|
end
|
26
|
-
|
27
|
-
path = 'tmp/'
|
26
|
+
path = compare_path.first
|
28
27
|
keys_source(dic, path, locale)
|
29
|
-
$stderr.puts Rainbow('
|
28
|
+
$stderr.puts Rainbow('fetch all keys and values from origin files').green if locale == base_locale
|
30
29
|
end
|
31
30
|
|
32
|
-
|
33
31
|
def origin_file_read(file)
|
34
32
|
{}.tap do |a|
|
35
33
|
File.open(file).read.each_line do |line|
|
@@ -49,42 +47,13 @@ module I18n::Processes
|
|
49
47
|
|
50
48
|
def keys_source(dic, path, locale)
|
51
49
|
filename = path + locale
|
52
|
-
|
53
|
-
FileUtils::mkdir_p File.dirname(filename) unless Dir.exist?File.dirname(filename)
|
54
|
-
File.delete(previous_file) if File.exist?(previous_file)
|
55
|
-
File.rename(filename, previous_file) if File.exist?(filename)
|
50
|
+
File.delete(filename) if File.exist?(filename)
|
56
51
|
local_file = File.new(filename, 'w')
|
57
52
|
dic.map do |key, value|
|
58
53
|
value.include?("\n") ? local_file.write("#{key}=#{value}") : local_file.write("#{key}=#{value}\n")
|
59
54
|
end
|
60
55
|
local_file.close
|
61
|
-
changed_keys(previous_file, filename) if File.exist?(previous_file) && locale == base_locale
|
62
|
-
end
|
63
|
-
|
64
|
-
def changed_keys(previous, current)
|
65
|
-
previous_dic = get_dic(previous)
|
66
|
-
current_dic = get_dic(current)
|
67
|
-
diff = current_dic.merge(previous_dic){|k, v1, v2| {:current => v1, :previous => v2} unless v1 == v2 }
|
68
|
-
diff.select!{ |k, v| v.is_a?(Hash)}
|
69
|
-
print_changed_keys(diff) unless diff == {}
|
70
|
-
changed_keys_save(diff) unless diff == {}
|
71
56
|
end
|
72
|
-
|
73
|
-
def changed_keys_save(diff)
|
74
|
-
file = 'tmp/changed_keys/changed_keys'
|
75
|
-
FileUtils::mkdir_p File.dirname(file) unless Dir.exist?File.dirname(file)
|
76
|
-
changed_keys = File.new(file, 'w')
|
77
|
-
diff.each do |k, v|
|
78
|
-
changed_keys.write "key: #{k}\n"
|
79
|
-
changed_keys.write "current: #{v[:current]}"
|
80
|
-
changed_keys.write "previous: #{v[:previous]}"
|
81
|
-
changed_keys.write "\n"
|
82
|
-
end
|
83
|
-
changed_keys.close
|
84
|
-
log_warn("need to update #{diff.count} keys' translation")
|
85
|
-
log_warn("changed_keys save to #{file}")
|
86
|
-
end
|
87
|
-
|
88
57
|
end
|
89
58
|
end
|
90
59
|
end
|
data/lib/i18n/processes/path.rb
CHANGED
@@ -4,9 +4,9 @@ module I18n::Processes:: Path
|
|
4
4
|
|
5
5
|
def origin_files(locale)
|
6
6
|
if source_path == []
|
7
|
-
|
7
|
+
fail "please check the path for origin baselocale files"
|
8
8
|
elsif translation_path == []
|
9
|
-
|
9
|
+
fail "please check the path for translation files"
|
10
10
|
else
|
11
11
|
source = locale == base_locale ? source_path : translation_path[locale.to_sym]
|
12
12
|
[].tap do |file|
|
@@ -19,7 +19,56 @@ module I18n::Processes:: Path
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
def origin_dic(locale)
|
23
|
+
path = "#{compare_path.first}previous"
|
24
|
+
FileUtils::mkdir_p path unless Dir.exist?path
|
25
|
+
locales = [base_locale, locale]
|
26
|
+
locales.each do |locale|
|
27
|
+
origin_file = compare_path.first + locale
|
28
|
+
previous_file = "#{path}/pre_#{locale}"
|
29
|
+
File.delete(previous_file) if File.exist?(previous_file)
|
30
|
+
FileUtils.cp origin_file, previous_file if File.exist?(origin_file)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
def changed_keys(locale)
|
36
|
+
previous = "#{compare_path.first}previous/pre_#{base_locale}"
|
37
|
+
current = compare_path.first + base_locale
|
38
|
+
locale_file = compare_path.first + locale
|
39
|
+
previous_dic = get_dic(previous)
|
40
|
+
current_dic = get_dic(current)
|
41
|
+
locale_dic = get_dic(locale_file)
|
42
|
+
diff = current_dic.merge(previous_dic){|k, v1, v2| {:current => v1, :previous => v2 } unless v1 == v2 }
|
43
|
+
diff.select!{ |k, v| v.is_a?(Hash)}
|
44
|
+
check_changed_keys(diff,locale_dic)
|
45
|
+
end
|
46
|
+
|
47
|
+
def check_changed_keys(diff, locale_dic)
|
48
|
+
# log_stderr diff
|
49
|
+
unless diff == {} || (locale_dic.keys - diff.keys == locale_dic.keys)
|
50
|
+
print_changed_keys(diff)
|
51
|
+
changed_keys_save(diff)
|
52
|
+
raise Rainbow("need to update #{diff.count} keys' translation").red.bright
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def changed_keys_save(diff)
|
57
|
+
file = "#{compare_path.first}changed_keys/changed_keys"
|
58
|
+
FileUtils::mkdir_p File.dirname(file) unless Dir.exist?File.dirname(file)
|
59
|
+
changed_keys = File.new(file, 'w')
|
60
|
+
diff.each do |k, v|
|
61
|
+
changed_keys.write "key: #{k}\n"
|
62
|
+
changed_keys.write "current: #{v[:current]}"
|
63
|
+
changed_keys.write "previous: #{v[:previous]}"
|
64
|
+
changed_keys.write "\n"
|
65
|
+
end
|
66
|
+
changed_keys.close
|
67
|
+
log_warn("changed_keys save to #{file}")
|
68
|
+
end
|
69
|
+
|
22
70
|
def get_dic(path)
|
71
|
+
fail "#{path} not exist" unless File.exist?(path)
|
23
72
|
{}.tap do |dic|
|
24
73
|
File.open(path).each_line do |line|
|
25
74
|
key = line.split('=').first
|
@@ -29,6 +78,8 @@ module I18n::Processes:: Path
|
|
29
78
|
end
|
30
79
|
end
|
31
80
|
|
81
|
+
|
82
|
+
|
32
83
|
def source_path
|
33
84
|
config_file[:data][:source] ||= []
|
34
85
|
end
|
@@ -41,6 +92,10 @@ module I18n::Processes:: Path
|
|
41
92
|
config_file[:data][:translated] ||= []
|
42
93
|
end
|
43
94
|
|
95
|
+
def compare_path
|
96
|
+
config_file[:data][:compare] ||= ['tmp/']
|
97
|
+
end
|
98
|
+
|
44
99
|
def config_file
|
45
100
|
file = Dir.glob(File.join('**', '*.yml')).select{ |x| x.include?'i18n-processes' }
|
46
101
|
YAML.load_file(file.first).deep_symbolize_keys unless file.empty?
|
@@ -20,7 +20,7 @@ module I18n::Processes::Reports
|
|
20
20
|
report.write("#{k}=#{k}\n\n")
|
21
21
|
end
|
22
22
|
report.close
|
23
|
-
$stderr.puts Rainbow("missing report saved to #{file}\n").
|
23
|
+
$stderr.puts Rainbow("missing report saved to #{file}\n").red.bright
|
24
24
|
end
|
25
25
|
|
26
26
|
def translated_files(locale)
|
@@ -42,6 +42,8 @@ module I18n::Processes::Reports
|
|
42
42
|
base_dic.select { |k,v| (base_dic.keys - comp_dic.keys).include?(k)}
|
43
43
|
end
|
44
44
|
|
45
|
+
## save origin files in key = value format for next comparing
|
46
|
+
|
45
47
|
private
|
46
48
|
|
47
49
|
def translated_file(file, path, dic)
|
@@ -12,7 +12,7 @@ company.show.rightbar.invation.link=Invite colleagues to join
|
|
12
12
|
company.show.rightbar.payinfo=Payment information
|
13
13
|
company.show.rightbar.buy-link=Purchase license
|
14
14
|
company.show.rightbar.price-link=Version feature comparison
|
15
|
-
company.show.rightbar.expired-on=Valid until
|
15
|
+
company.show.rightbar.expired-on=Valid until
|
16
16
|
company.show.rightbar.max-rooms-count=Authorized number of manageable meeting rooms
|
17
17
|
company.show.rightbar.current-rooms-count=Number of meeting rooms opened
|
18
18
|
company.show.rightbar.custom-domain=Custom domain name
|
@@ -69,7 +69,7 @@ meetingRoom.booking.allowAll=All people can book
|
|
69
69
|
meetingRoom.capacity.number=Can serve %s people
|
70
70
|
|
71
71
|
# 限#{list room?.allowRoleSet(), as:'role'}&{'roles.' + role}#{if !role_isLast}、#{/if}#{/list}预订
|
72
|
-
meetingRoom.booking.limitFor.start=Only
|
72
|
+
meetingRoom.booking.limitFor.start=Only
|
73
73
|
meetingRoom.booking.limitFor.end= can book
|
74
74
|
|
75
75
|
# flash
|
@@ -8,7 +8,7 @@ order.contact.info=Order Invoice & Delivery information
|
|
8
8
|
|
9
9
|
order.invoice.type=Invoice type
|
10
10
|
order.invoice.type.PLAIN=Ordinary invoice
|
11
|
-
order.invoice.type.VAT=VAT
|
11
|
+
order.invoice.type.VAT=VAT
|
12
12
|
order.invoice.type.NONE=No invoice required
|
13
13
|
order.invoice.type.MANUAL=Manual
|
14
14
|
|
@@ -8,7 +8,7 @@ order.contact.info=Order Invoice & Delivery information
|
|
8
8
|
|
9
9
|
order.invoice.type=Invoice type
|
10
10
|
order.invoice.type.PLAIN=Ordinary invoice
|
11
|
-
order.invoice.type.VAT=VAT
|
11
|
+
order.invoice.type.VAT=VAT
|
12
12
|
order.invoice.type.NONE=No invoice required
|
13
13
|
order.invoice.type.MANUAL=Manual
|
14
14
|
|
data/translation/en/translated
CHANGED
@@ -1,5 +1,480 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# article
|
2
|
+
article.title=Title
|
3
|
+
article.shown=Visible
|
4
|
+
article.showOrder=Display order (reverse order)
|
5
|
+
article.channel=Channel
|
6
|
+
article.category=Article section
|
7
|
+
article.category.id=Article section
|
8
|
+
article.friendlyName=English name
|
9
|
+
article.readCount=Reads
|
10
|
+
|
11
|
+
# page
|
12
|
+
company.show.title=Company settings
|
13
|
+
company.show.subtitle=Company basic information
|
14
|
+
company.show.save-button=Save changes
|
15
|
+
|
16
|
+
company.nav.show=Basic information
|
17
|
+
company.nav.advance=Advanced settings
|
18
|
+
company.nav.orders=Order center
|
19
|
+
|
20
|
+
company.show.rightbar.invation=Invitation
|
21
|
+
company.show.rightbar.invation.link=Invite colleagues to join
|
22
|
+
company.show.rightbar.payinfo=Payment information
|
23
|
+
company.show.rightbar.buy-link=Purchase license
|
24
|
+
company.show.rightbar.price-link=Version feature comparison
|
25
|
+
company.show.rightbar.expired-on=Valid until
|
26
|
+
company.show.rightbar.max-rooms-count=Authorized number of manageable meeting rooms
|
27
|
+
company.show.rightbar.current-rooms-count=Number of meeting rooms opened
|
28
|
+
company.show.rightbar.custom-domain=Custom domain name
|
29
|
+
company.show.rightbar.custom-domain.hint1=%s now supports custom domain name, please send email to
|
30
|
+
company.show.rightbar.custom-domain.hint2= request, and provide the company domain name you want to resolve.
|
31
|
+
Company.show.rightbar.custom-domain.hint3=We will contact you within one business day to complete the configuration.
|
32
|
+
|
33
|
+
company.advance.subtitle=Advanced company settings
|
34
|
+
company.advance.ext-meeting-type=Extended meeting type
|
35
|
+
company.advance.ext-meeting-type.hint=You can remove unused meeting type(s)
|
36
|
+
company.advance.booking-begin=Start time of reserve meeting
|
37
|
+
company.advance.booking-end=End time of reserve meeting
|
38
|
+
company.advance.booking-limit=Max duration of meeting reservation
|
39
|
+
company.advance.booking-split=Interval of meeting booking
|
40
|
+
company.advance.booking-date-limit=Reservation date limit
|
41
|
+
company.advance.booking-date-limit.hint=Specifies maxium days allowed for book a future meeting, if set too far then may result to waste of resources; repetitive meeting not subject to this restriction
|
42
|
+
|
43
|
+
# form
|
44
|
+
company.name=Company name
|
45
|
+
company.corpName=Company name
|
46
|
+
company.notice=Company profile
|
47
|
+
company.notice.placeholder=Enter company profile
|
48
|
+
company.notice.hint=200 words or less
|
49
|
+
company.emailPostfix=Company email suffix
|
50
|
+
company.emailPostfix.placeholder=Used to ensure that only company employees can join, if leave blank then mailbox restrictions do not apply
|
51
|
+
company.emailPostfix.hint=It's the string after @ of your company mailbox, for example if company's mailbox is john.doe@bigcompany.com, then enter bigcompany.com; multiple suffixes can be separated by comma
|
52
|
+
company.logoFile=Company logo
|
53
|
+
company.logoFile.hint.please-select-file=Please select company logo image
|
54
|
+
company.logoFile.hint.logo-usage=Uploaded company logo will be visible in system interface, please make sure use a square image.
|
55
|
+
company.logoFile.hint.remove-logo.prefix=You can also
|
56
|
+
company.logoFile.hint.remove-logo.title=Delete company logo
|
57
|
+
company.logoFile.hint.remove-logo.confirm=Confirm delete company logo?
|
58
|
+
Company.logoFile.alt=Current logo
|
59
|
+
corpLang=Compay Default Language
|
60
|
+
|
61
|
+
# flash
|
62
|
+
flash.company.notice.save-advance-succ=Company advanced settings saved successfully!
|
63
|
+
flash.company.notice.rm-logo-succ=Remove company logo successfully!
|
64
|
+
flash.company.warn.bad-time-split=Time interval illegal!
|
65
|
+
flash.company.warn.need-square-picture=Please make sure to select a square image!
|
66
|
+
flash.company.warn.edu-cannot-change-name=It does not allow to modify company name, original name restored, please contact customer service if you need to change company name
|
67
|
+
|
68
|
+
|
69
|
+
# Index page element
|
70
|
+
meeting-rooms.index.title=Meeting rooms management
|
71
|
+
meeting-rooms.index.subtitle=Maintain company meeting rooms
|
72
|
+
meeting-rooms.index.tablabel=Meeting room
|
73
|
+
meeting-rooms.index.drag-tips=Drag meeting room to sort
|
74
|
+
meeting-rooms.operate.new=Add meeting room
|
75
|
+
|
76
|
+
meeting-rooms.index.open-for-view=Open meeting for view
|
77
|
+
meeting-rooms.index.open-for-view.hint=Unregistered users can view meeting room arrangement
|
78
|
+
|
79
|
+
meeting-rooms.operate.print=Print room QR code
|
80
|
+
|
81
|
+
meeting-rooms.add.subtitle=Add a new meeting room
|
82
|
+
|
83
|
+
meeting-rooms.edit.subtitle=Modified at - %s
|
84
|
+
meeting-rooms.pad.title=Bind Pad device
|
85
|
+
meeting-rooms.pad.had-binded=The current meeting room has been bound to a Pad device.
|
86
|
+
meeting-rooms.pad.rebind=Re-bind Pad device
|
87
|
+
meeting-rooms.pad.install-app-please=Please install Android App:
|
88
|
+
meeting-rooms.pad.open-and-input-bindcode=After opening App, enter the prompted binding code:
|
89
|
+
|
90
|
+
meeting-rooms.show.top-hint1=Temporary use of meeting room, please scan with WeChat
|
91
|
+
meeting-rooms.show.top-hint2=to avoid conflict with others
|
92
|
+
meeting-rooms.show.bottom-hint1=This page can be printed directly and paste at door of the meeting room, scan QR code with WeChat can review status of the meeting room
|
93
|
+
meeting-rooms.show.bottom-hint2=The content of the "Print" button will not be printed
|
94
|
+
meeting-rooms.show.bottom-hint3=You can also copy above to Word and edit before print
|
95
|
+
|
96
|
+
# MeetingRoom Form
|
97
|
+
meetingRoom.name=Meeting room name
|
98
|
+
meetingRoom.name.placeholder=Please enter meeting room name
|
99
|
+
meetingRoom.location=Location
|
100
|
+
meetingRoom.location.placeholder=Meeting room location
|
101
|
+
meetingRoom.location.hint=A brief description of where the meeting room is located, such as "west wing of building 3", so that everyone can know where it is
|
102
|
+
meetingRoom.capacity =Maximum Capacity
|
103
|
+
meetingRoom.capacity.placeholder=Please enter maximum capacity of the meeting room
|
104
|
+
meetingRoom.facilities=Meeting facilities
|
105
|
+
meetingRoom.facilities.hint=Meeting facilities available in meeting room
|
106
|
+
meetingRoom.officeArea=Office area
|
107
|
+
disabledReason=Reason for close
|
108
|
+
meetingRoom.disableReason.placeholder=Please use short text to explain why the meeting room is unavailable
|
109
|
+
meetingRoom.disableReason.hint=50 words or less, will be visible in meeting room view in WeChat and suggesting the relevant personnel
|
110
|
+
|
111
|
+
meetingRoom.shortName=Short name
|
112
|
+
meetingRoom.shortName.placeholder=Please enter a short name for the meeting room, less than 20 characters (optional)
|
113
|
+
meetingRoom.shortName.hint=Short name will be used in the meeting notification, display screen or other places where screen estate is limited, if leave blank, full meeting room name will be used
|
114
|
+
|
115
|
+
meetingRoom.allowRoles=Reservation permission
|
116
|
+
meetingRoom.allowRoles.hint=If un-check "Everyone can book", ordinary staff can not book this meeting room, only specified role can reserve it
|
117
|
+
|
118
|
+
meetingRoom.settings =Meeting room settings
|
119
|
+
meetingRoom.settings.not-public=Do not publish meeting schedule
|
120
|
+
meetingRoom.settings.not-public.hint=Unregistered user can not view meeting room schedule
|
121
|
+
|
122
|
+
meetingRoom.notice=Meeting room notice
|
123
|
+
meetingRoom.notice.placeholder=Enter meeting room notice
|
124
|
+
meetingRoom.notice.hint=200 words or less, inform room usage notes (optional)
|
125
|
+
|
126
|
+
meetingRoom.officeArea.id=Office area
|
127
|
+
meetingRoom.officeArea.hint=Geographically differentiated office area, a "reception desk" can be considered as an office area
|
128
|
+
|
129
|
+
meetingRoom.disable-for-short-time-no-reason=No reason, temporarily closed
|
130
|
+
meetingRoom.disable-for-short-time=Temporarily closed
|
131
|
+
meetingRoom.disable-for-short-time.hint=Temporarily not allow booking
|
132
|
+
meetingRoom.booking.allowAll=All people can book
|
133
|
+
meetingRoom.capacity.number=Can serve %s people
|
134
|
+
|
135
|
+
# Limit={list room? .allowRoleSet (), as: 'role'} & {'roles.' + Role} # {if! Role_isLast}, # {/ if} # {/ list}booking
|
136
|
+
meetingRoom.booking.limitFor.start=Only
|
137
|
+
meetingRoom.booking.limitFor.end= can book
|
138
|
+
|
139
|
+
# Flash
|
140
|
+
flash.notice.create-rooms-succ=Meeting room %s created successfully
|
141
|
+
flash.notice.save-rooms-succ=Meeting room %s modified successfully
|
142
|
+
flash.notice.disable-rooms-succ=Meeting room %s disabled successfully
|
143
|
+
flash.notice.disable-rooms-with-meetings=Meeting room %s disabled successfully, but %s meetings already scheduled, please inform the relevant staff
|
144
|
+
flash.notice.meeting-rooms.generate-pad-bind-key-succ=Pad binding code just regenerated, please enter the new binding code on the Pad
|
145
|
+
flash.warn.meeting-room-deleted-with-meetings =There are meeting arrangements in %s, please make sure not more meetings in %s before delete the meeting room.
|
146
|
+
flash.warn.meeting-room-reach-max-count=Reached maximum number of meeting rooms %s, can not add more rooms, please contact online customer service to purchase license if you need to manage more meeting rooms
|
147
|
+
|
148
|
+
# Validation
|
149
|
+
validate.meetingRoom.disableReason.require=Close reason required
|
150
|
+
validate.meetingRoom.disableReason.length=Reason for close, 50 words or less
|
151
|
+
|
152
|
+
|
153
|
+
# Other
|
154
|
+
meeting-rooms.bookingPermision=Booking Permissions
|
155
|
+
meeting-rooms.not-exists=Meeting room not exist
|
156
|
+
|
157
|
+
# HTML page
|
158
|
+
meetingBooking.title.main=Book meeting
|
159
|
+
meetingBooking.title.booking-by-date=Book by date
|
160
|
+
meetingBooking.title.detail=Meeting details
|
161
|
+
meetingBooking.title.find-room-by-time=Find a meeting room at specified time
|
162
|
+
meetingBooking.title.find-time-by-room=Find a meeting time with specified room
|
163
|
+
|
164
|
+
|
165
|
+
meetingBooking.booking=Book
|
166
|
+
|
167
|
+
|
168
|
+
# Confirm the status
|
169
|
+
meeting.joinStatus.notMember=Non meeting participants can not set the engagement status
|
170
|
+
meeting.joinStatus.invalidStatus=Illegal participation status
|
171
|
+
|
172
|
+
# You can specialize this file for each language.
|
173
|
+
# For example, for French create a messages.fr file
|
174
|
+
#
|
175
|
+
since.seconds = %s second%s ago
|
176
|
+
since.minutes = %s minute%s ago
|
177
|
+
since.hours = %s hour%s ago
|
178
|
+
since.days = %s day%s ago
|
179
|
+
since.months = %s month%s ago
|
180
|
+
since.years = %s year%s ago
|
181
|
+
since.format = MMM d, yyyy
|
182
|
+
|
183
|
+
# ======================= 表单验证定义 =============================
|
184
|
+
validation.required=Required
|
185
|
+
validation.minSize=Minimum size is %2$d
|
186
|
+
validation.maxSize=Maximum size is %2$d
|
187
|
+
validation.email=Invalid email address
|
188
|
+
validation.range=Not in the range %2$d through %3$d
|
189
|
+
validation.min=Cannot be lower than %2$d
|
190
|
+
validation.max=Cannot be greater than %2$d
|
191
|
+
validation.match=Must match %2$s
|
192
|
+
validation.isTrue=Must be checked
|
193
|
+
validation.equals=Must be equal to &{%2$s}
|
194
|
+
validation.invalid=Incorrect value
|
195
|
+
validation.future=Must be in the future
|
196
|
+
validation.after=Must be after %2$s
|
197
|
+
validation.past=Must be in the past
|
198
|
+
validation.before=Must be before %2$s
|
199
|
+
validation.object=Validation failed
|
200
|
+
validation.notFound=Object not found for id %2$s
|
201
|
+
validation.url=Not a valid URL
|
202
|
+
validation.phone=Not a valid phone
|
203
|
+
validation.ipv4=Not a valid IP address
|
204
|
+
validation.ipv6=Not a valid IP v6 address
|
205
|
+
validation.unique=Must be unique
|
206
|
+
|
207
|
+
#
|
208
|
+
play-paginate.prev=<
|
209
|
+
play-paginate.next=>
|
210
|
+
play-paginate.first=<<
|
211
|
+
play-paginate.last=>>
|
212
|
+
|
213
|
+
# 时间说明
|
214
|
+
option.hours.6=6:00 AM
|
215
|
+
option.hours.7=7:00 AM
|
216
|
+
option.hours.8=8:00 AM
|
217
|
+
option.hours.9=9:00 AM
|
218
|
+
option.hours.10=10:00 AM
|
219
|
+
option.hours.11=11:00 AM
|
220
|
+
option.hours.14=14:00 PM
|
221
|
+
option.hours.15=15:00 PM
|
222
|
+
option.hours.16=16:00 PM
|
223
|
+
option.hours.17=17:00 PM
|
224
|
+
option.hours.18=18:00 PM
|
225
|
+
option.hours.19=19:00 PM
|
226
|
+
option.hours.20=20:00 PM
|
227
|
+
option.hours.21=21:00 PM
|
228
|
+
option.hours.22=22:00 PM
|
229
|
+
option.hours.23=23:00 PM
|
230
|
+
option.hour=Hour
|
231
|
+
option.hours=Hours
|
232
|
+
option.minute=Minute
|
233
|
+
option.minutes=Minutes
|
234
|
+
option.day=Day
|
235
|
+
option.days=Days
|
236
|
+
option.unlimit=Unlimit
|
237
|
+
|
238
|
+
# 扩展专用
|
239
|
+
yesno.yes=Yes
|
240
|
+
yesno.no=No
|
241
|
+
option.undefine=Undefined
|
242
|
+
link.download=Download
|
243
|
+
|
244
|
+
# app
|
245
|
+
app.name=MeetingRoom Booking System
|
246
|
+
|
247
|
+
# manager界面元素
|
248
|
+
manager.form.saveAdd=Add
|
249
|
+
manager.form.saveEdit=Save
|
250
|
+
manager.form.cancel=Cancel
|
251
|
+
manager.form.back=Back
|
252
|
+
manager.form.print=Print
|
253
|
+
manager.form.saveModify=Save Modify
|
254
|
+
|
255
|
+
manager.list.action=Operate
|
256
|
+
manager.list.edit=Edit
|
257
|
+
manager.list.delete=Delete
|
258
|
+
manager.list.confirm-delete=Confirm delete %s?
|
259
|
+
manager.share.clear-selected-users=Clear Selected
|
260
|
+
manager.share.clear-selected-users.hint=Clear Selected Users
|
261
|
+
|
262
|
+
# 服务配置
|
263
|
+
customer.service-email=service@hyshi.net
|
264
|
+
|
265
|
+
# 频道
|
266
|
+
cmsChannel.TOUR=TOUR
|
267
|
+
cmsChannel.BLOG=BLOG
|
268
|
+
cmsChannel.NOTICE=NOTICE
|
269
|
+
cmsChannel.null=Uncategory
|
270
|
+
|
271
|
+
# 会议状态
|
272
|
+
meeting.status.OPEN=Open
|
273
|
+
meeting.status.LOCK=Lock
|
274
|
+
meeting.status.CANCEL=Canceled
|
275
|
+
|
276
|
+
# 会议重复类型
|
277
|
+
meeting.repeat.NONE=Meeting
|
278
|
+
meeting.repeat.WEEK=Repeat Meeting
|
279
|
+
|
280
|
+
# 性别
|
281
|
+
sex.M=Male
|
282
|
+
sex.F=Female
|
283
|
+
sex.null=Unknown
|
284
|
+
sex.U=Unknown
|
285
|
+
|
286
|
+
# 角色
|
287
|
+
roles.ADMIN=Admin
|
288
|
+
roles.MANAGER=Manager
|
289
|
+
roles.USER=Staff
|
290
|
+
roles.HR=HR
|
291
|
+
roles.FMY=Receptionist
|
292
|
+
roles.HYSASS=Meeting Asst
|
293
|
+
|
294
|
+
|
295
|
+
|
296
|
+
# ======================= 导航定义 =============================
|
297
|
+
nav.main=Home
|
298
|
+
nav.receptions=Reception
|
299
|
+
nav.meetings=Book Meeting
|
300
|
+
nav.view-meetings=Query Meeting
|
301
|
+
nav.hiring=Hiring
|
302
|
+
nav.hiring-plans=Hiring Plans
|
303
|
+
nav.recruits=Recruits
|
304
|
+
nav.reports=Reports
|
305
|
+
nav.reports.memberTimes=Member Times
|
306
|
+
nav.reports.ownerTimes=Owner Times
|
307
|
+
nav.reports.checkerTimes=Check-in Times
|
308
|
+
nav.reports.roomTimes=Meetingroom Times
|
309
|
+
nav.admin-company=Company Settings
|
310
|
+
nav.admin-meeting-rooms=Meeting Rooms
|
311
|
+
nav.admin-devices=Devices
|
312
|
+
nav.admin-depts=Departments
|
313
|
+
nav.admin-employees=Staff
|
314
|
+
nav.my-tags=My Contacts
|
315
|
+
nav.my-profile=My Profile
|
316
|
+
|
317
|
+
|
318
|
+
|
319
|
+
# Dept
|
320
|
+
dept.name=Dept Name
|
321
|
+
dept.noDeptName=No Dept Name.
|
322
|
+
dept.not-exists=The dept Not exists!
|
323
|
+
flash.warn.dept-deleted-with-users=The %s had %s members,please remove the members before delete the dept.
|
324
|
+
|
325
|
+
|
326
|
+
@include.article = ./_messages/en/article.properties
|
327
|
+
@include.meetingBooking = ./_messages/en/meetingBooking.properties
|
328
|
+
|
329
|
+
@include.meeting-rooms = ./_messages/en/meeting-rooms.properties
|
330
|
+
@include.office-areas = ./_messages/en/office-areas.properties
|
331
|
+
@include.company = ./_messages/en/company.properties
|
332
|
+
@include.orders = ./_messages/en/orders.properties
|
333
|
+
@include.visitor = ./_messages/en/visitor.properties
|
334
|
+
@include.devices = ./_messages/en/devices.properties
|
335
|
+
@include.tag = ./_messages/en/tag.properties
|
336
|
+
|
337
|
+
|
338
|
+
# Index page
|
339
|
+
office-areas.index.title=Office area management
|
340
|
+
office-areas.index.subtitle=Maintain office area
|
341
|
+
office-areas.index.tablabel=Office area
|
342
|
+
|
343
|
+
office-areas.operate.new =Add new office area
|
344
|
+
|
345
|
+
office-areas.visitSetting=Visitor settings
|
346
|
+
|
347
|
+
# Add page
|
348
|
+
office-areas.add.subtitle=Add office area
|
349
|
+
office-areas.add.exists-same=Office of the same name already exists
|
350
|
+
# edit page
|
351
|
+
office-areas.edit.subtitle=Modified: %s
|
352
|
+
|
353
|
+
# form
|
354
|
+
officeArea.name=Office area
|
355
|
+
officeArea.name.placeholder=Please enter name of the office area
|
356
|
+
officeArea.phone=Receptionist phone
|
357
|
+
officeArea.phone.placeholder=Please enter the office area corresponding to the receptionist corresponding to the phone (optional)
|
358
|
+
officeArea.remark=Remarks
|
359
|
+
officeArea.remark.placeholder=Office area notes (optional)
|
360
|
+
officeArea.roomCount=Number of meeting rooms
|
361
|
+
|
362
|
+
officeArea.address=Address
|
363
|
+
officeArea.address.placeholder=Please enter specified office area address (optional)
|
364
|
+
officeArea.address.hint=Send this address to visitors when sending an invitation
|
365
|
+
officeArea.address.hint-view-map =, make sure the map on the right shows the correct address
|
366
|
+
|
367
|
+
officeArea.trafficAdvice=Traffic advice
|
368
|
+
officeArea.trafficAdvice.placeholder=Please enter traffic advice (optional)
|
369
|
+
officeArea.trafficAdvice.hint=Send public transport information to visitors when sending an invitation
|
370
|
+
|
371
|
+
officeArea.wifiName=Guest WIFI SSID
|
372
|
+
officeArea.wifiName.placeholder=Please leave blank if you do not want to share WIFI with visitors
|
373
|
+
officeArea.wifiName.hint=Please enter WIFI SSID to share with visitors
|
374
|
+
officeArea.wifiPassword=WIFI password
|
375
|
+
officeArea.wifiPassword.placeholder=Please leave blank if you do not want to share WIFI with visitors
|
376
|
+
officeArea.wifiPassword.hint=Please enter WIFI password to share with visitors
|
377
|
+
|
378
|
+
officeArea.admins=Service director
|
379
|
+
officeArea.admins.placeholder=Meeting service director for the office area, support Chinese phonetic abbreviation
|
380
|
+
# officeArea.admins.hint=not set. Responsible for the coordination of the office of the office, the meeting approval; all the office area of the meeting will be copied to the office area service director
|
381
|
+
officeArea.admins.hint=Responsible for the coordination of meetings, can modify or cancel the meeting (optional)
|
382
|
+
|
383
|
+
# flash
|
384
|
+
office-areas.flash.update-succ=Office area saved successfully
|
385
|
+
|
386
|
+
# other
|
387
|
+
office-areas.all-areas=All areas
|
388
|
+
office-areas.default-name=Default
|
389
|
+
|
390
|
+
|
391
|
+
# Index page
|
392
|
+
office-areas.index.title=Office area management
|
393
|
+
office-areas.index.subtitle=Maintain office area
|
394
|
+
office-areas.index.tablabel=Office area
|
395
|
+
|
396
|
+
office-areas.operate.new =Add new office area
|
397
|
+
|
398
|
+
office-areas.visitSetting=Visitor settings
|
399
|
+
|
400
|
+
# Add page
|
401
|
+
office-areas.add.subtitle=Add office area
|
402
|
+
office-areas.add.exists-same=Office of the same name already exists
|
403
|
+
# edit page
|
404
|
+
office-areas.edit.subtitle=Modified: %s
|
405
|
+
|
406
|
+
# form
|
407
|
+
officeArea.name=Office area
|
408
|
+
officeArea.name.placeholder=Please enter name of the office area
|
409
|
+
officeArea.phone=Receptionist phone
|
410
|
+
officeArea.phone.placeholder=Please enter the office area corresponding to the receptionist corresponding to the phone (optional)
|
411
|
+
officeArea.remark=Remarks
|
412
|
+
officeArea.remark.placeholder=Office area notes (optional)
|
413
|
+
officeArea.roomCount=Number of meeting rooms
|
414
|
+
|
415
|
+
officeArea.address=Address
|
416
|
+
officeArea.address.placeholder=Please enter specified office area address (optional)
|
417
|
+
officeArea.address.hint=Send this address to visitors when sending an invitation
|
418
|
+
officeArea.address.hint-view-map =, make sure the map on the right shows the correct address
|
419
|
+
|
420
|
+
officeArea.trafficAdvice=Traffic advice
|
421
|
+
officeArea.trafficAdvice.placeholder=Please enter traffic advice (optional)
|
422
|
+
officeArea.trafficAdvice.hint=Send public transport information to visitors when sending an invitation
|
423
|
+
|
424
|
+
officeArea.wifiName=Guest WIFI SSID
|
425
|
+
officeArea.wifiName.placeholder=Please leave blank if you do not want to share WIFI with visitors
|
426
|
+
officeArea.wifiName.hint=Please enter WIFI SSID to share with visitors
|
427
|
+
officeArea.wifiPassword=WIFI password
|
428
|
+
officeArea.wifiPassword.placeholder=Please leave blank if you do not want to share WIFI with visitors
|
429
|
+
officeArea.wifiPassword.hint=Please enter WIFI password to share with visitors
|
430
|
+
|
431
|
+
officeArea.admins=Service director
|
432
|
+
officeArea.admins.placeholder=Meeting service director for the office area, support Chinese phonetic abbreviation
|
433
|
+
# officeArea.admins.hint=not set. Responsible for the coordination of the office of the office, the meeting approval; all the office area of the meeting will be copied to the office area service director
|
434
|
+
officeArea.admins.hint=Responsible for the coordination of meetings, can modify or cancel the meeting (optional)
|
435
|
+
|
436
|
+
# flash
|
437
|
+
office-areas.flash.update-succ=Office area saved successfully
|
438
|
+
|
439
|
+
# other
|
440
|
+
office-areas.all-areas=All areas
|
441
|
+
office-areas.default-name=Default
|
442
|
+
|
443
|
+
order.corp.name=Order company
|
444
|
+
order.orderNumber=Order number
|
445
|
+
order.remark=Order description
|
446
|
+
order.amount=Order amount
|
447
|
+
order.created.info=Order created
|
448
|
+
|
449
|
+
|
450
|
+
order.contact.info=Order Invoice & Delivery information
|
451
|
+
|
452
|
+
order.invoice.type=Invoice type
|
453
|
+
order.invoice.type.PLAIN=Ordinary invoice
|
454
|
+
order.invoice.type.VAT=VAT
|
455
|
+
order.invoice.type.NONE=No invoice required
|
456
|
+
order.invoice.type.MANUAL=Manual
|
457
|
+
|
458
|
+
|
459
|
+
corpContact.invoiceTitle=Invoice to
|
460
|
+
corpContact.invoiceSubject=Invoice content
|
461
|
+
corpContact.receiverName=Recipient name
|
462
|
+
corpContact.receiverPhone=Recipient phone number
|
463
|
+
corpContact.province=Province
|
464
|
+
corpContact.city=City
|
465
|
+
corpContact.district=District
|
466
|
+
corpContact.address=Recipient address
|
467
|
+
corpContact.postCode=Zip code
|
468
|
+
corpContact.address2=Administrative area
|
469
|
+
|
470
|
+
|
471
|
+
tag.name=Name
|
472
|
+
tag.userIds=Contacts
|
473
|
+
|
474
|
+
|
475
|
+
visitorMeeting.visitorName=Name
|
476
|
+
visitorMeeting.visitorEmail=Email
|
477
|
+
visitorMeeting.visitorMobile=Phone
|
3
478
|
|
4
479
|
|
5
480
|
# ======================= missing keys list =============================
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n-processes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lucia
|
@@ -370,16 +370,7 @@ files:
|
|
370
370
|
- translated/en/p2/ticket.properties
|
371
371
|
- translated/en/p2/visitor.properties
|
372
372
|
- translated/en/zh.messages.ts
|
373
|
-
- translation/en/article.properties
|
374
|
-
- translation/en/company.properties
|
375
|
-
- translation/en/meeting-rooms.properties
|
376
|
-
- translation/en/meetingBooking.properties
|
377
|
-
- translation/en/messages.en
|
378
|
-
- translation/en/office-areas.properties
|
379
|
-
- translation/en/orders.properties
|
380
|
-
- translation/en/tag.properties
|
381
373
|
- translation/en/translated
|
382
|
-
- translation/en/visitor.properties
|
383
374
|
homepage: https://github.com/Lupeipei/i18n-processes
|
384
375
|
licenses:
|
385
376
|
- MIT
|
@@ -1,9 +0,0 @@
|
|
1
|
-
# article
|
2
|
-
article.title=Title
|
3
|
-
article.shown=Visible
|
4
|
-
article.showOrder=Display order (reverse order)
|
5
|
-
article.channel=Channel
|
6
|
-
article.category=Article section
|
7
|
-
article.category.id=Article section
|
8
|
-
article.friendlyName=English name
|
9
|
-
article.readCount=Reads
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# page
|
2
|
-
company.show.title=Company settings
|
3
|
-
company.show.subtitle=Company basic information
|
4
|
-
company.show.save-button=Save changes
|
5
|
-
|
6
|
-
company.nav.show=Basic information
|
7
|
-
company.nav.advance=Advanced settings
|
8
|
-
company.nav.orders=Order center
|
9
|
-
|
10
|
-
company.show.rightbar.invation=Invitation
|
11
|
-
company.show.rightbar.invation.link=Invite colleagues to join
|
12
|
-
company.show.rightbar.payinfo=Payment information
|
13
|
-
company.show.rightbar.buy-link=Purchase license
|
14
|
-
company.show.rightbar.price-link=Version feature comparison
|
15
|
-
company.show.rightbar.expired-on=Valid until
|
16
|
-
company.show.rightbar.max-rooms-count=Authorized number of manageable meeting rooms
|
17
|
-
company.show.rightbar.current-rooms-count=Number of meeting rooms opened
|
18
|
-
company.show.rightbar.custom-domain=Custom domain name
|
19
|
-
company.show.rightbar.custom-domain.hint1=%s now supports custom domain name, please send email to
|
20
|
-
company.show.rightbar.custom-domain.hint2= request, and provide the company domain name you want to resolve.
|
21
|
-
Company.show.rightbar.custom-domain.hint3=We will contact you within one business day to complete the configuration.
|
22
|
-
|
23
|
-
company.advance.subtitle=Advanced company settings
|
24
|
-
company.advance.ext-meeting-type=Extended meeting type
|
25
|
-
company.advance.ext-meeting-type.hint=You can remove unused meeting type(s)
|
26
|
-
company.advance.booking-begin=Start time of reserve meeting
|
27
|
-
company.advance.booking-end=End time of reserve meeting
|
28
|
-
company.advance.booking-limit=Max duration of meeting reservation
|
29
|
-
company.advance.booking-split=Interval of meeting booking
|
30
|
-
company.advance.booking-date-limit=Reservation date limit
|
31
|
-
company.advance.booking-date-limit.hint=Specifies maxium days allowed for book a future meeting, if set too far then may result to waste of resources; repetitive meeting not subject to this restriction
|
32
|
-
|
33
|
-
# form
|
34
|
-
company.name=Company name
|
35
|
-
company.corpName=Company name
|
36
|
-
company.notice=Company profile
|
37
|
-
company.notice.placeholder=Enter company profile
|
38
|
-
company.notice.hint=200 words or less
|
39
|
-
company.emailPostfix=Company email suffix
|
40
|
-
company.emailPostfix.placeholder=Used to ensure that only company employees can join, if leave blank then mailbox restrictions do not apply
|
41
|
-
company.emailPostfix.hint=It's the string after @ of your company mailbox, for example if company's mailbox is john.doe@bigcompany.com, then enter bigcompany.com; multiple suffixes can be separated by comma
|
42
|
-
company.logoFile=Company logo
|
43
|
-
company.logoFile.hint.please-select-file=Please select company logo image
|
44
|
-
company.logoFile.hint.logo-usage=Uploaded company logo will be visible in system interface, please make sure use a square image.
|
45
|
-
company.logoFile.hint.remove-logo.prefix=You can also
|
46
|
-
company.logoFile.hint.remove-logo.title=Delete company logo
|
47
|
-
company.logoFile.hint.remove-logo.confirm=Confirm delete company logo?
|
48
|
-
Company.logoFile.alt=Current logo
|
49
|
-
corpLang=Compay Default Language
|
50
|
-
|
51
|
-
# flash
|
52
|
-
flash.company.notice.save-advance-succ=Company advanced settings saved successfully!
|
53
|
-
flash.company.notice.rm-logo-succ=Remove company logo successfully!
|
54
|
-
flash.company.warn.bad-time-split=Time interval illegal!
|
55
|
-
flash.company.warn.need-square-picture=Please make sure to select a square image!
|
56
|
-
flash.company.warn.edu-cannot-change-name=It does not allow to modify company name, original name restored, please contact customer service if you need to change company name
|
@@ -1,87 +0,0 @@
|
|
1
|
-
# Index page element
|
2
|
-
meeting-rooms.index.title=Meeting rooms management
|
3
|
-
meeting-rooms.index.subtitle=Maintain company meeting rooms
|
4
|
-
meeting-rooms.index.tablabel=Meeting room
|
5
|
-
meeting-rooms.index.drag-tips=Drag meeting room to sort
|
6
|
-
meeting-rooms.operate.new=Add meeting room
|
7
|
-
|
8
|
-
meeting-rooms.index.open-for-view=Open meeting for view
|
9
|
-
meeting-rooms.index.open-for-view.hint=Unregistered users can view meeting room arrangement
|
10
|
-
|
11
|
-
meeting-rooms.operate.print=Print room QR code
|
12
|
-
|
13
|
-
meeting-rooms.add.subtitle=Add a new meeting room
|
14
|
-
|
15
|
-
meeting-rooms.edit.subtitle=Modified at - %s
|
16
|
-
meeting-rooms.pad.title=Bind Pad device
|
17
|
-
meeting-rooms.pad.had-binded=The current meeting room has been bound to a Pad device.
|
18
|
-
meeting-rooms.pad.rebind=Re-bind Pad device
|
19
|
-
meeting-rooms.pad.install-app-please=Please install Android App:
|
20
|
-
meeting-rooms.pad.open-and-input-bindcode=After opening App, enter the prompted binding code:
|
21
|
-
|
22
|
-
meeting-rooms.show.top-hint1=Temporary use of meeting room, please scan with WeChat
|
23
|
-
meeting-rooms.show.top-hint2=to avoid conflict with others
|
24
|
-
meeting-rooms.show.bottom-hint1=This page can be printed directly and paste at door of the meeting room, scan QR code with WeChat can review status of the meeting room
|
25
|
-
meeting-rooms.show.bottom-hint2=The content of the "Print" button will not be printed
|
26
|
-
meeting-rooms.show.bottom-hint3=You can also copy above to Word and edit before print
|
27
|
-
|
28
|
-
# MeetingRoom Form
|
29
|
-
meetingRoom.name=Meeting room name
|
30
|
-
meetingRoom.name.placeholder=Please enter meeting room name
|
31
|
-
meetingRoom.location=Location
|
32
|
-
meetingRoom.location.placeholder=Meeting room location
|
33
|
-
meetingRoom.location.hint=A brief description of where the meeting room is located, such as "west wing of building 3", so that everyone can know where it is
|
34
|
-
meetingRoom.capacity =Maximum Capacity
|
35
|
-
meetingRoom.capacity.placeholder=Please enter maximum capacity of the meeting room
|
36
|
-
meetingRoom.facilities=Meeting facilities
|
37
|
-
meetingRoom.facilities.hint=Meeting facilities available in meeting room
|
38
|
-
meetingRoom.officeArea=Office area
|
39
|
-
disabledReason=Reason for close
|
40
|
-
meetingRoom.disableReason.placeholder=Please use short text to explain why the meeting room is unavailable
|
41
|
-
meetingRoom.disableReason.hint=50 words or less, will be visible in meeting room view in WeChat and suggesting the relevant personnel
|
42
|
-
|
43
|
-
meetingRoom.shortName=Short name
|
44
|
-
meetingRoom.shortName.placeholder=Please enter a short name for the meeting room, less than 20 characters (optional)
|
45
|
-
meetingRoom.shortName.hint=Short name will be used in the meeting notification, display screen or other places where screen estate is limited, if leave blank, full meeting room name will be used
|
46
|
-
|
47
|
-
meetingRoom.allowRoles=Reservation permission
|
48
|
-
meetingRoom.allowRoles.hint=If un-check "Everyone can book", ordinary staff can not book this meeting room, only specified role can reserve it
|
49
|
-
|
50
|
-
meetingRoom.settings =Meeting room settings
|
51
|
-
meetingRoom.settings.not-public=Do not publish meeting schedule
|
52
|
-
meetingRoom.settings.not-public.hint=Unregistered user can not view meeting room schedule
|
53
|
-
|
54
|
-
meetingRoom.notice=Meeting room notice
|
55
|
-
meetingRoom.notice.placeholder=Enter meeting room notice
|
56
|
-
meetingRoom.notice.hint=200 words or less, inform room usage notes (optional)
|
57
|
-
|
58
|
-
meetingRoom.officeArea.id=Office area
|
59
|
-
meetingRoom.officeArea.hint=Geographically differentiated office area, a "reception desk" can be considered as an office area
|
60
|
-
|
61
|
-
meetingRoom.disable-for-short-time-no-reason=No reason, temporarily closed
|
62
|
-
meetingRoom.disable-for-short-time=Temporarily closed
|
63
|
-
meetingRoom.disable-for-short-time.hint=Temporarily not allow booking
|
64
|
-
meetingRoom.booking.allowAll=All people can book
|
65
|
-
meetingRoom.capacity.number=Can serve %s people
|
66
|
-
|
67
|
-
# Limit={list room? .allowRoleSet (), as: 'role'} & {'roles.' + Role} # {if! Role_isLast}, # {/ if} # {/ list}booking
|
68
|
-
meetingRoom.booking.limitFor.start=Only
|
69
|
-
meetingRoom.booking.limitFor.end= can book
|
70
|
-
|
71
|
-
# Flash
|
72
|
-
flash.notice.create-rooms-succ=Meeting room %s created successfully
|
73
|
-
flash.notice.save-rooms-succ=Meeting room %s modified successfully
|
74
|
-
flash.notice.disable-rooms-succ=Meeting room %s disabled successfully
|
75
|
-
flash.notice.disable-rooms-with-meetings=Meeting room %s disabled successfully, but %s meetings already scheduled, please inform the relevant staff
|
76
|
-
flash.notice.meeting-rooms.generate-pad-bind-key-succ=Pad binding code just regenerated, please enter the new binding code on the Pad
|
77
|
-
flash.warn.meeting-room-deleted-with-meetings =There are meeting arrangements in %s, please make sure not more meetings in %s before delete the meeting room.
|
78
|
-
flash.warn.meeting-room-reach-max-count=Reached maximum number of meeting rooms %s, can not add more rooms, please contact online customer service to purchase license if you need to manage more meeting rooms
|
79
|
-
|
80
|
-
# Validation
|
81
|
-
validate.meetingRoom.disableReason.require=Close reason required
|
82
|
-
validate.meetingRoom.disableReason.length=Reason for close, 50 words or less
|
83
|
-
|
84
|
-
|
85
|
-
# Other
|
86
|
-
meeting-rooms.bookingPermision=Booking Permissions
|
87
|
-
meeting-rooms.not-exists=Meeting room not exist
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# HTML page
|
2
|
-
meetingBooking.title.main=Book meeting
|
3
|
-
meetingBooking.title.booking-by-date=Book by date
|
4
|
-
meetingBooking.title.detail=Meeting details
|
5
|
-
meetingBooking.title.find-room-by-time=Find a meeting room at specified time
|
6
|
-
meetingBooking.title.find-time-by-room=Find a meeting time with specified room
|
7
|
-
|
8
|
-
|
9
|
-
meetingBooking.booking=Book
|
10
|
-
|
11
|
-
|
12
|
-
# Confirm the status
|
13
|
-
meeting.joinStatus.notMember=Non meeting participants can not set the engagement status
|
14
|
-
meeting.joinStatus.invalidStatus=Illegal participation status
|
data/translation/en/messages.en
DELETED
@@ -1,164 +0,0 @@
|
|
1
|
-
# You can specialize this file for each language.
|
2
|
-
# For example, for French create a messages.fr file
|
3
|
-
#
|
4
|
-
since.seconds = %s second%s ago
|
5
|
-
since.minutes = %s minute%s ago
|
6
|
-
since.hours = %s hour%s ago
|
7
|
-
since.days = %s day%s ago
|
8
|
-
since.months = %s month%s ago
|
9
|
-
since.years = %s year%s ago
|
10
|
-
since.format = MMM d, yyyy
|
11
|
-
|
12
|
-
# ======================= 表单验证定义 =============================
|
13
|
-
validation.required=Required
|
14
|
-
validation.minSize=Minimum size is %2$d
|
15
|
-
validation.maxSize=Maximum size is %2$d
|
16
|
-
validation.email=Invalid email address
|
17
|
-
validation.range=Not in the range %2$d through %3$d
|
18
|
-
validation.min=Cannot be lower than %2$d
|
19
|
-
validation.max=Cannot be greater than %2$d
|
20
|
-
validation.match=Must match %2$s
|
21
|
-
validation.isTrue=Must be checked
|
22
|
-
validation.equals=Must be equal to &{%2$s}
|
23
|
-
validation.invalid=Incorrect value
|
24
|
-
validation.future=Must be in the future
|
25
|
-
validation.after=Must be after %2$s
|
26
|
-
validation.past=Must be in the past
|
27
|
-
validation.before=Must be before %2$s
|
28
|
-
validation.object=Validation failed
|
29
|
-
validation.notFound=Object not found for id %2$s
|
30
|
-
validation.url=Not a valid URL
|
31
|
-
validation.phone=Not a valid phone
|
32
|
-
validation.ipv4=Not a valid IP address
|
33
|
-
validation.ipv6=Not a valid IP v6 address
|
34
|
-
validation.unique=Must be unique
|
35
|
-
|
36
|
-
#
|
37
|
-
play-paginate.prev=<
|
38
|
-
play-paginate.next=>
|
39
|
-
play-paginate.first=<<
|
40
|
-
play-paginate.last=>>
|
41
|
-
|
42
|
-
# 时间说明
|
43
|
-
option.hours.6=6:00 AM
|
44
|
-
option.hours.7=7:00 AM
|
45
|
-
option.hours.8=8:00 AM
|
46
|
-
option.hours.9=9:00 AM
|
47
|
-
option.hours.10=10:00 AM
|
48
|
-
option.hours.11=11:00 AM
|
49
|
-
option.hours.14=14:00 PM
|
50
|
-
option.hours.15=15:00 PM
|
51
|
-
option.hours.16=16:00 PM
|
52
|
-
option.hours.17=17:00 PM
|
53
|
-
option.hours.18=18:00 PM
|
54
|
-
option.hours.19=19:00 PM
|
55
|
-
option.hours.20=20:00 PM
|
56
|
-
option.hours.21=21:00 PM
|
57
|
-
option.hours.22=22:00 PM
|
58
|
-
option.hours.23=23:00 PM
|
59
|
-
option.hour=Hour
|
60
|
-
option.hours=Hours
|
61
|
-
option.minute=Minute
|
62
|
-
option.minutes=Minutes
|
63
|
-
option.day=Day
|
64
|
-
option.days=Days
|
65
|
-
option.unlimit=Unlimit
|
66
|
-
|
67
|
-
# 扩展专用
|
68
|
-
yesno.yes=Yes
|
69
|
-
yesno.no=No
|
70
|
-
option.undefine=Undefined
|
71
|
-
link.download=Download
|
72
|
-
|
73
|
-
# app
|
74
|
-
app.name=MeetingRoom Booking System
|
75
|
-
|
76
|
-
# manager界面元素
|
77
|
-
manager.form.saveAdd=Add
|
78
|
-
manager.form.saveEdit=Save
|
79
|
-
manager.form.cancel=Cancel
|
80
|
-
manager.form.back=Back
|
81
|
-
manager.form.print=Print
|
82
|
-
manager.form.saveModify=Save Modify
|
83
|
-
|
84
|
-
manager.list.action=Operate
|
85
|
-
manager.list.edit=Edit
|
86
|
-
manager.list.delete=Delete
|
87
|
-
manager.list.confirm-delete=Confirm delete %s?
|
88
|
-
manager.share.clear-selected-users=Clear Selected
|
89
|
-
manager.share.clear-selected-users.hint=Clear Selected Users
|
90
|
-
|
91
|
-
# 服务配置
|
92
|
-
customer.service-email=service@hyshi.net
|
93
|
-
|
94
|
-
# 频道
|
95
|
-
cmsChannel.TOUR=TOUR
|
96
|
-
cmsChannel.BLOG=BLOG
|
97
|
-
cmsChannel.NOTICE=NOTICE
|
98
|
-
cmsChannel.null=Uncategory
|
99
|
-
|
100
|
-
# 会议状态
|
101
|
-
meeting.status.OPEN=Open
|
102
|
-
meeting.status.LOCK=Lock
|
103
|
-
meeting.status.CANCEL=Canceled
|
104
|
-
|
105
|
-
# 会议重复类型
|
106
|
-
meeting.repeat.NONE=Meeting
|
107
|
-
meeting.repeat.WEEK=Repeat Meeting
|
108
|
-
|
109
|
-
# 性别
|
110
|
-
sex.M=Male
|
111
|
-
sex.F=Female
|
112
|
-
sex.null=Unknown
|
113
|
-
sex.U=Unknown
|
114
|
-
|
115
|
-
# 角色
|
116
|
-
roles.ADMIN=Admin
|
117
|
-
roles.MANAGER=Manager
|
118
|
-
roles.USER=Staff
|
119
|
-
roles.HR=HR
|
120
|
-
roles.FMY=Receptionist
|
121
|
-
roles.HYSASS=Meeting Asst
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
# ======================= 导航定义 =============================
|
126
|
-
nav.main=Home
|
127
|
-
nav.receptions=Reception
|
128
|
-
nav.meetings=Book Meeting
|
129
|
-
nav.view-meetings=Query Meeting
|
130
|
-
nav.hiring=Hiring
|
131
|
-
nav.hiring-plans=Hiring Plans
|
132
|
-
nav.recruits=Recruits
|
133
|
-
nav.reports=Reports
|
134
|
-
nav.reports.memberTimes=Member Times
|
135
|
-
nav.reports.ownerTimes=Owner Times
|
136
|
-
nav.reports.checkerTimes=Check-in Times
|
137
|
-
nav.reports.roomTimes=Meetingroom Times
|
138
|
-
nav.admin-company=Company Settings
|
139
|
-
nav.admin-meeting-rooms=Meeting Rooms
|
140
|
-
nav.admin-devices=Devices
|
141
|
-
nav.admin-depts=Departments
|
142
|
-
nav.admin-employees=Staff
|
143
|
-
nav.my-tags=My Contacts
|
144
|
-
nav.my-profile=My Profile
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
# Dept
|
149
|
-
dept.name=Dept Name
|
150
|
-
dept.noDeptName=No Dept Name.
|
151
|
-
dept.not-exists=The dept Not exists!
|
152
|
-
flash.warn.dept-deleted-with-users=The %s had %s members,please remove the members before delete the dept.
|
153
|
-
|
154
|
-
|
155
|
-
@include.article = ./_messages/en/article.properties
|
156
|
-
@include.meetingBooking = ./_messages/en/meetingBooking.properties
|
157
|
-
|
158
|
-
@include.meeting-rooms = ./_messages/en/meeting-rooms.properties
|
159
|
-
@include.office-areas = ./_messages/en/office-areas.properties
|
160
|
-
@include.company = ./_messages/en/company.properties
|
161
|
-
@include.orders = ./_messages/en/orders.properties
|
162
|
-
@include.visitor = ./_messages/en/visitor.properties
|
163
|
-
@include.devices = ./_messages/en/devices.properties
|
164
|
-
@include.tag = ./_messages/en/tag.properties
|
@@ -1,51 +0,0 @@
|
|
1
|
-
# Index page
|
2
|
-
office-areas.index.title=Office area management
|
3
|
-
office-areas.index.subtitle=Maintain office area
|
4
|
-
office-areas.index.tablabel=Office area
|
5
|
-
|
6
|
-
office-areas.operate.new =Add new office area
|
7
|
-
|
8
|
-
office-areas.visitSetting=Visitor settings
|
9
|
-
|
10
|
-
# Add page
|
11
|
-
office-areas.add.subtitle=Add office area
|
12
|
-
office-areas.add.exists-same=Office of the same name already exists
|
13
|
-
# edit page
|
14
|
-
office-areas.edit.subtitle=Modified: %s
|
15
|
-
|
16
|
-
# form
|
17
|
-
officeArea.name=Office area
|
18
|
-
officeArea.name.placeholder=Please enter name of the office area
|
19
|
-
officeArea.phone=Receptionist phone
|
20
|
-
officeArea.phone.placeholder=Please enter the office area corresponding to the receptionist corresponding to the phone (optional)
|
21
|
-
officeArea.remark=Remarks
|
22
|
-
officeArea.remark.placeholder=Office area notes (optional)
|
23
|
-
officeArea.roomCount=Number of meeting rooms
|
24
|
-
|
25
|
-
officeArea.address=Address
|
26
|
-
officeArea.address.placeholder=Please enter specified office area address (optional)
|
27
|
-
officeArea.address.hint=Send this address to visitors when sending an invitation
|
28
|
-
officeArea.address.hint-view-map =, make sure the map on the right shows the correct address
|
29
|
-
|
30
|
-
officeArea.trafficAdvice=Traffic advice
|
31
|
-
officeArea.trafficAdvice.placeholder=Please enter traffic advice (optional)
|
32
|
-
officeArea.trafficAdvice.hint=Send public transport information to visitors when sending an invitation
|
33
|
-
|
34
|
-
officeArea.wifiName=Guest WIFI SSID
|
35
|
-
officeArea.wifiName.placeholder=Please leave blank if you do not want to share WIFI with visitors
|
36
|
-
officeArea.wifiName.hint=Please enter WIFI SSID to share with visitors
|
37
|
-
officeArea.wifiPassword=WIFI password
|
38
|
-
officeArea.wifiPassword.placeholder=Please leave blank if you do not want to share WIFI with visitors
|
39
|
-
officeArea.wifiPassword.hint=Please enter WIFI password to share with visitors
|
40
|
-
|
41
|
-
officeArea.admins=Service director
|
42
|
-
officeArea.admins.placeholder=Meeting service director for the office area, support Chinese phonetic abbreviation
|
43
|
-
# officeArea.admins.hint=not set. Responsible for the coordination of the office of the office, the meeting approval; all the office area of the meeting will be copied to the office area service director
|
44
|
-
officeArea.admins.hint=Responsible for the coordination of meetings, can modify or cancel the meeting (optional)
|
45
|
-
|
46
|
-
# flash
|
47
|
-
office-areas.flash.update-succ=Office area saved successfully
|
48
|
-
|
49
|
-
# other
|
50
|
-
office-areas.all-areas=All areas
|
51
|
-
office-areas.default-name=Default
|
@@ -1,26 +0,0 @@
|
|
1
|
-
order.corp.name=Order company
|
2
|
-
order.orderNumber=Order number
|
3
|
-
order.remark=Order description
|
4
|
-
order.amount=Order amount
|
5
|
-
order.created.info=Order created
|
6
|
-
|
7
|
-
|
8
|
-
order.contact.info=Order Invoice & Delivery information
|
9
|
-
|
10
|
-
order.invoice.type=Invoice type
|
11
|
-
order.invoice.type.PLAIN=Ordinary invoice
|
12
|
-
order.invoice.type.VAT=VAT
|
13
|
-
order.invoice.type.NONE=No invoice required
|
14
|
-
order.invoice.type.MANUAL=Manual
|
15
|
-
|
16
|
-
|
17
|
-
corpContact.invoiceTitle=Invoice to
|
18
|
-
corpContact.invoiceSubject=Invoice content
|
19
|
-
corpContact.receiverName=Recipient name
|
20
|
-
corpContact.receiverPhone=Recipient phone number
|
21
|
-
corpContact.province=Province
|
22
|
-
corpContact.city=City
|
23
|
-
corpContact.district=District
|
24
|
-
corpContact.address=Recipient address
|
25
|
-
corpContact.postCode=Zip code
|
26
|
-
corpContact.address2=Administrative area
|