# Custom Field Display Names

**URL:** <https://the.fmsoup.org/t/custom-field-display-names/5654>\
**Category:** Questions\
**Tags:** fields\
**Created:** [August 17, 2026, 6:11pm UTC](https://the.fmsoup.org/t/custom-field-display-names/5654 "2026-08-17T18:11:03Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![bdbd](https://yyz2.discourse-cdn.com/flex030/user_avatar/the.fmsoup.org/bdbd/32/620_2.png) [@bdbd](https://the.fmsoup.org/u/bdbd)\
**Post date:** [August 17, 2026, 6:11pm UTC](https://the.fmsoup.org/t/custom-field-display-names/5654/1 "2026-08-17T18:11:03Z")

</div>

Has anyone figured out how to manage multi-lingual custom field display names? I can only get them to work clunkily on layouts.

---

<div class="post-metadata">

**Author:** ![Bertrand](https://yyz2.discourse-cdn.com/flex030/user_avatar/the.fmsoup.org/bertrand/32/185_2.png) [@Bertrand](https://the.fmsoup.org/u/Bertrand)\
**Post date:** [August 17, 2026, 7:50pm UTC](https://the.fmsoup.org/t/custom-field-display-names/5654/2 "2026-08-17T19:50:33Z")

</div>

Hello bdbd,

To manage multiple languages, I created a global table named “Label” with a multi-valued field for the number of labels needed, also named ‘Label’; each label will therefore be in the form “Label::label[n]”. I also created another table named “LanguageLabel” containing as many records as languages and a key which value is the language index each with a multi-valued field for the number of labels needed. To change the language, simply update the multivalued field in the “Label” table with the language number record from the “LanguageLabel” table.  
I hope that was clear.

---

<div class="post-metadata">

**Author:** ![Malcolm](https://yyz2.discourse-cdn.com/flex030/user_avatar/the.fmsoup.org/malcolm/32/196_2.png) [@Malcolm](https://the.fmsoup.org/u/Malcolm)\
**Post date:** [August 17, 2026, 8:42pm UTC](https://the.fmsoup.org/t/custom-field-display-names/5654/3 "2026-08-17T20:42:03Z")

</div>

A similar technique to @bertrand is used by @nicklightbody in his work. If you download his performance demo file you'll see the construction there.

---

<div class="post-metadata">

**Author:** ![bdbd](https://yyz2.discourse-cdn.com/flex030/user_avatar/the.fmsoup.org/bdbd/32/620_2.png) [@bdbd](https://the.fmsoup.org/u/bdbd)\
**Post date:** [August 17, 2026, 9:26pm UTC](https://the.fmsoup.org/t/custom-field-display-names/5654/4 "2026-08-17T21:26:17Z")

</div>

Sorry but no!

Language tables are an old construct. I am familiar with many variations of this construct. I am looking for non-data approaches that can work with the new FileMaker 26 custom field display names feature.

---

<div class="post-metadata">

**Author:** ![karimhanafi](https://avatars.discourse-cdn.com/v4/letter/k/9e8a1a/32.png) [@karimhanafi](https://the.fmsoup.org/u/karimhanafi)\
**Post date:** [August 17, 2026, 10:14pm UTC](https://the.fmsoup.org/t/custom-field-display-names/5654/5 "2026-08-17T22:14:59Z")

</div>

Not sure if this is a good option performance-wise, as this approach would require JSON functions for display purposes. I would probably benchmark it before using it extensively. But you can simply add key/values to the field display name object like this: "label.en":"My label", "[label.fr](http://label.fr)":"Mon étiquette". On the layout, you would have a layout calc set to: JSONGetElement ( FieldDisplayNames ( Get ( FileName ) ; GetFieldName ( myField ) ) ; "label." & language\_code ). Where language\_code is whatever represents current language in your session (global field, global variable, persistent value, etc).

Please note that this is a proposed approach, not something that I tested.

---

<div class="post-metadata">

**Author:** ![Malcolm](https://yyz2.discourse-cdn.com/flex030/user_avatar/the.fmsoup.org/malcolm/32/196_2.png) [@Malcolm](https://the.fmsoup.org/u/Malcolm)\
**Post date:** [August 18, 2026, 7:09pm UTC](https://the.fmsoup.org/t/custom-field-display-names/5654/6 "2026-08-18T19:09:51Z")

</div>

I’ve only used them as place holders which are a simple replacement for the field name.

Managing several languages might need tooling/processes outside the UI.

---

<div class="post-metadata">

**Author:** ![bdbd](https://yyz2.discourse-cdn.com/flex030/user_avatar/the.fmsoup.org/bdbd/32/620_2.png) [@bdbd](https://the.fmsoup.org/u/bdbd)\
**Post date:** [August 19, 2026, 3:55pm UTC](https://the.fmsoup.org/t/custom-field-display-names/5654/7 "2026-08-19T15:55:45Z")

</div>

Thanks to everyone for your suggestions. Shoutout to @Bobino for the solution I chose to implement.

The "Customize field display names" option in the "Advanced Options" in field definitions expects a calculation that results in a JSON text. The JSON structure is a simple list of JSONString values. Keys can be anything, though those starting with "fm\_" are reserved and serve specific functions within FileMaker (see [FileMaker's documentation](https://help.claris.com/en/pro-help/content/advanced-field-options.html) for more information).

The implementation I chose was to nestle multiple JSON definitions in a case statement, where each test results in selecting a locale-specific JSON. Example below:

```auto
Case (
  getLocaleCustomFunction = "fr"; // French
  JSONSetElement (""; "fm_common"; "Valeur francophone"; JSONString);
  
  // Default is en (English) if getLocaleCustomFunction is empty or en.
  JSONSetElement (""; "fm_common"; "English Value"; JSONString)
)

```

I opted to use a custom function to obtain the locale — more customizable that way.

---

<div class="post-metadata">

**Author:** ![agir](https://yyz2.discourse-cdn.com/flex030/user_avatar/the.fmsoup.org/agir/32/3505_2.png) [@agir](https://the.fmsoup.org/u/agir)\
**Post date:** [August 19, 2026, 9:04pm UTC](https://the.fmsoup.org/t/custom-field-display-names/5654/8 "2026-08-19T21:04:14Z")

</div>

I played a little devil's advocate. [https://fmdojo.com/shared-chat/a68fd5c45b296add48fbbd2c1851d9cb](https://fmdojo.com/shared-chat/a68fd5c45b296add48fbbd2c1851d9cb)

---

<div class="post-metadata">

**Author:** ![jwilling](https://yyz2.discourse-cdn.com/flex030/user_avatar/the.fmsoup.org/jwilling/32/256_2.png) [@jwilling](https://the.fmsoup.org/u/jwilling)\
**Post date:** [August 21, 2026, 10:54pm UTC](https://the.fmsoup.org/t/custom-field-display-names/5654/9 "2026-08-21T22:54:28Z")

</div>

`FieldDisplayNames()` really is a great new feature. So flexible because it's a calculation

---

<div class="post-metadata">

**Author:** ![jwilling](https://yyz2.discourse-cdn.com/flex030/user_avatar/the.fmsoup.org/jwilling/32/256_2.png) [@jwilling](https://the.fmsoup.org/u/jwilling)\
**Post date:** [August 21, 2026, 11:41pm UTC](https://the.fmsoup.org/t/custom-field-display-names/5654/10 "2026-08-21T23:41:36Z")

</div>

I do wish that there was a better way to display custom labels on layouts though. Currently it's a button bar or layout calculation (but beware those don't update if you change field names) with this calc (or a CF)

Ugh:

`JSONGetElement ( FieldDisplayNames ( "" ; GetFieldName ( MyTable::myField ) ) ; "fm_common" )`
