@@ -35,6 +35,13 @@ const FALLBACKER: LocaleFallbackerWithConfig<'static> = LocaleFallbacker::new().
35
35
config
36
36
} ) ;
37
37
38
+ /// Construct a [`DataRequest`] for the given locale
39
+ pub fn data_request_for_locale ( locale : & DataLocale ) -> DataRequest < ' _ > {
40
+ let mut metadata = DataRequestMetadata :: default ( ) ;
41
+ metadata. silent = true ;
42
+ DataRequest { locale, metadata }
43
+ }
44
+
38
45
/// Error type for loading translations
39
46
#[ derive( Debug , Error ) ]
40
47
pub enum LoadError {
@@ -200,19 +207,16 @@ impl Translator {
200
207
/// Returns an error if the requested locale is not found, or if the
201
208
/// requested key is not found.
202
209
pub fn message ( & self , locale : & DataLocale , key : & str ) -> Result < & Message , DataError > {
203
- let request = DataRequest {
204
- locale,
205
- metadata : DataRequestMetadata :: default ( ) ,
206
- } ;
210
+ let request = data_request_for_locale ( locale) ;
207
211
208
212
let tree = self
209
213
. translations
210
214
. get ( locale)
211
- . ok_or ( DataErrorKind :: MissingLocale . with_req ( DATA_KEY , request) ) ?;
215
+ . ok_or_else ( || DataErrorKind :: MissingLocale . with_req ( DATA_KEY , request) ) ?;
212
216
213
217
let message = tree
214
218
. message ( key)
215
- . ok_or ( DataErrorKind :: MissingDataKey . with_req ( DATA_KEY , request) ) ?;
219
+ . ok_or_else ( || DataErrorKind :: MissingDataKey . with_req ( DATA_KEY , request) ) ?;
216
220
217
221
Ok ( message)
218
222
}
@@ -273,19 +277,16 @@ impl Translator {
273
277
let plurals = PluralRules :: try_new_cardinal_unstable ( & self . plural_provider , locale) ?;
274
278
let category = plurals. category_for ( count) ;
275
279
276
- let request = DataRequest {
277
- locale,
278
- metadata : DataRequestMetadata :: default ( ) ,
279
- } ;
280
+ let request = data_request_for_locale ( locale) ;
280
281
281
282
let tree = self
282
283
. translations
283
284
. get ( locale)
284
- . ok_or ( DataErrorKind :: MissingLocale . with_req ( DATA_KEY , request) ) ?;
285
+ . ok_or_else ( || DataErrorKind :: MissingLocale . with_req ( DATA_KEY , request) ) ?;
285
286
286
287
let message = tree
287
288
. pluralize ( key, category)
288
- . ok_or ( DataErrorKind :: MissingDataKey . with_req ( DATA_KEY , request) ) ?;
289
+ . ok_or_else ( || DataErrorKind :: MissingDataKey . with_req ( DATA_KEY , request) ) ?;
289
290
290
291
Ok ( message)
291
292
}
0 commit comments