存在intl
包以本地化flutter应用程序,但Intl.message
仅返回String
如何进行丰富的内容本地化?
Hello $name!
,并且只将$name
加粗,考虑到hello和$name的顺序在不同的语言中可以不同I read terms of services and accepted it
和仅链接terms of services
部分in [TEXT_INPUT] days
,[TEXT_INPUT]在[TEXT_INPUT]
之前和之后各有一个文本,但在某些语言中没有两个文本,只有一个文本在[TEXT_INPUT]
之前或之后,或者days
在[TEXT_INPUT]
之前,in
在[TEXT_INPUT]
之后
3条答案
按热度按时间qjp7pelc1#
看看styled_text包,你可以从格式中单独指定文本(内容),这允许你使用标准的i18n方法。
文本格式被指定为 * 标签 *,你可以全局定义(例如在资源类中),然后在任何地方使用。对我来说听起来是一个很好的解决方案。
示例(来自自述文件):
将显示如下:
测试:粗体文本。
如果使用i18n软件包和资源类示例
R
作为标记,则可能如下所示:请记住,在翻译过程中需要保留标记。
bksxznpy2#
slang包具有内置的富文本支持。
它看起来像这样:
aurhwmvo3#
这里有一个例子,说明如何将变量注入到翻译中。
这将生成一个函数
hello_name
,让您传递name
没有样式支持,但如果你需要它,那么就不要像上面的例子一样使用
placeholders
,让你的文本单独使用RichText
,你指定文本的哪些部分需要什么样式。你不需要担心方向性,因为它会根据你的本地处理。