0

I use twig tweak for rendering username on site this way:

username.html.twig:

{#
/**
 * @file
 * Theme override for displaying a username.
 *
 * Available variables:
 * - account: The full account information for the user.
 * - uid: The user ID, or zero if not a user. As used in anonymous comments.
 * - name: The user's name, sanitized, and optionally truncated.
 * - name_raw: The user's name, un-truncated.
 * - truncated: Whether the user's name was truncated.
 * - extra: Additional text to append to the user's name, sanitized.
 * - profile_access: Whether the current user has permission to access this
     users profile page.
 * - link_path: The path or URL of the user's profile page, home page,
 *   or other desired page to link to for more information about the user.
 * - homepage: (optional) The home page of the account, only set for non users.
 * - link_options: Options to set on the \Drupal\Core\Url object if linking the
 *   user's name to the user's page.
 * - attributes: HTML attributes for the containing element.
 *
 * @see template_preprocess_username()
 */
#}    
{% if link_path -%}
  <a{{ attributes }}>{{ drupal_field('field_name', 'user', uid) }}{{ extra }}</a>
{%- else -%}
  <span{{ attributes }}>{{ drupal_field('field_name', 'user', uid) }}{{ extra }}</span>
{%- endif -%}

But this doesn't work with translation. How to get translated field?

4k4 answer this way:

{{ drupal_field('field_name', 'user', uid, user.langcode.value) }}

But I don't need language from session/url, not from user settings

2
  • 1
    Report that as a bug in that module. I don't really see why you would need that kind of template, you have account available to use which is the user entity. You can also use api.drupal.org/api/drupal/core%21modules%21user%21user.api.php/… to alter the name anywhere that getDisplayName() is used, that will affect more places, including those that do not use the username template, for example because it is not in a HTML context. To get the translated user entity, you can use the same as I explained in drupal.stackexchange.com/a/255843/31
    – Berdir
    Feb 20, 2018 at 0:31
  • @berdir is it possible to retrieve current language form an entity?
    – ya.teck
    Feb 20, 2018 at 19:21

2 Answers 2

1

Try the language parameter:

{{ drupal_field('field_name', 'user', uid, user.langcode.value) }}

This was added to drupal_field() in this issue Support drupal_field translatability.

For this to work the user entity needs to be available in your template.

1
  • This doesn't work. I need language from current page (session), not from user settings
    – Crantisz
    Feb 20, 2018 at 19:45
0

tried with: {{ drupal_field('field_name', 'user', uid) | transliterate }} ?

1
  • This doesn't work.
    – Crantisz
    Feb 20, 2018 at 19:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.