如何在visualforce页面上本地化选择选项

时间:2013-02-20 22:35:34

标签: localization salesforce visualforce

我正在尝试在Visual Force页面上本地化selectOptions。

这是.class代码段:

List<SelectOption> options = new List<SelectOption>();
List<MyOption__c> dropDownValues = [SELECT Id, Display_Label_Name__c FROM MyOption__c];
for (MyOption__c val : dropDownValues) {
    // Display_Label_Name__c field is the label from *.labels that needs to be translated
    options.add(new SelectOption(val.Id, val.Display_Label_Name__c));
}

以下是.page代码段:

<apex:selectList value="{!myVal}">
    <apex:selectOptions value="{!options}"/>
</apex:selectList>

现在,下拉列表显示Display_Label_Name__c详细信息。我试图看看如何从.labels文件中显示翻译版本。可能吗?如果没有,那有什么作用?

感谢您的回复!

1 个答案:

答案 0 :(得分:0)

页面文字的所有本地化都可以使用Custom Labels完成。

  1. 使用您需要的语言启用翻译工作台。
  2. 为页面上的所有可见文字创建标签。
  3. 用标签替换页面文字。
  4. 添加translation for each label
  5. 将您的个人资料langauge更改为test。
  6. 但是对于您的情况,您从自定义对象中提取选择选项文本。如果预计选择列表的值不会频繁更改,每周不到一次,那么我将更改为使用自定义标签。

    否则,您将失去Salesforce自动语言选择的价值,并且必须自己实施。

    我建议扩展自定义对象MyOption__c以包含所有受支持语言的列。您可以使用if / else块或dynamic apex来选择选择选项文本。

    使用Dynamic Apex的示例

    string language = ParseForSupportedLangauges(UserInfo.getLanguage()); // includes __c
    
    list<sobject> dropDownValues = Database.query('SELECT Id, '+language+' FROM MyOption__c');
    
    for (sobject val : dropDownValues) {
        options.add(new SelectOption(val.get('Id'), val.get(language)));
    }
    

    ParseForSupportedLangauges()将是一种自定义方法,用于检查支持的语言并在必要时分配默认值。

    修改

    原来有一个解决方案:在你需要它之​​前不要找东西,对吗?

    在Spring '12中引入的是动态选择标签来显示suing数组语法的能力。此外,还添加了从控制器创建visualforce组件的功能,但使用数组语法就足以解决您的问题。此方法允许您使用MyOption__c的查询结果选择所需的标签。

    在visualforce中使用repeat来循环查询结果

    <apex:repeat value="{!displayResultsValues}" var="labelName">
    <apex:outputText value="{!$Label[labelName]}"/>
    </apex:repeat>
    

    Here is a good article to show the usage and syntax.