i18n-processes 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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