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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8e041c7560a1cba5ab1d081f70e8d02f6e59219
4
- data.tar.gz: e42edce588f26017cd8d82cf1d0687e1304708d3
3
+ metadata.gz: a7297c979ac39120028d2a3c0950933d97e17ddc
4
+ data.tar.gz: 80d0928db663600f639ac9cd0324461b7d64909d
5
5
  SHA512:
6
- metadata.gz: e101298c0de870861bf915907ce5b124888de1b6d8a5b642b0e90c0b4dc38d7f1c3a26c28a2421aca3113111a436e9f614f767f5346d02d5394e31380bc89a35
7
- data.tar.gz: c368d78eeef4ccb6e36bb988460c12abf7f0f9e21aa04270e195e28d39b0823ebb6cd08031c7fc64be14e95502ca049aa63f90543a1efac169951b8a9876a5ed
6
+ metadata.gz: 29b142527dd9286e6e214bfcb5b35ea1dcc02aec6c3805f273ce75e77d1dd21b3359d341aa5a50c6dbd511dba6e94fc265e2caa846e876593e1fb908fed886c5
7
+ data.tar.gz: 65effde8cae2368b77044d43af5b30d225174962dd247607edb4826d3899c2e19a6c27737de6c4b1793f6f68b572618b8950c70baa10c74bb046c3a312951782
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- i18n-processes (0.1.2)
4
+ i18n-processes (0.1.3)
5
5
  activesupport (>= 4.0.2)
6
6
  ast (>= 2.1.0)
7
7
  easy_translate (>= 0.5.1)
data/README.md CHANGED
@@ -20,18 +20,31 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- - 复制默认的config文件i18n-processes.yml,添加到你自己的config目录下,设置三个路径:
24
- ```
25
- $ cp $(i18n-processes gem-path)/config/i18n-processes.yml config/
26
- ```
27
- - source: base_locale zh-CN原始文件存放路径
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`, 会提取出所有的keys
38
+ - 运行:`i18n-processes preprocessing`
39
+ 处理原文件,提取出所有的keys
33
40
  - 运行:`i18n-processes missing`
34
- - 在你设置的翻译文件存放路径下,比如translated/,会生成与原文件同结构的文件,内含对应的翻译文件
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}").green
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('preprocess origin data files into primitive files successfully').green if locale == base_locale
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
- previous_file = "#{path}pre_#{locale}"
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
@@ -4,9 +4,9 @@ module I18n::Processes:: Path
4
4
 
5
5
  def origin_files(locale)
6
6
  if source_path == []
7
- log_stderr "please check the path for origin baselocale files"
7
+ fail "please check the path for origin baselocale files"
8
8
  elsif translation_path == []
9
- log_stderr "please check the path for translation files"
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").green
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)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module I18n
4
4
  module Processes
5
- VERSION = '0.1.2'
5
+ VERSION = '0.1.3'
6
6
  end
7
7
  end
@@ -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
 
@@ -1,5 +1,480 @@
1
- # 说明:以#开头的行,表示key对应的中文翻译
2
- # 下一行'='左边为key,'='右边需要填上对应的en翻译:
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.2
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
@@ -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
@@ -1,2 +0,0 @@
1
- tag.name=Name
2
- tag.userIds=Contacts
@@ -1,4 +0,0 @@
1
- visitorMeeting.visitorName=Name
2
- visitorMeeting.visitorEmail=Email
3
- visitorMeeting.visitorMobile=Phone
4
- visitorMeeting.joinStatus=Confirm status