2017-09-11 46 views
5

W mojej aplikacji wiele mojego ciągu tłumaczenia musi zawierać w nich nazwę użytkownika. Na przykład: Hello {{user_name}}! (nazwa użytkownika musi być częścią łańcucha translacji ponieważ pozycja nazwy w ciągu zależy od języka))Angular translate provider - Czy istnieje sposób na zastąpienie ogólnych zmiennych?

Sposób, aby ustawić atrybuty jest {{"TRANSLATE_ID" | translate:{user_name:myUserName}}}

Od {{user_name}} pojawia w więcej niż 100 ciągach tłumaczenia, nie chcę przesyłać parametru user_name tyle razy. Chciałbym mieć sposób na ustawienie tego parametru tylko jeden.

Nie mogę zastąpić ciągu {{user_name}} w konfiguracji, ponieważ nazwa użytkownika jest ustawiona asynchronicznie (pobrana z serwera) i nie jest dostępna, gdy translateProvider ustawia ciągi.

Dzięki

Odpowiedz

0

AngularTranslate pozwala tłumaczyć tagi z samego html lub wewnątrz sterownika poprzez obietnicę. Wierzę, że eleganckim sposobem zrobienia tego, co chcesz, jest stworzenie metody/funkcji w twoim kontrolerze, która obsługuje tłumaczenie w sposób jaki chcesz, a następnie wywołanie tej metody/funkcji w twoim html podając nazwę użytkownika jako parametr.

Adres nazwy użytkownika w plikach tłumaczeniowych JSON jako "USERNAME", na przykład "Hello, USERNAME!", Wykonaj tłumaczenie w metodzie utworzonej w kontrolerze za pomocą AngularTranslate, a następnie wykonaj operację zamiany ciągów znaków, zmieniając słowo USERNAME dla parametru metody (rzeczywista nazwa użytkownika) i użyj tego ciągu jako wartości zwracanej przez metodę, która zostanie wywołana w twoim html.

Mam nadzieję, że to pomoże.