I think if you identify the language first then put your language based conditions in you will have better luck.
When making reference data local you usually have a key value to Id it regardless of the language. perhaps you can base the condition on the key value rather than the local values as you will struggle supporting it if you need to add more languages later.
So something like this?
If((Lang='en'),if(Source='Forestry' and (Geography<>'Brazil' xor ForestryScenario='Globiom FC'),green(), red()),
if(Lang='ch',IF(Source='森林业' and (Geography<>'巴西' xor ForestryScenario='Globiom FC'),green(), red())),
IF(Source='Silvicultura' and (Geography<>'Brasil' xor ForestryScenario='Globiom FC'),green(), red()))
Do you mind telling us the source of this data? If it;s coming from an ERP/CRM of some sort, then there should be a catalog/dictionary available to you that you can pull down. If you are making this yallselves, then I might suggest putting the data in a Dictionary type table, and then going from there.
Using a dictionary, it would allow you to pick a Base Language, and you could write your scripts according to that. Better yet, you could create Codes for all your dictionary entries and then use that, for instance
if((Source='Forestry' OR '森林业' OR 'Silvicultura') and ((Geography<>'Brazil' OR 'Brasil' OR '巴西') xor ForestryScenario='Globiom FC'),green(), red())
if(( SourceBaseId='FORESTRY_CODE' ) and ((Geography<>'BRAZIL_CODE' ) xor ForestryScenario='Globiom FC'),green(), red())
Your dictionary table would look something like this
DictCode, => FORESTRY_CODE, BRAZIL_CODE
BaseLanguageText, => Brazil
ChineseText, => 巴西
EnglishText, => Brazil
PortugueseText => Brasil
And then you would left join all the fields where you needed the translation. The drawback is that you would have to rename your Dict fields to avoid inadvertent keys. Also, this could require a lot of work, and might be unworkable as I've seen one Catalog out of hundreds have over 5000 values spread over 17 languages.