Skip to content
This repository has been archived by the owner on Jun 13, 2024. It is now read-only.

Fallback 'C' locale does not work #459

Closed
wmww opened this issue Mar 17, 2021 · 3 comments
Closed

Fallback 'C' locale does not work #459

wmww opened this issue Mar 17, 2021 · 3 comments
Labels
bug Something isn't working

Comments

@wmww
Copy link
Contributor

wmww commented Mar 17, 2021

  • OS: Linux (Ubuntu, Ubuntu core and Arch)
  • Version: gallery master (at time of posting) built against Flutter master (at time of posting).

On Linux, when the LC_ALL environment variable is set to something unexpected it falls back to locale 'C'

wmww:~$ LC_ALL='foo' flutter-gallery 
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (foo)

(flutter_gallery:108953): Gtk-WARNING **: 12:06:25.655: Locale not supported by C library.
	Using the fallback 'C' locale.

However, it then prints a long stack trace:

Stack trace
flutter: NoSuchMethodError: The getter 'shrineDescription' was called on null.
flutter: Receiver: null
flutter: Tried calling: shrineDescription
flutter: #0      studies (package:gallery/data/demos.dart:125)
flutter: #1      HomePage.build (package:gallery/pages/home.dart:44)
flutter: #2      StatelessElement.build (package:flutter/src/widgets/framework.dart:4646)
flutter: #3      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4572)
flutter: #4      Element.rebuild (package:flutter/src/widgets/framework.dart:4265)
flutter: #5      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4551)
flutter: #6      ComponentElement.mount (package:flutter/src/widgets/framework.dart:4546)
flutter: #7      Element.inflateWidget (package:flutter/src/widgets/framework.dart:3608)
flutter: #8      Element.updateChild (package:flutter/src/widgets/framework.dart:3363)
flutter: #9      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4597)
flutter: #10     Element.rebuild (package:flutter/src/widgets/framework.dart:4265)
flutter: #11     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4551)
flutter: #12     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4546)
flutter: #13     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3608)
flutter: #14     Element.updateChild (package:flutter/src/widgets/framework.dart:3363)
flutter: #15     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4597)
flutter: #16     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4744)
flutter: #17     Element.rebuild (package:flutter/src/widgets/framework.dart:4265)
flutter: #18     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4551)
flutter: #19     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
flutter: #20     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4546)
flutter: #21     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3608)
flutter: #22     Element.updateChild (package:flutter/src/widgets/framework.dart:3363)
flutter: #23     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4597)
flutter: #24     Element.rebuild (package:flutter/src/widgets/framework.dart:4265)
flutter: #25     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4551)
flutter: #26     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4546)
flutter: #27     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3608)
flutter: #28     Element.updateChild (package:flutter/src/widgets/framework.dart:3363)
flutter: #29     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4597)
flutter: #30     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4744)
flutter: #31     Element.rebuild (package:flutter/src/widgets/framework.dart:4265)
flutter: #32     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4551)
flutter: #33     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
flutter: #34     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4546)
flutter: #35     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3608)
flutter: #36     Element.updateChild (package:flutter/src/widgets/framework.dart:3363)
flutter: #37     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6055)
flutter: #38     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3608)
flutter: #39     Element.updateChild (package:flutter/src/widgets/framework.dart:3363)
flutter: #40     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4597)
flutter: #41     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4744)
flutter: #42     Element.rebuild (package:flutter/src/widgets/framework.dart:4265)
flutter: #43     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4551)
flutter: #44     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
flutter: #45     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4546)
flutter: #46     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3608)
flutter: #47     Element.updateChild (package:flutter/src/widgets/framework.dart:3363)
flutter: #48     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6055)
flutter: #49     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3608)
flutter: #50     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6175)
flutter: #51     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3608)
flutter: #52     Element.updateChild (package:flutter/src/widgets/framework.dart:3363)
flutter: #53     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6055)
flutter: #54     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3608)
flutter: #55     Element.updateChild (package:flutter/src/widgets/framework.dart:3363)
flutter: #56     _LayoutBuilderElement._layout.<anonymous closure> (package:flutter/src/widgets/layout_builder.dart:136)
flutter: #57     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2536)
flutter: #58     _LayoutBuilderElement._layout (package:flutter/src/widgets/layout_builder.dart:118)
flutter: #59     RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1893)
flutter: #60     BuildOwner.lockState (package:flutter/src/widgets/framework.dart:2474)
flutter: #61     RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1893)
flutter: #62     RenderConstrainedLayoutBuilder.rebuildIfNecessary (package:flutter/src/widgets/layout_builder.dart:225)
flutter: #63     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:360)
flutter: #64     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #65     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:117)
flutter: #66     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1370)
flutter: #67     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #68     RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:226)
flutter: #69     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #70     RenderStack.layoutPositionedChild (package:flutter/src/rendering/stack.dart:497)
flutter: #71     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:610)
flutter: #72     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #73     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:362)
flutter: #74     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #75     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:117)
flutter: #76     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #77     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:117)
flutter: #78     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #79     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:117)
flutter: #80     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #81     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:117)
flutter: #82     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #83     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:117)
flutter: #84     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #85     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:117)
flutter: #86     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #87     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:117)
flutter: #88     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #89     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:117)
flutter: #90     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3361)
flutter: #91     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #92     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:117)
flutter: #93     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #94     _RenderTheatre.performLayout (package:flutter/src/widgets/overlay.dart:743)
flutter: #95     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #96     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:117)
flutter: #97     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: #98     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:117)
flutter: #99     RenderObject.layout (package:flutter/src/rendering/object.dart:1783)
flutter: Another exception was thrown: Instance of 'DiagnosticsProperty<void>'
flutter: Another exception was thrown: Instance of 'DiagnosticsProperty<void>'

...and fails to draw much of anything:

a

Setting LC_ALL=C does not show the initial warning but does show the stack trace and the apps comes up with the same missing content. I've both building a snap and running normally. Note that when running a build outside of a snap I also get this message:

flutter: Observatory listening on http://127.0.0.1:46837/x3c7L1b7bIs=/
flutter: ════════
flutter: Warning: This application's locale, C, is not supported by all of its
flutter: localization delegates.
flutter: > A GalleryLocalizations delegate that supports the C locale was not found.
flutter: > A MaterialLocalizations delegate that supports the C locale was not found.
flutter: See https://flutter.dev/tutorials/internationalization/ for more
flutter: information about configuring an app's locale, supportedLocales,
flutter: and localizationsDelegates parameters.
flutter: ════════
flutter: 
@wmww wmww added the bug Something isn't working label Mar 17, 2021
@HansMuller
Copy link
Contributor

CC @shihaohong

@shihaohong
Copy link

Interesting -- I'm not very familiar with Linux development, but from really quickly looking StackExchange, it seems like LC_ALL=C basically sets up all applications to use the default locale.

However, if that's the case, then it seems like the Flutter framework is doing the wrong thing and passing up that constant C instead of the supposed default locale. If that's the case, would it be possible to pass up the value of what the default locale is instead of just C into the framework?

@guidezpl
Copy link
Member

guidezpl commented Dec 9, 2021

Should be fixed by #556, please re-open if not

@guidezpl guidezpl closed this as completed Dec 9, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants