2016-06-21 73 views
0

我想基于当前文化的语言中是否有可用于特定资源的翻译来执行一些控制流逻辑。如何检查资源是否翻译为某种语言

我尝试使用ResourceManager.GetString()来查找我想要的文化中的资源,但是如果它没有被翻译,它会以默认语言返回资源 - 并且无法确定资源是否被翻译。

+1

为什么不直接检查默认(非翻译)语言?例如'bool isTranslated = ResourceManager.GetString(“something”,“es-es”)/ * translated */== ResourceManager.GetString(“something”,“en-us”)/ * NOT translation * /; –

+1

这是优雅的退化。如果翻译不可用,它会尽其所能。您永远无法拥有所有语言的完整翻译。 – buffjape

+0

@cFrozenDeath因为默认的语言翻译可能也是某种其他语言翻译的有效翻译,例如它们可能与en-uk和en-us等相同。 – Shaegorath

回答

0

您可以添加一个额外的资源字符串,在您的用户界面中不使用,但仅用于确定翻译是否可用。 例如,默认语言中的字符串内容可以是“默认”,并且在每个翻译中它可以被“翻译”。 然后,您可以检查您的代码字符串是否具有“默认”内容,并根据您的控制流逻辑。

+0

它可以工作,但需要大量的手动工作, – Shaegorath