File tree 1 file changed +12
-5
lines changed
1 file changed +12
-5
lines changed Original file line number Diff line number Diff line change @@ -256,7 +256,7 @@ impl L10nManager {
256
256
& ' args self ,
257
257
key : & str ,
258
258
args : impl Into < Option < & ' args FluentArgs < ' args > > > ,
259
- ) -> Option < ArcStr > {
259
+ ) -> Option < Cow < str > > {
260
260
let args = args. into ( ) ;
261
261
let value = match self
262
262
. current_bundle
@@ -274,7 +274,7 @@ impl L10nManager {
274
274
warn ! ( "localization error {:?}" , err) ;
275
275
}
276
276
277
- Some ( result. into ( ) )
277
+ Some ( result)
278
278
}
279
279
//TODO: handle locale change
280
280
}
@@ -353,9 +353,16 @@ impl<T> LocalizedString<T> {
353
353
354
354
self . resolved_lang = Some ( manager. current_locale . clone ( ) ) ;
355
355
let next = manager. localize ( self . key , args. as_ref ( ) ) ;
356
- let result = next != self . resolved ;
357
- self . resolved = next;
358
- result
356
+ {
357
+ let next = next. as_ref ( ) . map ( |cow| cow. as_ref ( ) ) ;
358
+ let prev = self . resolved . as_ref ( ) . map ( |arc| arc. as_ref ( ) ) ;
359
+ if next == prev {
360
+ // still the same value, no need to update the field
361
+ return false ;
362
+ }
363
+ }
364
+ self . resolved = next. map ( |cow| cow. into ( ) ) ;
365
+ true
359
366
} else {
360
367
false
361
368
}
You can’t perform that action at this time.
0 commit comments